新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 51

 

也许我没有理解我的问题。

在M1时期的图表中,如果在M5时期,"随机 "指标线 现在在55水平之上,我想填补缓冲区。

input ENUM_TIMEFRAMES   TimeFrame2  =  PERIOD_M5; //ЭТО ВО ВНЕШНИХ Н
////////////////////////////////////////////////
       for(int i=limit; i>=0; i--) {
      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
    
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
    
      if(sto2_0>55.0)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      
      if(sto2_0<44.0)
       {
      BufferDN[i]=high[i]+distance*MyPoint;
       }

      Comment(sto2_0);
       }

在评论中,M5的当前值是正确的,但在历史上,箭头放的不是条件,是混乱的。

会是什么呢?

" 地下室",来自M5的随机性

箭头被圈出不是根据信号



xaoc
 

我正在编写一个专家顾问,同时放置两个止损单,一个卖出,一个买入。

我如何写条件,当一个StopOrder触发时,第二个(相反的)条件被删除?

谢谢你。

 
RichLux:

我正在编写一个专家顾问,同时放置两个止损单,一个卖出,一个买入。

我如何写条件,当一个StopOrder触发时,第二个(相反的)条件被删除?

谢谢你。

条件很简单。当止损单触发时,市场上出现了一个头寸,这意味着我们应该跟踪这个头寸,如果它存在,我们应该删除相反的订单。

这是一段供思考的代码)

void DeleteOppositeOrders(string sy="", int op=-1, int mn=-1, color cl=clrOliveDrab) {
  bool b, s;
  switch(op) {
    case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
    case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
  }

  if(b) {
    DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
    DeleteOrders(sy, OP_SELLSTOP , mn, cl);
  }
  if(s) {
    DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
    DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
 
Vitaly Muzichenko,据我所知,你现在需要添加ExistPositions和DeleteOrders 函数。
 
RichLux:
Vitaly Muzichenko,据我所知,现在我们需要添加ExistPositions和DeleteOrders 函数。
是的,你会的。
 
RichLux:
Vitaly Muzichenko,据我所知,现在我们需要编写ExistPositions和DeleteOrders 函数。
你不需要写它们,它们都现成的
 
Vitaly Muzichenko:
你不需要 写它们,它们都是现成的

嗯......,对于教育目的来说,它是相当有用的......。

就实际情况而言,在每个函数中运行循环是非常昂贵的。

 
Artyom Trishkin:

嗯......,对于培训目的来说,它非常有用......。

就实际情况而言,在每个功能中运行循环是非常昂贵的。

因此,我没有一下子附和,只描述和附和了 "相反的关闭 "的逻辑 )
 

如果停止/停止是200,该怎么做?

tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits)。

按117.000的汇率计算,美元兑日元将产生317.000的收益。

预期结果是117.200

 
trader781:

如果停止/停止是200,该怎么做?

tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits)。

按117.000的汇率计算,美元兑日元将产生317.000的收益。

预期结果是117.200

为什么有这么多括号?当然,这是个口味问题,但还是太多。

tp=NormalizeDouble(price+TakeProfit*_Point,_Digits)。

如果输出的结果不正确,数值就会被替换,因为这行代码会正确计算一切,即使有额外的括号。
原因: