文章 "通用智能交易系统:自定义追踪止损(第六章)"

 

新文章 通用智能交易系统:自定义追踪止损(第六章)已发布:

通用智能交易系统的第六章介绍追踪止损功能的用法。本文将指导你如何使用通用规则创建一个自己的追踪止损模型,以及如何将其添加到交易引擎中来实现自动管理持仓头寸的功能。

现在如果SHOW_TRAILING_CLASSIC_PARAMS宏被定义,在编译时追踪止损参数将被集成到EA设置中。

 

图 1. 动态链接参数PointsModify和StepModify。

当SHOW_TRAILING_CLASSIC_PARAMS宏被注释掉或者不存在时,追踪止损从EA的参数设置中消失:


图 2. 禁用追踪止损参数

作者:Vasiliy Sokolov

 
现在一切正常--太酷了......一气呵成....非常感谢......我知道在新版本稳定之前......会有错误......)))))
 
您好,非常感谢!请告诉我,您是否计划在引擎中实现您在文章https://www.mql5.com/zh/articles/1683 中描述的在 MOEX 上进行交易的方法 具体来说,我对分析市场流动性以及在此基础上以指定偏差(最大滑点)进入市场感兴趣。
Как обезопасить себя и своего эксперта при торговле на Московской бирже
Как обезопасить себя и своего эксперта при торговле на Московской бирже
  • 2015.06.18
  • Vasiliy Sokolov
  • www.mql5.com
В статье подробно описываются методы работы, призванные обеспечить безопасность совершения торговых операций на биржевых и малоликвидных рынках, на примере срочной секции Московской биржи. Статья является логическим продолжением статьи "Основы биржевого ценообразования на примере срочной секции Московской биржи", в которой даны теоретические основы биржевой торговли, но носит более практический характер.
 
igorbel:
您好,非常感谢!请告诉我,您是否计划在引擎中实现您在文章https://www.mql5.com/zh/articles/1683 中描述的在 MOEX 上进行交易的方法 我特别感兴趣的是分析市场流动性,并在此基础上以指定偏差(最大滑点)进入市场。
建议很有趣。让我们看看。
 
//+------------------------------------------------------------------+
//| 通过设置收盘价关闭当前市场位置
//| 注释等于注释|
//+------------------------------------------------------------------+
bool CPosition::CloseAtMarket(string comment="")
  {
   if(!IsActive())
      return false;
   m_trade.PositionModify(m_id, 0.0, 0.0);
   ENUM_ACCOUNT_MARGIN_MODE mode=(ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE);
   if(mode != ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)
      return m_trade.PositionClose(m_symbol);
   return m_trade.PositionClose(m_id);
  }

您能告诉我为什么要在这个函数中使用 m_trade.PositionModify(m_id,0.0,0.0)吗?因为这个操作,我的日志中出现了无效止损 错误。

 
igorbel:

您能告诉我为什么要在这个函数中使用 m_trade.PositionModify(m_id,0.0,0.0)吗?因为这个操作,我的日志中出现了无效止损错误。

这些都是旧版本的雏形。感谢您的指出,我们会进行修复。
 

我没有改动任何东西,但在编译包括基类在内的任何尾随模块时,都会出错:

'CTrailing' - declaration without type  PositionMT5.mqh 48      4
'Trailing' - undeclared identifier      PositionMT5.mqh 73      20
'Trailing' - object pointer expected    PositionMT5.mqh 73      20
'Trailing' - object pointer expected    PositionMT5.mqh 74      14
 
bool CTrailingClassic::Modify(void)
  {

   if(CheckPointer(m_position)==POINTER_INVALID)
     {
      string text="Invalid position for current trailing-stop. Set position with 'SetPosition' method";
      CMessage *msg=new CMessage(MESSAGE_WARNING,__FUNCTION__,text);
      Log.AddMessage(msg);
      return false;
     }
   if(m_diff_extremum<=0.0)
     {
      string text="Set points trailing-stop with 'SetDiffExtremum' method";
      CMessage *msg=new CMessage(MESSAGE_WARNING,__FUNCTION__,text);
      Log.AddMessage(msg);
      return false;
     }
   double extremum=FindExtremum(m_position);
   if(extremum == 0.0)return false;
   double n_sl = 0.0;
   if(m_position.Direction()==POSITION_TYPE_BUY)
      n_sl=extremum-m_diff_extremum;
   else
      n_sl=extremum+m_diff_extremum;
   if(n_sl!=m_position.StopLossValue())
      return m_position.StopLossValue(n_sl);
   return false;
  }

如果是多头头寸,检查一下新的价格是否低于当前 价格,如果是空头头寸,检查一下新的价格是否高于当前价格也无妨。

 

您好。感谢您的文章。

如何调整每笔交易的手数?我看到它只买一手


谢谢

 

亲爱的索科洛夫先生

这篇文章非常有趣,但不幸的是,我无法安装您的任何一个代码,而且还会出现大量的编译器错误。我尝试了所有 9 个部分,但都没有成功。

因此我想问一下:有没有安装您的代码的具体方法?

谢谢

 
简洁是智慧的灵魂。
接受、理解、正确的解释,几乎没有更多了。遗憾的是