编码帮助 - 页 662

 
techmac:
为什么不使用这里的东西https://www.mql5.com/en/forum/178566
谢谢你的建议,但是如果有人能将警报编码为垂直线就更好了,垂直线在页面上一路移动,在二级或后续窗口的任何指标上提供准确的视觉价格交叉视线,这是寻找下一个进入点的进一步优势。
 
mladen:
这或多或少是一个 "之 "字形。对它的警报几乎与人字形警报相同(并且会有同样的问题)。

谢谢你的回答,Mladen --- 我同意你的意见,但是如果警报可以这样编程,即在蜡烛收盘时形成垂直线时激活警报1,使你意识到潜在的趋势方向变化,在垂直线警报后的第二或第三根蜡烛收盘时激活警报2(水平线),并低于达到的最高点 - 当警报2被激活时,应该提供一个好的进入点 - 如果不是,就不要交易。是的,价格甚至可以在警报2之后突破,但在我一直在交易和观察的所有时间里,我认为这样的事件发生率不超过20%-30%,这是一个可以接受的风险。 总之,这只是一个想法,也许可以花一些时间来玩玩的程序员。

我想问一下,为什么HMA/Hull指标在穿越价格(蜡烛)时没有被编程为改变颜色或发出警报?请看我的附件:谢谢你的时间,Mladen - 尊敬的交易员朋友:)

附加的文件:
HMA.jpg  188 kb
 

你好mladen

我发现一个叫 "NON LINEAR ATR "的指标,它是用简易语言写的(tradestation)。

是否可以转换为mql4?

谢谢

 
lbubu:

你好mladen

我发现一个叫 "NON LINEAR ATR "的指标,它是用简易语言写的(tradestation)。

是否可以转换为mql4?

谢谢

应该是可以的

将会检查

 
lbubu:

你好mladen

我发现一个叫 "NON LINEAR ATR "的指标,它是用简易语言写的(tradestation)。

是否可以转换为mql4?

谢谢你

这是处理入口的部分


附加的文件:
 

亲爱的mladen

我正在测试一个EA,它使用以下简单的代码来检查 一个订单是否已经被打开。但当我改变时间框架时,它就会打开一个新的订单。是代码的问题还是我需要一个多时间框架的EA?


   int OpenOrder = 0;
   for (int i=OrdersTotal()-1; i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber
         && (OrderType() == OP_BUY || OrderType() == OP_SELL)) OpenOrder++;
        }
     }
   return(OpenOrder);


最好是。

 
IXI:

亲爱的mladen

我正在测试一个EA,它使用以下简单的代码来检查一个订单是否已经被打开。但当我改变时间框架时,它就会打开一个新的订单。是代码的问题还是我需要一个多时间框架的EA?



最好的。

你不需要一个多时间框架的EA

你如何使用这部分代码(我的意思是,如果OpenOrder>0,你如何防止EA开立新的订单)?它必须有一部分代码来做这件事(你发布的代码将返回正确的数字,无论时间框架如何)

 
lbubu:

你好mladen

我发现一个叫 "NON LINEAR ATR "的指标,它是用简易语言写的(tradestation)。

是否可以转换为mql4?

谢谢

也添加了退出的版本(止损0)。

附加的文件:
 

亲爱的朋友们!
这里有一个著名的通用MA交叉专家。它在正确的设置下表现良好,提供了很好的资金管理和信号过滤选项,但我想请专业编码人员增加一个选项,使用用户定义的更高时间框架的移动平均线作为交叉信号。截图显示了更高时间框架的移动平均线的概念(1小时移动平均线绘制在5分钟图表上)。

附上通用MA交叉EA和MTF MA指标mql文件。

如果有任何帮助和建议,我将不胜感激。

附加的文件:
 

亲爱的mladen

谢谢你的回答。

有趣的是,EA只是检查 是否OpenOrder == 0,以发送一个新的订单。我不知道这是否足够,还是应该检查OpenOrder是否大于0?

你还提到, MetaTrader的历史不是按订单关闭时间排列的,至少在手动中是这样。对于一个EA来说,应该如何检查连续的订单结果?我有一个想法,但我不确定它是否实用。就像下面的代码一样,用数组表示最后几笔订单。

int ConsecutiveResults()
  {
   int Results[] ;
   int Orders = 0;
   ArrayResize (Results,OrdersHistoryTotal()); 
   datetime CloseTime  = 0;   
   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() > CloseTime)
      Results[i] = TimeCurrent()-OrderCloseTime();
     }
   ArraySort(Results);
   for(int j=5; j>=0 ; j--)
     {
      for(int k=OrdersHistoryTotal()-1; k>=0; k--)
        {
         if (OrderSelect(k,SELECT_BY_POS,MODE_HISTORY))
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() > CloseTime)
         if (TimeCurrent()-OrderCloseTime() == Results[j] && OrderProfit() > 0) Orders++;
         if (TimeCurrent()-OrderCloseTime() == Results[j] && OrderProfit() < 0) Orders--;
        }
     }
   return(Orders);
}
最好的。
原因: