如何获取图表上显示的最新指标缓冲区的值?

问题描述

我在尝试开发我的 mql 算法时遇到了困难。 现在我可以从前一个蜡烛调用缓冲区来查看它是向上箭头还是向下箭头,但是,如果它位于前一个到当前蜡烛之前的某些蜡烛处,我该如何调用最近的向上或向下箭头? 我可以使用 EMPTY_VALUE 和 if 语句手动检查最近的缓冲区值,但是如果缓冲区距离 50 根蜡烛线怎么办?对? 我如何调用在蜡烛上有箭头且离前一个更远的指标缓冲区?

double GetopenTradesThisPair(string CurrencyPair)
 {
  int counter=0;
  for(int i=OrdersTotal()-1; i>=0; i--)
   {
    OrderSelect(i,SELECT_BY_POS,MODE_TradES);
    if(OrderSymbol()==CurrencyPair)counter++;
   }
  return (counter);
 }
double closeAllTradesThisPair()
 {
  for (int i=OrdersTotal();i>=0;i--)
   {
    OrderSelect(i,MODE_TradES);
    if (OrderSymbol()==Symbol())
     {
      OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Red);
     }
   }
 }

void OnTick()
 {
  string lots = AccountBalance()/3500;
  string saisignal = "";

  double up = iCustom(Symbol(),PERIOD_M1,"super-arrow-indicator",1);
  double dn = iCustom(Symbol(),1,1);

  if(up < 1000)
   {
    saisignal = "buy";
   }
  if(dn < 1000)
   {
    saisignal = "sell";
   }

  if(GetopenTradesThisPair(Symbol())==0)
   {
    if(saisignal == "buy")
     {
      double buyticket = OrderSend(Symbol(),OP_BUY,lots,Ask,Bid-100*_Point,NULL,Blue);
     }
    if(saisignal == "sell")
     {
      double sellticket = OrderSend(Symbol(),OP_SELL,Bid,Ask+100*_Point,Orange);
     }  
   }

  if(GetopenTradesThisPair(Symbol())>0)
   {
    for(int b=OrdersTotal()-1;b>=0;b--)
     {
      if(OrderSelect(b,MODE_TradES))
       {
        if(OrderSymbol()==Symbol())
         {
          if(OrderType()==OP_BUY)
           {
            if(saisignal == "sell")
             {
              closeAllTradesThisPair();
             } 
           }
          if(OrderType()==OP_SELL)
           {
            if(saisignal == "buy")
             {
              closeAllTradesThisPair();
             } 
           }
         }
       }
     }
   }   
  Comment("\n","\n","      sai:  ",saisignal);
 }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)