- 注册时间
- 2013-9-23
- 在线时间
- 519 小时
- 最后登录
- 2022-4-4
- 阅读权限
- 200
管理员
MT4软件工程师
- 积分
- 6521
- 帖子
- 2771
- 主题
- 2761
|
TB编程教程 加仓减仓
本例仅以做多为例,做空类似。模板以首次开仓2手后每赢利30跳加仓一次,每次1手,最多加仓3次;开仓后每亏损30跳减仓1手。也可以转换为开仓价格的百分比值,或波动率的百分比等其任何设置的变量进行处理。
- Vars
- Numeric MinPoint; // 一个最小变动单位,也就是一跳
- NumericSeries firstPrice; // 第一次开仓价格
- NumericSeries LastPrice; // 最后一次开仓价格
- Numeric AddSet(30); // 加仓设置
- Numeric SubSet(30); // 减仓设置
- Bool FirstEntryCon; // 首次开仓条件
- Begin
- FirstEntryCon = ...
- MinPoint = MinMove*PriceScale;
- If(MarketPosition==0)
- {
- If(FirstEntryCon)
- {
- firstPrice = Open;
- LastPrice = firstPrice;
- Buy(2,firstPrice);
- }
- }else If(MarketPosition==1) // 有多仓的情况
- {
- While(CurrentEntries < 4 && High >= LastPrice + AddSet*MinPoint) // 加仓
- {
- LastPrice = LastPrice + AddSet*MinPoint;
- if(Open > LastPrice) LastPrice = Open;
- Buy(1,LastPrice);
- }
- While(CurrentEntries > 0 && Low <= firstPrice - SubSet*MinPoint) // 减仓
- {
- firstPrice = firstPrice - SubSet*MinPoint;
- if(Open < firstPrice) firstPrice = Open;
- Sell(1,firstPrice);
- }
- }
- ...
- End
复制代码
注意事项:
- 因无法确认开仓Bar最高/低价和开仓价的先后顺序,忽略开仓Bar的加减仓处理。
- 如果某个Bar最高/低价相差很大,可能出现加仓减仓同时满足的情况,这种情况下需要切换到更小的周期进行交易,或者扩大加仓/减仓幅度设置。
|
|