MetaTrader 5 / 程序库
适用于 MQL5 的 StopLoss 追踪类库 - MetaTrader 5程序库
161
用于在交易机器人中实施各种止损追踪策略的通用类库。该类库允许您根据与价格的固定距离以及流行指标的值灵活管理未结头寸的止损:抛物线 SAR、AMA、DEMA、FRAMA、MA、TEMA、VIDYA 和任意水平。
该库为您在 MQL5 Expert Advisor(智能交易系统)中添加几种不同类型的止损追踪提供了便捷的方法。 只需插入所需的类,配置参数并调用 OnTick() 中的 Run() 方法即可。
标题
#include <Trailings\Trailings.mqh> 类结构
| 类 | 目的 | 使用示例 |
|---|---|---|
| CSimpleTrailing | 价格追踪(简单追踪)的基类 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CSimpleTrailing trail; //--- 在 OnInit() 中: trail.SetSymbol(_Symbol); trail.SetMagicNumber(123); trail.SetStopLossOffset(100); trail.SetActive(true); //--- 在 OnTick() 中: trail.Run(); |
| CTrailingByInd | 按指标追踪的基类 | 由继承类使用 |
| CTrailingBySAR | 通过抛物线 SAR 指标跟踪 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingBySAR trailSAR; //--- 在 OnInit() 中: trailSAR.Initialize(_Symbol, PERIOD_M15, 0.02, 0.2); trailSAR.SetActive(true); //--- 在 OnTick() 中: trailSAR.Run(); |
| CTrailingByAMA | 自适应移动平均线追踪指标 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByAMA trailAMA; //--- 在 OnInit() 中: trailAMA.Initialize(_Symbol, PERIOD_H1, 9, 2, 30, 0, PRICE_CLOSE); trailAMA.SetActive(true); //--- 在 OnTick() 中: trailAMA.Run(); |
| 跟踪双指数移动平均线 | 跟踪双指数移动平均线 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByDEMA trailDEMA; //--- 在 OnInit() 中: trailDEMA.Initialize(_Symbol, PERIOD_H1, 14, 0, PRICE_CLOSE); trailDEMA.SetActive(true); //--- 在 OnTick() 中: trailDEMA.Run(); |
| 按分形自适应移动平均线追踪 | 分形自适应移动平均线追踪 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByFRAMA trailFRAMA; //--- 在 OnInit() 中: trailFRAMA.Initialize(_Symbol, PERIOD_H1, 14, 0, PRICE_CLOSE); trailFRAMA.SetActive(true); //--- 在 OnTick() 中: trailFRAMA.Run(); |
| 拖曳移动平均线 | 拖曳移动平均线 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByMA trailMA; //--- 在 OnInit() 中: trailMA.Initialize(_Symbol, PERIOD_H1, 20, 0, MODE_EMA, PRICE_CLOSE); trailMA.SetActive(true); //--- 在 OnTick() 中: trailMA.Run(); |
| 拖曳移动平均线 | 拖曳三重指数移动平均线 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByTEMA trailTEMA; //--- 在 OnInit() 中: trailTEMA.Initialize(_Symbol, PERIOD_H1, 14, 0, PRICE_CLOSE); trailTEMA.SetActive(true); //--- 在 OnTick() 中: trailTEMA.Run(); |
| 拖曳可变指数动态平均线 | 跟踪可变指数动态平均线 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByVIDYA trailVIDYA; //--- 在 OnInit() 中: trailVIDYA.Initialize(_Symbol, PERIOD_H1, 9, 12, 0, PRICE_CLOSE); trailVIDYA.SetActive(true); //--- 在 OnTick() 中: trailVIDYA.Run(); |
| 按值追踪 | 在指定水平上跟踪 | //--- 连接 #include <Trailings\Trailings.mqh> //--- 全球 CTrailingByValue trailValue; //--- 在 OnInit() 中: trailValue.SetSymbol(_Symbol); trailValue.SetActive(true); //--- 在 OnTick() 中: trailValue.Run(customSLBuy, customSLSell); |
设置参数:
- SetSymbol(symbol)- 设置交易符号;
- SetMagicNumber(magic)- 设置神奇数字;
- SetStopLossOffset(offset)- 设置价格/指标的止损偏移量;
- SetTrailingStart(start)- 设置追踪启动的最小利润;
- SetTrailingStep(step)- 设置止损移动的步长;
- SetSpreadMultiplier(value)- 设置 StopLevel 的点差乘数;
- SetActive(flag)- 启用/禁用追踪。
指标类 - 附加指标参数(周期、价格类型、方法等)。
下面的示例说明了抛物线 SAR 拖曳如何与标准智能交易系统(Expert Advisor)协同工作:

有关这些拖网主题的更多详情,请参阅以下文章
Trailings.mqh 是向您的 MQL5 Expert Advisor 添加移动止损的简单方法。
连接必要的类,配置参数并在 OnTick 中调用 *.Run()。
如果您的 EA 有一个枚举仓位的周期,您可以使用所选仓位的票据调用 trailing 的 Run() 方法:
Run(const ulong pos_ticket);
在常见的简单情况下,可以在 OnTick() 处理程序中这样做:
for(int i=PositionsTotal()-1; i>=0; i--) { trailing_simple.Run(PositionGetTicket(i)); }
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/63926