EA: Well Martin - 页 3

 
BestBroker:
bool Buy=Ask<BBLow[1] && ADX[1]<ADXLevel && (LastDealType()==0 || LastDealType()==2);
//---突破布林线下边界,进行相反交易

bool Sell=Bid>BBUp[1] && ADX[1]<ADXLevel && (LastDealType()==0 || LastDealType()==1)

这是否意味着在 BB 击穿时进场前只进行趋势检查?

也就是说,如果 ADX 趋势看涨(+DI 高于-DI),则在击穿 BB 下限时进场,但如果 ADX 趋势看跌(-DI 高于 +DI),则在击穿 BB 下限时不进场?

主线(MAIN_LINE) 完全不计算在内?

1.我在测试器中没有开仓交易。日志中没有错误信息。我已按照图片https://www.mql5.com/zh/code/13315 设置了参数

我正在想办法解决。

2. 根据代码:

 bool Buy=Ask<BBLow[1] && ADX[1]<ADXLevel && (LastDealType()==0 || LastDealType()==2);

根本不存在价格穿越 BB 线进入头寸的问题。

以下是买入的条件:

Ask 工具的价格低于第一个形成的条形图上的 BB 下限,并且第一个形成的条形图上 MAIN_LINE 的 ADX 值低于其 ADXLevel 值(如持平),并且历史上的前一笔交易是买入或根本没有交易。

对于卖出 - 镜像。

Well Martin
Well Martin
  • 投票: 12
  • 2015.06.25
  • Andrew Kornishkin
  • www.mql5.com
Советник Well Martin на основе двух индикаторов: Bollinger Bands и ADX.
 

您能告诉我如何测试吗?

我没有打开交易 - 日志是干净的。我设置了所有必要的参数: 存入资金 100 000、最小手数 1、10 000 和最小手数 0.1 - 也没有进行测试。经纪商 BKS。MT5。外部变量值如第一页图片所示。EURUSD.M15.自 2010 年起在 M1 上进行 OHLC 测试。杠杆 1:100。

 
Roman Shiredchenko:

1.我在测试仪中未打开交易。日志中没有错误信息。我设置了如图 https://www.mql5.com/zh/code/13315 所示的参数。

我正在想办法解决。

2. 根据代码:

根本不存在价格穿越 BB 线进场的问题。

以下是买入的条件:

Ask 工具的价格低于第一个形成的条形图上的 BB 下限,并且第一个形成的条形图上 MAIN_LINE 的 ADX 值低于其 ADXLevel 值(如持平),并且历史上的前一笔交易是买入或根本没有交易。

对于卖出--镜像。

非常感谢你的解释!

根据你所说的情况,很难说为什么不打开交易,我遇到过很多 在特定的 tp 和 sl 时不打开交易的EA。我必须尝试查看这些参数。

我可以肯定地说,它是通过经纪商开仓终端和外汇 DC Alpari 的模拟终端进行测试的。

 
BestBroker:

非常感谢你的澄清!

根据您所说的情况,很难说为什么不打开交易,我遇到过很多在特定的 tp 和 sl 下不打开交易的 EA。有必要尝试搜索这些参数。

我可以准确地说,它是通过经纪商的终端--开仓和模拟终端 forex DC Alpari.------------------------------------------ 进行测试的,谢谢。我的手机无法正常回复,光标一直跳到您的帖子上。我稍后会写信给服务台。











 
Roman Shiredchenko:
如有任何问题,请联系我们!
 
谢谢
 
能否请您补充一下 EA 的神奇数字?谢谢。
 

感谢您提供这个使用 BB+ADX 指标的简单示例。

经过一些改进(特别是添加了 +DI、-DI),我得到了非常好的结果。

请允许我指出 "IsNewBar "函数不起作用:

m_TOld "变量不是静态的,它总是与"TNew"变量不同。

您可以将其替换为:(参见:https://www.mql5.com/zh/articles/22)

//+------------------------------------------------------------------+
//| 如果符号/周期对出现了新的条形图,则返回 true。
//+------------------------------------------------------------------+
bool isNewBar()
  {
//--- 在静态变量中记住最后一小节的开启时间
   static datetime last_time=0;
//--- 当前时间
   datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

//--- 如果这是函数的第一次调用
   if(last_time==0)
     {
      //--- 设置时间并退出
      last_time=lastbar_time;
      return(false);
     }

//--- 如果时间不同
   if(last_time!=lastbar_time)
     {
      //--- 记住时间并返回 true
      last_time=lastbar_time;
      return(true);
     }
//--- if we passed to this line, then the bar is not new; return false
   return(false);
  }

现在问题解决了。

祝你好运)

The "New Bar" Event Handler
The "New Bar" Event Handler
  • www.mql5.com
MQL5 programming language is capable of solving problems on a brand new level. Even those tasks, that already have such solutions, thanks to object oriented programming can rise to a higher level. In this article we take a specially simple example of checking new bar on a chart, that was transformed into rather powerful and versatile tool. What tool? Find out in this article.