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

 
Ihor Herasko:

如果你想拿一根M30蜡烛和最后收盘的H1蜡烛一起收盘,它可以是一根指数不仅为1,而且为2的蜡烛。另一件事是,如果M30的收盘价 与前一根H1蜡烛的收盘价相同,那么就不清楚为什么要采取M30的收盘价。也就是说,在这种情况下,询问另一个TF的收盘价是没有意义的,因为它与当前TF的收盘价相同。

我们需要知道的正是M30在H1内的收盘价。

找到了原因,控制了酒吧的开放。谢谢你。

 

在指标中,如何在循环中比较价格High[i+1]+/-10*Point与下限分形

如果发现相等,把箭头Buf_o[i+1]=High[i+1] ;。

 

你好!

我想写一个简单的二进制策略代码,用MetaTrader 4测试器来测试它。我知道内置的测试器并不能完全测试二进制策略,但我只需要知道测试期间的盈利交易份额。我无法设置交易的到期时间。我使用OrderSend操作符。

OrderSend(Symbol(),OP_BUY,1,Ask,10,0,0, "5",15167,Expiration,clrGreen)。

进行自动交易时一切都很顺利,但经纪人的条款在对头寸的评论中规定了到期时间。在这种情况下,我的评论是 "5"。是5分钟。然而,测试者当然不认为该评论是对到期时间的指示。测试仪对过期参数的不同值没有任何反应。首先,它按照策略的信号打开交易,然后在测试期到期时关闭测试期内的所有开仓交易。因此,测试的结果 是绝对不正确的。

如何为测试者指定一个可以理解的有效期?我仍然在掌握 "旧 "版本的代码。

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
kirson-7:

我如何设置一个测试人员能够理解的有效期?

如果当前时间=开盘时间 加5分钟,则平仓;如果时间框架是M5,则在新条形的开盘时平仓。
 

如何使High[i+1] +/-10*Point 不完全等于分形的价格?

 {
//---
   if(rates_total<2) return(0);

   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      // BufferUP[i+1]=EMPTY_VALUE;
      
      //
      for(int y=i+2;y<=i+100;y++)
        {
         if(low[i+1]==iFractals(Symbol(),0,MODE_HIGH,y))estb=true;
        }
      if(estb)
        {
         BufferUP[i+1]=low[i+1]-distance*Point;//НЕПРАВИЛЬНО СТАВИТ СТРЕЛКУ
        }
      estb=0;
      //==//
      for(int y=i+2;y<=i+100;y++)
        {
         if(high[i+1]==iFractals(Symbol(),0,MODE_LOWER,y))ests=true;
        }
      if(ests)
        {
         BufferDN[i+1]=high[i+1]+distance*Point;//ПРАВИЛЬНО СТАВИТ СТРЕЛКУ
        }
      ests=0;

      //Comment("");
     }
   return(rates_total);
  }
 
bij:

如何使High[i+1] +/-10*Point 不完全等于分形的价格?

值的差异大于10*Point,但我们需要考虑差异将是正的还是负的。
 
bij:
如果当前时间=开仓时间 加5分钟,或者如果时间框架是M5,则在新条形的开仓时平仓。
还有,为什么OrderSend操作者的参数列表中的标准过期时间不能发挥作用?在我的例子中,它被标记为 "到期"。
 
kirson-7:
为什么OrderSend操作者参数列表中的标准到期时间不能工作?在我的例子中,它被标记为 "到期"。
这是为待处理的订单准备
 
请帮助我写一个函数:将订单从较大的手数关闭到较小的手数(字符串Symbol, int type, bool hand orders, int Magic)。
即:符号选择、类型、是否考虑到手势、魔数。


 
大家好:我能否在一个用户定义的函数中规定开仓(例如在市场上买入),并在有不同的买入信号时调用这个函数?例如,MACD-被编入这个函数--开仓,_Muwings信号-被编入这个函数--再次购买....,等等。或者在每个特定的情况下,在制定信号时,有必要写上OrderSand(Symbol,OP_BAI,等等)。