需要编码帮助 - 页 2

 

deVries,如果你停止你的咆哮足够长的时间来解释为什么我开始的代码是如此 "糟糕",我可能会明白我能做些什么来解决它。再读一下你的回答,然后解释一下你的答案如何能帮助别人。

谢谢你,RaptorUK,终于有了我可以使用的答案。

为了帮助解释,我只想让这个EA一次运行一个交易对,一个交易。正如我之前所说的'......并在5个不同的货币对图表上各放一个,都在同一个MT4平台上......',这样就有5个独立的(?)图表上有该EA。在这个阶段,我不想或不需要检查"魔术数字",是吗?

关于条形图的评论,谢谢你。

关于滑点,4/5个经纪商等,在这个阶段,这并不重要,不是吗?我是为自己使用的,在同一个经纪商等。

 
我忘了补充,我不是在寻找捷径,只是想得到一些帮助来克服一个问题。
 
对不起,不知怎的,我错过了其他答案,所以我为 "咆哮 "的评论道歉。并感谢你的实际帮助。

我已经测试过了,它运行良好,没有错误,没有警告。 那么,为什么它不能在实时图表上工作? (我还没有实施上面的建议)
 
unclebigpete:

1.在这个阶段,我不希望或不需要检查 "魔术数字",对吗?

2.关于滑点,4/5个经纪商等,在这个阶段,这并不重要,是吗?我为自己使用这个,在同一个经纪人等。

1.如果你 打算在任何相同的货币对上进行手动交易 ......那么你就可以不用使用 "魔法数字 "了 ......如果你忘记了,并且碰巧在你运行该EA的货币对上进行了手动交易,那么该EA也会管理你的手动交易 ......如果你正确编码,这将不是一个问题。

2.这并不重要 ......只要你始终 记得正确设置外部参数......例如,你发布的代码中滑点为3 ......在5位数的经纪商中,这相当于0.3个点的滑点 ......如果你正确编码,那么3将永远意味着在4位或5位数的经纪商中都是3个点,那么你将有更少的错误空间。不正确的编码是一种捷径,从长远来看可能会花费你的时间......。

 
unclebigpete:

我已经测试过了,它运行良好,没有错误,没有警告。 那么,为什么它不能在实时图表上工作? (我还没有实施上面的建议)
你在哪里测试的?在策略测试器中 吗?
 
是的,在策略测试器中 进行了测试,并进行了编译,得到了"没有错误,没有警告 "的回应。
 

这里是我的。

严格遵守编码规则,iCustom的第一个参数是<字符串符号>,使用Symbol()或NULL代替0。

MetaEditor > Navigator Window (Ctrl +D) > dictionary tab >Technical indicator> iCustom

int QQE_4hr    = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 1 );
int QQE_4hr_2  = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 2 );

你在4小时图中使用移位1和移位2,这将是非常长的。

我之前提到的订单选择,要这样写。

MetaEditor > Navigator Window (Ctrl +D) > dictionary tab > Trading functions > OrderSelect()

for(int i=0; i<Total; i++)
     {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {

关于OrderSelect(),我将会写得更多。

有2个订单关闭,像这样写,两个都是

MetaEditor > Navigator Window (Ctrl +D) > dictionary tab > Trading functions > OrderClose()

OrderClose(OrderTicket(),
           OrderLots(),
           OrderClosePrice(),//Bid,
           Slippage,
           MediumSeaGreen);

我的方法与RaptorUK的不同,但结果是一样的,有两个,你必须改变它们。

if (Ticket > 0)
  {
  if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES))
     {
      Print("SELL order opened : ",
             OrderOpenPrice());
             if(SignalMail)
                SendMail("[Signal Alert]",
                         "["
                         +Symbol()
                         +"] "
                         +DoubleToStr(Bid,Digits)
                         +" Open Sell");
       } // if(Order... // ==>> moved from below 
     } // if(Ticket...   
     else
     {
     Print("Error opening SELL order : ",
           GetLastError());
     } // else
   } ==>> move this parenthesis up there

祝你愉快

:)

 
unclebigpete:
是的,在策略测试器中进行了测试,并对其进行了编译,得到了"没有错误,没有警告 "的回应。
好的,编译时没有错误......那你在策略测试器中 运行时的错误呢? 再次运行它,在日志选项卡中查看 .. .
 

刚才在Audnzd上运行,从17/05到22/05,它开了3笔交易,2笔买入被止损,1笔卖出在测试结束时被关闭。

下面是日志信息,先看顶线。

2012.05.22 21:38:51 QQE-4hr_15min- testing-2205:加载成功

2012.05.22 21:38:53 QQE-4hr_15min- testing-2205 输入。MagicNumber=0; Lots=1; Slippage=3; StopLoss=300; TakeProfit=1000; TrailingStop=300; Nbr_Period=10; Multiplier=3;

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,H4: 载入成功

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,M15:加载成功

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #1 buy 1.00 AUDNZD at 1.29960 sl: 1.29660 ok

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: BUY订单打开 : 1.2996

2012.05.22 21:39:13 2012.05.17 18:32 测试员:止损1号在1.29660 (1.29660 / 1.29698)

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #2 buy 1.00 AUDNZD at 1.30386 sl: 1.30086 ok

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: BUY order opened : 1.3039

2012.05.22 21:39:15 2012.05.18 23:09 测试者:止损2号在1.30086 (1.30083 / 1.30121)

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #3 sell 1.00 AUDNZD at 1.29739 sl: 1.30039 ok

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4:SELL order opened : 1.2974

2012.05.22 21:39:17 2012.05.21 23:59 测试员:3号订单已关闭

2012.05.22 21:39:17 2012.05.21 23:59 c_QQEA AUDNZD,M15: 删除

 
你的滑点可能是问题所在。回溯测试从不使用滑点。阅读MetaTrder4的测试功能和限制https://www.mql5.com/en/articles/1512