为什么我的OrderSend函数返回的价格高于蜡烛高价?

时间:2020-07-05 11:40:03

标签: mql4

我正在尝试编写一个具有2个移动平均线的Ea,并且希望它们在交叉时发送指令。 卖单看起来不错,但是对于1分钟图表中的买单,我用来发送定单的卖价不在蜡烛价格范围内。实际上,我在OrderEntry函数之前和OrderSend()之后执行了Print(“ Ask =”,Ask)。它们等于蜡烛价格-[最高价]和先前蜡烛价格-[收盘价]之上的某种价格方式 但是,当我尝试较高的时间范围时,它会更接近蜡烛,并且在每日时间范围内,订单的要价将在蜡烛范围内(高-低)。有人知道为什么会这样吗?

void CheckForMaTrade(){
   
   double PreviousFast = iMA(NULL,0,FastMaPeriod,FastMaShift,FastMaMethod,FastMaAppliedTo,2);
   double CurrentFast = iMA(NULL,0,FastMaPeriod,FastMaShift,FastMaMethod,FastMaAppliedTo,1);   
   double PreviousSlow = iMA(NULL,0,SlowMaPeriod,SlowMaShift,SlowMaMethod,SlowMaAppliedTo,2);   
   double CurrentSlow = iMA(NULL,0,SlowMaPeriod,SlowMaShift,SlowMaMethod,SlowMaAppliedTo,1);
   
   if(PreviousFast<PreviousSlow && CurrentFast>CurrentSlow)
      OrderEntry(0);       
   if(PreviousFast>PreviousSlow && CurrentFast<CurrentSlow)
      OrderEntry(1);
}

void OrderEntry(int direction){
   if(direction == 0){
      double bsl=0;
      double btp=0;
         if(StopLoss != 0)
            bsl = Ask-(StopLoss*pips);   
         if(TakeProfit != 0)
            btp = Ask+(TakeProfit*pips);
         if(OpenOrdersThisPair(Symbol()) < 10 )
            OrderSend(NULL,OP_BUY,LotSize,Ask,0,bsl,btp,NULL,MagicNumber,0,Gold);        
   } 

enter image description here

1 个答案:

答案 0 :(得分:0)

在MT4中,蜡烛仅按买入价绘制。 ASK价格未考虑在内。因此有可能Ask>最高出价。