TB编程教程 交易策略进阶
交易策略的代码写法会因为交易思想及编程习惯因人而异,在此按常用的功能点列出代码示例,用户可根据自己的需要选择对应的代码进行组合。 - 止赢止损
- 跟踪止损
- 加仓减仓
- 多品种交易
- 集合竞价数据过滤
- 收盘平仓
- A函数下单撤单和全局变量操作
- 数据库读写
止赢止损模板以止赢30跳,止损20跳为例,也可以转换为开仓价格的百分比值,或其任何设置的变量进行处理。
- Vars
- Numeric MinPoint; // 一个最小变动单位,也就是一跳
- Numeric MyEntryPrice; // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
- Numeric TakeProfitSet(30); // 止赢设置
- Numeric StopLossSet(20); // 止损设置
- Numeric MyExitPrice; // 平仓价格
- Begin
- ...
- MinPoint = MinMove*PriceScale;
- MyEntryPrice = AvgEntryPrice;
- If(MarketPosition==1) // 有多仓的情况
- {
- If(High >= MyEntryPrice + TakeProfitSet*MinPoint) // 止赢条件表达式
- {
- MyExitPrice = MyEntryPrice + TakeProfitSet*MinPoint;
- If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
- Sell(0,MyExitPrice);
- }else if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
- {
- MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
- If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
- Sell(0,MyExitPrice);
- }
- }else if(MarketPosition==-1) // 有空仓的情况
- {
- If(Low <= MyEntryPrice - TakeProfitSet*MinPoint) // 止赢条件表达式
- {
- MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
- If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
- BuyToCover(0,MyExitPrice);
- }else if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
- {
- MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
- If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
- BuyToCover(0,MyExitPrice);
- }
- }
- ...
- End
复制代码
注意事项:
- 因无法确认开仓Bar最高/低价和开仓价的先后顺序,因此以上写法一般忽略开仓Bar的处理。
- 如果某个Bar最高/低价相差很大,可能出现止赢止损同时满足的情况,这种情况下需要切换到更小的周期进行交易,或者扩大止赢/损幅度。
|