论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
查看:2492回复:6
顶底背离
注册时间2005-11-11
请高手帮忙-----交易程序编译不通过
楼主发表于:2006-05-02 07:24只看该作者倒序浏览
1楼 电梯直达
电梯直达
下面是我自己编的利用均线突破的交易程序, COMPILE 后,显示 '\end_of_program' - unbalanced left parenthesis 括号不配对 感觉问题是出在 //---Check for TralingStop---- 的那一段CODE 但我自己检查了好久, 也没法查出来, 只能请老师来帮我查错了, 先谢谢! //+------------------------------------------------------------------+ //| MA Trend System.mq4 | //| | //| 突破长短期均线,趋势追随 | //+------------------------------------------------------------------+ #define MAGICMA 20050610 extern double Lots = 0.1; extern double TrailingStop = 70; extern double MaximumRisk = 0.02; extern double DecreaseFactor = 3; extern double MovingShort = 60; extern double MovingTrend = 240; extern double MovingShortMode = 0; //0=sma, 1=ema, 2=smma, 3=lwma extern double MovingTrendMode = 0; //0=sma, 1=ema, 2=smma, 3=lwma double MAshort; double MAtrend; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //---- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { int res; //---- go trading only for first tiks of new bar if(Volume[0]>1) return; //---- get Moving Average MAshort=iMA(NULL,0,MovingShort,0,MovingShortMode,PRICE_CLOSE,0); MAtrend=iMA(NULL,0,MovingTrend,0,MovingTrendMode,PRICE_CLOSE,0); //---- sell conditions if(Open[1]>MAshort && Close[1]MAshort && MAshort>MAtrend) { res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(Point*TrailingStop),0,"",MAGICMA,0,Red); return; } //---- } //+------------------------------------------------------------------+ //| Check for TralingStop conditions | //+------------------------------------------------------------------+ void CheckForClose() { //---- go trading only for first tiks of new bar if(Volume[0]>1) return; //---- for(int i=0;i(Point*TrailingStop)) { if(OrderStopLoss()< (Bid-Point*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,0,0,Green); return; } } } if(OrderType()==OP_SELL) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,0,0,Red); return; } } } } } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //---- }
TK29帖子1楼右侧xm竖版广告90-240
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
hawkie
注册时间2004-06-21
发表于:2006-05-02 08:12只看该作者
2楼
你代码里面有93个(,但是只有92个),问题就在这里 if((OrderStopLoss()>(Ask+Point*TrailingStop)) 这里面多了一个(,去了就行了
顶底背离
注册时间2005-11-11
楼主发表于:2006-05-02 14:56只看该作者
3楼
emoji-imageemoji-imageemoji-imageemoji-imageemoji-image 昨晚花了一晚也没找出原因。 高手一点俺就明白了! :handshake:handshake:handshake:handshake 在问个菜鸟问题, 括号配对是手工数的, 还是有工具可以自动查找的? [ 本帖最后由 顶底背离 于 2006-5-2 22:58 编辑 ]
个性签名

韬客社区www.talkfx.co

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
palerain
注册时间2003-07-19
hawkie
注册时间2004-06-21
发表于:2006-05-02 15:34只看该作者
5楼
那一行最开始两个(,随便去掉一个就行了
fx007
注册时间2004-03-27
发表于:2006-05-02 16:58只看该作者
6楼
hawkie 高手,羡慕
半边天
注册时间2005-05-10
发表于:2006-06-10 13:38只看该作者
7楼
原帖由 顶底背离 于 2006-5-2 15:24 发表 下面是我自己编的利用均线突破的交易程序, COMPILE 后,显示 '\end_of_program' - unbalanced left parenthesis 括号不配对 感觉问题是出在 //---Check for TralingStop---- 的那一段CODE 但我自己检查了 ...
好想知道学此需要学习什么编程类的电脑书呢

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;

2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;

3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;

4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;

5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]