
等级: 新手上路
- 注册:
- 2024-4-8
- 曾用名:
|
Inputs: BigProfitATRs(7), ATRLength(10), ExitBarLen(3);
Variables: ATRVal(0), PosHL(0);
输入和变量定义:
BigProfitATRs(7):这是一个输入参数,表示期望的大利润的平均真实范围(ATR)的倍数,这里设置为7。
ATRLength(10):这是另一个输入参数,指的是计算ATR时使用的历史数据的长度,这里设置为10。
ExitBarLen(3):这是定义退出交易时考虑的历史Bar的数量,这里设置为3。
ATRVal(0):这是一个变量,用于存储经过计算的ATR值。
PosHL(0):这是一个变量,用于存储持仓高点或低点的价格。
ATRVal = AvgTrueRange(ATRLength) * BigProfitATRs;
计算ATR值:
AvgTrueRange(ATRLength):计算平均真实范围,使用的历史数据长度由ATRLength指定。
将计算出的ATR乘以BigProfitATRs,得到调整后的ATR值,赋值给ATRVal。
If BarsSinceEntry = 0 Then PosHL = Close;
入场后的第一个Bar:
BarsSinceEntry = 0:表示当前是刚刚进入交易的第一个Bar。
PosHL = Close:将当前的收盘价赋值给PosHL。
If MarketPosition = 1 Then Begin
If Close > PosHL Then PosHL = Close;
If PosHL > EntryPrice + ATRVal Then sell Next Bar at Lowest(Low, ExitBarLen) Stop;
End;
多头持仓情况:
MarketPosition = 1:表示当前持有多头仓位。
If Close > PosHL Then PosHL = Close:如果当前的收盘价高于已记录的最高价,更新PosHL为当前收盘价。
If PosHL > EntryPrice + ATRVal Then sell Next Bar at Lowest(Low, ExitBarLen) Stop:如果最高价超过了入场价加上计算的ATR值,那么在下一个Bar以最近ExitBarLen个Bar的最低价作为退出价格进行止损卖出。
If MarketPosition = -1 Then Begin
If Close < PosHL Then PosHL = Close;
If PosHL < EntryPrice - ATRVal Then buytocover Next Bar at Highest(High, ExitBarLen) Stop;
End;
空头持仓情况:
MarketPosition = -1:表示当前持有空头仓位。
If Close < PosHL Then PosHL = Close:如果当前的收盘价低于已记录的最低价,更新PosHL为当前收盘价。
If PosHL < EntryPrice - ATRVal Then buytocover Next Bar at Highest(High, ExitBarLen) Stop:如果最低价低于了入场价减去计算的ATR值,那么在下一个Bar以最近ExitBarLen个Bar的最高价作为退出价格进行买入平仓。
这段代码的核心逻辑是利用ATR作为衡量市场波动的工具,来设置止损点。多头仓位的止损点设置在入场点以上的某个ATR值,而空头仓位的止损点则设置在入场点以下的某个ATR值。然后根据实际价格的变动来调整止损点,以保护利润或限制损失。 |
|