[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 229 1...222223224225226227228229230231232233234235236...652 新评论 [Deleted] 2011.10.02 21:46 #2281 请告知为什么交易无法打开....代码似乎很有意义,但就是打不开。 [Deleted] 2011.10.02 21:47 #2282 //+------------------------------------------------------------------+ //| MACD ^^^.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern int TP = 100; extern int TS = 100; extern int TF = 1; extern double lots = 0.1; int fast_ema = 5; int slow_ema = 34; int signal_period = 5; int slip = 3; int Magic = 1; int total; int ticket; //объявил тотал и тикет //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- CheckTicket(); bool signal = signal_MACD(); AnalyzeSignal(signal); //---- return(0); } //+------------------------------------------------------------------+ bool signal_MACD() { bool signal_MACD = false; double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); for(int i=1;i<=5;i++) { if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)*tmp,4)<0.0) { signal_MACD = true; break; } } } void AnalyzeSignal(bool signal) { double MACD = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); total = OrdersTotal(); if(total < 0) { if(signal == true) { if(MACD > 0) { ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"покупаем",Magic,0,Green); if(ticket>0) { OrderSelect(ticket,SELECT_BY_TICKET); Print("открылись на покупку по цене:", OrderOpenPrice()); } else { Print("открыться не удалось по причине:", GetLastError()); return(0); } } if(MACD < 0) { ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продаем",Magic,0,Green); if(ticket>0) { OrderSelect(ticket,SELECT_BY_TICKET); Print("открылись на продажу по цене:", OrderOpenPrice()); } else { Print("открыться не удалось по причине:", GetLastError()); return(0); } } else return(0); } } } void CheckTicket() { if(OrderSelect(ticket,SELECT_BY_TICKET)) { if(OrderCloseTime()>0) { ticket = 0; } } } [删除] 2011.10.02 21:49 #2283 这是一个我无法拼凑的点,帮我创造。 我需要为两个或多个朝一个方向开立的订单定义一个盈利点零,例如买入。 并在此基础上增加获利,并将其分配给所有未平仓的买入订单。 获利应该显示在图表上,即它应该是可见的。 例如,在1500的价格下,我们打开第一个买入 订单 在1600点,我们打开第二个买入订单。 他们的零点是在1550+(获利=20)。 在这里,第一个和第二个订单的获利点是1570,当价格达到这个水平时,两个订单将被关闭。 如果价格通过(跳跃)这一水平,它将跟随并关闭订单。 同时保持买入和卖出订单的记录是非常重要的,不能相互干扰。 你应该为买入单独设置止盈,为卖出单独设置止盈,而且只有在一个方向同时开出两个或两个以上的订单时才可以设置。 PapaYozh 2011.10.02 21:55 #2284 CLAIN: 请告知为什么交易无法打开....代码似乎很有意义,但就是打不开。 因为OrdesTotal() 永远不会返回一个负值。 [Deleted] 2011.10.03 06:38 #2285 谢谢,说得好....纠正了...但交易仍然无法打开....怎么办? PapaYozh 2011.10.03 06:56 #2286 CLAIN: 谢谢,说得好....纠正了...但交易仍然无法打开....怎么办? 可能是对signal_MACD()函数的修正。 好吧,她仍然会给予一些回报。 [Deleted] 2011.10.03 07:37 #2287 你好。 请你告诉我,我的条件写得是否正确?(Fractal_point_up_buy 和Fractal_point_down_buy参数已被规范化)。 预先感谢你。 Fractal_point_up_buy=TF1B; Flow_differential_buy=Fractal_point_up_buy-Bid; if (timf1s>timf2b && timf2s>timf2b && timf3s>timf2b && timf3s<timf1b) { Fractal_point_down_buy=TF3S; } else { if (timf1s>timf2b && timf2s>timf2b && timf3s<timf2b && timf2s<timf1b) { Fractal_point_down_buy=TF2S; } else { if (timf1s>timf2b && timf2s<timf2b && timf3s<timf2b && timf1s<timf1b) Fractal_point_down_buy=TF1S; } } Fractal_fibo_buy=100*Flow_differential_buy/(Fractal_point_up_buy-Fractal_point_down_buy); Artyom Trishkin 2011.10.03 07:44 #2288 belck:这是一个我无法拼凑的点,帮我创造。我需要为两个或多个朝一个方向开立的订单定义一个盈利点零,例如买入。并在此基础上增加获利,并将其分配给所有未平仓的买入订单。获利应该显示在图表上,即它应该是可见的。例如,在1500的价格下,我们打开第一个买入订单在1600点,我们打开第二个买入订单。他们的零点是在1550+(获利=20)。 在这里,第一个和第二个订单的获利点是1570,当价格达到这个水平时,两个订单将被关闭。如果价格通过(跳跃)这一水平,它将跟随并关闭订单。同时保持买入和卖出订单的记录是非常重要的,不能相互干扰。 你应该为买入单独设置止盈,为卖出单独设置止盈,而且只有在一个方向同时开出两个或两个以上的订单时才可以设置。 对于在1500点开仓的头寸,在1570点取货是可以的(如果你不考虑StopLevel的话),但是对于在1600点开仓的头寸,在1570点取货会导致错误130 - 错误的止损。毕竟,"收购 "不能低于 "买入 "的开盘价。这已经是一个StopLoss。 对于两个职位,你已经确定了你的盈亏平衡点,但对于三四五? 你应该首先定义单向头寸的盈亏平衡公式,然后你可以创建一个逻辑。 Maxim Zaguzov 2011.10.03 09:21 #2289 nemo811: 你好。 请你告诉我,我的条件写得是否正确?(Fractal_point_up_buy和Fractal_point_down_buy参数已被规范化)。 预先感谢你。 你好。 如果所有的变量都被声明,我没有看到MQL4语法中的错误... 有什么问题呢? Victor Nikolaev 2011.10.03 09:36 #2290 , artmedia70: 对于一个在1500点开的头寸,在1570点拿下是可以的(如果你不考虑StopLevel的话),但是对于一个在1600点开的头寸,在1570点拿下会导致130的错误 - 错误的止损。毕竟,"收购 "不能低于 "买入 "的开盘价。这已经是一个StopLoss。对于两个职位,你已经确定了你的盈亏平衡点,但对于三四五?你应该首先定义单向头寸的盈亏平衡公式,然后你就可以计算出逻辑。 这完全取决于我们何时设置或改变 "获利"。它是基于当前的价格。 1...222223224225226227228229230231232233234235236...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是一个我无法拼凑的点,帮我创造。
我需要为两个或多个朝一个方向开立的订单定义一个盈利点零,例如买入。
并在此基础上增加获利,并将其分配给所有未平仓的买入订单。
获利应该显示在图表上,即它应该是可见的。
例如,在1500的价格下,我们打开第一个买入 订单
在1600点,我们打开第二个买入订单。
他们的零点是在1550+(获利=20)。
在这里,第一个和第二个订单的获利点是1570,当价格达到这个水平时,两个订单将被关闭。
如果价格通过(跳跃)这一水平,它将跟随并关闭订单。
同时保持买入和卖出订单的记录是非常重要的,不能相互干扰。 你应该为买入单独设置止盈,为卖出单独设置止盈,而且只有在一个方向同时开出两个或两个以上的订单时才可以设置。
请告知为什么交易无法打开....代码似乎很有意义,但就是打不开。
谢谢,说得好....纠正了...但交易仍然无法打开....怎么办?
可能是对signal_MACD()函数的修正。
好吧,她仍然会给予一些回报。
你好。
请你告诉我,我的条件写得是否正确?(Fractal_point_up_buy 和Fractal_point_down_buy参数已被规范化)。
预先感谢你。
这是一个我无法拼凑的点,帮我创造。
我需要为两个或多个朝一个方向开立的订单定义一个盈利点零,例如买入。
并在此基础上增加获利,并将其分配给所有未平仓的买入订单。
获利应该显示在图表上,即它应该是可见的。
例如,在1500的价格下,我们打开第一个买入订单
在1600点,我们打开第二个买入订单。
他们的零点是在1550+(获利=20)。
在这里,第一个和第二个订单的获利点是1570,当价格达到这个水平时,两个订单将被关闭。
如果价格通过(跳跃)这一水平,它将跟随并关闭订单。
同时保持买入和卖出订单的记录是非常重要的,不能相互干扰。 你应该为买入单独设置止盈,为卖出单独设置止盈,而且只有在一个方向同时开出两个或两个以上的订单时才可以设置。
对于两个职位,你已经确定了你的盈亏平衡点,但对于三四五?
你应该首先定义单向头寸的盈亏平衡公式,然后你可以创建一个逻辑。
你好。
请你告诉我,我的条件写得是否正确?(Fractal_point_up_buy和Fractal_point_down_buy参数已被规范化)。
预先感谢你。
你好。
如果所有的变量都被声明,我没有看到MQL4语法中的错误...
有什么问题呢?
对于一个在1500点开的头寸,在1570点拿下是可以的(如果你不考虑StopLevel的话),但是对于一个在1600点开的头寸,在1570点拿下会导致130的错误 - 错误的止损。毕竟,"收购 "不能低于 "买入 "的开盘价。这已经是一个StopLoss。对于两个职位,你已经确定了你的盈亏平衡点,但对于三四五?你应该首先定义单向头寸的盈亏平衡公式,然后你就可以计算出逻辑。
这完全取决于我们何时设置或改变 "获利"。它是基于当前的价格。