创意作者: Sergey Rashevskiy.
mq5代码作者 — barabashkakvn.
工作策略
当没有打开的仓位(由EA开启)时,将以初始手数“Lots”开启两个方向相反的仓位,止损设置为“Stop Loss”,而不使用止盈。止损会根据“Trailing Stop”和“Trailing Step”参数进行移动。
跟踪止损
仓位的首次修改会可靠地将止损移动到保本或小幅盈利。后续的止损修改将增加保证利润。
在此之后有两种止损激活选项:
- 1. 仓位以亏损平仓
- 1.1. 在这种情况下,我们假设趋势已经反转。 开启一个增大的手数的仓位(在已平仓方向上增加“最小手数”)以对抗已平仓的仓位。例如,如果亏损的BUY仓位已平仓,则我们将以增大的手数开启一个SELL仓位。这样,我们就会得到两个同方向的仓位。
- 1.2. 此后,只在已获得的方向上运作:等待价格在亏损方向上离开最小亏损仓位“Step”点,并开启一个增大的手数的仓位(在最小亏损仓位的基础上增加“最小手数”)以符合现有仓位(如你所记得,我们有一个或多个单向仓位)。
- 2. 仓位以盈利平仓(这是至少修改过一次的仓位)
- 2.1. 我们假设这不是趋势反转,而是小幅回调。以增大的手数开启一个与平仓方向相同的仓位。例如,盈利的BUY仓位已平仓,则我们开启一个增大的BUY订单。这样,我们就会得到两个同方向的仓位。
- 2.2. 随后我们尝试继续应用跟踪止损。无论如何,其中一个止损会生效,我们将返回到第1或第2步。
在CalculateAllPositions函数内,一次调用会计算BUY和SELL仓位、BUY的总盈利和SELL的总盈利,以及寻找最小亏损的BUY和SELL仓位。
输入参数
- Lots - 初始仓位手数
- 最小手数 - 改变仓位手数的最小单位
- 止损(以点数为单位)
- 跟踪止损(以点数为单位)
- 跟踪步长(以点数为单位)
- 步长 - 不同方向仓位之间的初始间隔
- 最小距离(以点数为单位) - 一系列仓位之间的最小间隔
- 魔法编号 - 唯一的EA标识符