【问题标题】:Why is it that when the second arrow indicator shows up the EA doesn't execute anything?为什么当第二个箭头指示器出现时 EA 不执行任何操作?
【发布时间】:2020-10-15 19:44:02
【问题描述】:

我在 EA 上编写了一些代码,用于在斐济趋势指标上进行交易。 EA 识别第一个箭头指标并相应地执行交易,但是,当第二个箭头应该出现在回溯测试中时,其余代码不会做任何事情。

我看到,当 EA 执行第一笔交易时,图表上跟随买入价的指标中的自定义价格框的价值停止上升或下降,也许这就是问题所在?

double CloseAllTradesThisPair()
{
 for (int i=OrdersTotal();i>=0;i--)
  {
   OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
   if (OrderSymbol()==Symbol())
    {
     OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),10,Red);
    }
  }
}
extern bool bought = false;
extern bool sold = false;

double Lotsize = AccountBalance()/5000;
double Lots = NormalizeDouble(Lotsize,2);

void OnTick()
 {
  for(int i=0;i<OrdersTotal();i++)
   {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    return(0);
   }
  double uparrow = iCustom(Symbol(),PERIOD_CURRENT,"fiji-trend-indicator",2,0);
  double dnarrow = iCustom(Symbol(),PERIOD_CURRENT,"fiji-trend-indicator",3,0);
  
  if(uparrow < 1000 && i==0)
   {
    double buyticket = OrderSend(Symbol(),OP_BUY,0.01,Ask,10,0,0,NULL,0,0,Green);
    bought = true;
   }
   if(dnarrow < 1000 && i==0)
    {
     double sellticket = OrderSend(Symbol(),OP_SELL,0.01,Bid,10,0,0,NULL,0,0,Red);
     sold = true;
    }
   if(bought != true && dnarrow < 1000 )
    {
     CloseAllTradesThisPair();
     double sticket = OrderSend(Symbol(),OP_SELL,0.01,Bid,10,0,0,NULL,0,0,Red);
    }
     
   if(sold != true && uparrow < 1000)
    {
     CloseAllTradesThisPair();
     double bticket = OrderSend(Symbol(),OP_BUY,0.01,Ask,10,0,0,NULL,0,0,Green);
    }

}

【问题讨论】:

    标签: mql4 indicator mql forex activity-indicator


    【解决方案1】:

    Q“当 EA 执行第一笔交易时,也许这就是问题所在?”

    哦,当然是的。

    根据代码,EA 完全按照void OnTick(){...}-code 中的指示进行操作:

    ...
    for ( int i = 0; i < OrdersTotal(); i++ )
    {
        OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
        return( 0 ); // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _THE_TERMINATOR_ >>> FINITO...
        }
    ...
    

    这个片段什么都不做,直到第一个订单被下达(然后i停止以满足条件&lt; OrdersTotal()

    其余的很明显:return( 0 ); ...除了从void返回值的缺陷... 无一例外地终止代码通过OnTick()-code,因此有效地避免了任何交易:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      相关资源
      最近更新 更多