路路发智能交易研发中心

 找回密码
 立即注册
查看: 1968|回复: 0

TB编程教程 交易策略进阶

[复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

积分
6521
帖子
2771
主题
2761
QQ
发表于 2015-5-9 19:20:07 | 显示全部楼层 |阅读模式
TB编程教程 交易策略进阶
交易策略的代码写法会因为交易思想及编程习惯因人而异,在此按常用的功能点列出代码示例,用户可根据自己的需要选择对应的代码进行组合。
  • 止赢止损
  • 跟踪止损
  • 加仓减仓
  • 多品种交易
  • 集合竞价数据过滤
  • 收盘平仓
  • A函数下单撤单和全局变量操作
  • 数据库读写

止赢止损模板以止赢30跳,止损20跳为例,也可以转换为开仓价格的百分比值,或其任何设置的变量进行处理。
  1. Vars
  2.     Numeric MinPoint;           // 一个最小变动单位,也就是一跳
  3.     Numeric MyEntryPrice;       // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
  4.     Numeric TakeProfitSet(30);  // 止赢设置
  5.     Numeric StopLossSet(20);    // 止损设置
  6.     Numeric MyExitPrice;        // 平仓价格
  7. Begin
  8.     ...
  9.     MinPoint = MinMove*PriceScale;
  10.     MyEntryPrice = AvgEntryPrice;
  11.     If(MarketPosition==1) // 有多仓的情况
  12.     {
  13.         If(High >= MyEntryPrice + TakeProfitSet*MinPoint)   // 止赢条件表达式
  14.         {
  15.             MyExitPrice = MyEntryPrice + TakeProfitSet*MinPoint;
  16.             If(Open > MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
  17.             Sell(0,MyExitPrice);
  18.         }else if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
  19.         {
  20.             MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
  21.             If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
  22.             Sell(0,MyExitPrice);
  23.         }
  24.     }else if(MarketPosition==-1) // 有空仓的情况
  25.     {
  26.         If(Low <= MyEntryPrice - TakeProfitSet*MinPoint)    // 止赢条件表达式
  27.         {
  28.             MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
  29.             If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
  30.             BuyToCover(0,MyExitPrice);
  31.         }else if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
  32.         {
  33.             MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
  34.             If(Open > MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
  35.             BuyToCover(0,MyExitPrice);
  36.         }
  37.     }
  38.     ...
  39. End
复制代码

注意事项:
  • 因无法确认开仓Bar最高/低价和开仓价的先后顺序,因此以上写法一般忽略开仓Bar的处理。
  • 如果某个Bar最高/低价相差很大,可能出现止赢止损同时满足的情况,这种情况下需要切换到更小的周期进行交易,或者扩大止赢/损幅度。




外汇智能交易,成就财富梦想!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


MT4编程培训|EA定制开发|QQ在线咨询|路路发智能交易研发中心

GMT+8, 2025-1-7 05:20 , Processed in 0.152033 second(s), 24 queries .

© 2009-2022 520EA.com EA668.com

快速回复 返回顶部 返回列表