龙听期货论坛's Archiver

龙听 发表于 2022-5-26 12:38

【Parabolic ModStop LX/SX】(抛物线ModStop多/空单出场法)

【Parabolic ModStop LX/SX】(抛物线ModStop多/空单出场法)

[color=Blue]EasyLanguage Signal: Parabolic ModStop LX:[/color]

Signal EasyLanguage:[code]
Inputs: Acceleration(.2), FirstBarMultp(1.5);
Variables: AF(0), StopPrice(0), MP(0), HighValue(0);

MP = MarketPosition;
If High > HighValue Then HighValue = High;

If MP = 1 Then Begin
If MP[1] <> 1 Then Begin
StopPrice = Low - Average(TrueRange, 3) * FirstBarMultp;
AF = Acceleration;
HighValue = High;
End
Else Begin
StopPrice = StopPrice + AF * (HighValue - StopPrice);
If HighValue > HighValue[1] AND AF < 0.2 Then AF = AF + MinList(Acceleration, 0.2 - AF);
End;

If StopPrice > Low Then StopPrice = Low;
End;

If MP = 1 Then EXitLong ("PM") NeXt Bar at StopPrice Stop;
[/code][img]http://p.algo2.net/2022/0526/1e9bc16e64cf2.png[/img]

设置


在每个交易日,我们需要考虑两个项目。首先,我们将MarketPosition存储到MP中,这样就可以在每个柱子的基础上引用它。我们还检查当前的高点是否大于HighValue。如果是的话,我们将当前的高点存储到HighValue中。[code]MP = MarketPosition;
If High > HighValue Then HighValue = High;[/code]如果我们处于多头位置,MarketPosition将返回1。我们检查这是否是新仓位的第一条,如果是,我们计算初始止损价格为低点减去FirstBarMultp(输入)乘以过去三条的平均真实范围。我们还将加速度(输入)存入AF,并将HighValue重置为当前条形图的高点。[code]
If MP = 1 Then Begin
If MP[1] <> 1 Then Begin
StopPrice = Low - Average(TrueRange, 3) * FirstBarMultp;
AF = Acceleration;
HighValue = High;
End
[/code]如果这不是头寸的第一个条形图,StopPrice会把HighValue和StopPrice之间的差额的AF倍加到自己身上。如果当前条形图包含了头寸的最高点,并且AF小于0.2,那么AF将以加速度或0.2与AF的当前值之间的差值为基础进行递增,两者中的较小者。[code]
Else Begin
StopPrice = StopPrice + AF * (HighValue - StopPrice);
If HighValue > HighValue[1] AND AF < 0.2 Then AF = AF + MinList(Acceleration, 0.2 - AF);
End;
[/code]最后,如果新计算的StopPrice大于当前条形图的Low,StopPrice将被下移至Low。[code]
If StopPrice > Low Then StopPrice = Low;
End;
[/code]多头退出

我们的退出只是在计算出的StopPrice上的一个止损单。[code]
If MP = 1 Then EXitLong ("PM") NeXt Bar at StopPrice Stop;
[/code]

龙听 发表于 2022-5-26 12:41

[color=#0000ff]EasyLanguage Signal: Parabolic ModStop SX:[/color]

Signal EasyLanguage:
**** Hidden Message *****

[img]http://p.algo2.net/2022/0526/cdd80e1ccdc42.png[/img]

设置

在每个交易日,我们需要考虑两个项目。首先,我们将MarketPosition存储到MP中,这样就可以在每个柱子的基础上引用它。我们还检查当前的低点是否小于LowValue。如果是,我们将当前的低点存储到LowValue中。[code]
MP = MarketPosition;
If Low < LowValue Then LowValue = Low;
[/code]如果我们处于空头位置,MarketPosition将返回-1。我们检查这是否是新仓位的第一条,如果是,我们计算初始止损价格为高点加上FirstBarMultp(输入)乘以过去三条的平均真实范围。我们还将加速度(输入)存储到AF中,并将LowValue重置为当前条形的低点。[code]
If MP = -1 Then Begin
If MP[1] <> -1 Then Begin
StopPrice = High + Average(TrueRange, 3) * FirstBarMult;
AF = Acceleration;
LowValue = Low;
End
[/code]如果这不是头寸的第一个条形图,StopPrice将LowValue和StopPrice之间的差额的AF倍加到自己身上。如果当前条形图包含了头寸的最低低点,并且AF小于0.2,那么AF将以加速度或0.2与AF的当前值之间的差值为基础进行递增,两者中的较小者。[code]
Else Begin
StopPrice = StopPrice - AF * (StopPrice - LowValue);
If LowValue < LowValue[1] AND AF < 0.2 Then AF = AF + MinList(Acceleration, 0.2 - AF);
End;
[/code]最后,如果新计算的StopPrice小于当前条形图的High,StopPrice将被上移至High。[code]End;
If StopPrice < High Then StopPrice = High;[/code]空头退出

我们的退出只是在计算出的StopPrice上的一个止损单。[code]If MP = -1 Then EXitShort ("PM") NeXt Bar at StopPrice Stop;[/code]

龙听 发表于 2022-6-23 15:31

multicharts平台程式码:
**** Hidden Message *****

页: [1]