网格交易法则(TB版)_第1页
网格交易法则(TB版)_第2页
网格交易法则(TB版)_第3页
网格交易法则(TB版)_第4页
网格交易法则(TB版)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网格法则(TB版)策略基于网格交易策略的算法,其核心逻辑围绕着以下几个关键参数和变量进行:1.初始仓位(`InitMP`):定义了策略开始时的仓位状态,正数表示做多,负数表示做空。2.第一格间距(`FirstGrid`):网格交易的第一层距离,以点数为单位。3.总网格数(`TotalGrids`):最大允许的持仓层数或网格数。4.网格间距(`GridInterval`):除第一格外,每层网格之间的固定间距。5.盈利点数(`WinGrid`):达到此点数盈利后平仓的设定。6.每次开仓手数(`EveryLots`):每次交易的手数。7.委托价格偏移(`OffsetPoint`):订单价格相对于市场价的偏移量。8.价差中枢类型(`MidLineType`):确定如何计算价差中枢,可选值包括昨天收盘价、价差均线、结算均价或手动设定。9.手动设置价差中枢(`MidLineSetValue`):当`MidLineType`为4时,手动设定的价差中枢值。代码逻辑主要分为以下步骤:-初始化:确保初始仓位正确读取或设置,并计算最小变动价位。-计算价差中枢(`MidLine`):根据选择的类型计算,可能是昨收价差、均线价差、结算均价差或手动设定值。-实时监控:在每天的特定时段内(例如09:00至11:30,13:30至14:50),监控市场数据,避免在开盘初或收盘前的不稳定时段操作。-开仓判断:如果实际仓位小于等于0且当前叫买价低于中线加上第一格间距,则考虑开空单;若实际仓位大于等于0且叫卖价高于中线减去第一格间距,则考虑开多单。开仓时会根据当前网格层级和时间条件执行。-平仓判断:当有盈利时,根据盈利点数(`WinGrid`)计算平仓价格,并检查是否需要调整仓位。-仓位调整:根据市场变化动态调整仓位,确保不超过设定的最大网格数。-订单执行:使用`Data0`和`Data1`代表两个相关的市场数据流,分别发送买入和卖出订单,考虑到委托价格的偏移。-结束处理:在每个bar结束时更新全局变量`MyRealMp`以保持最新仓位状态,并在一天交易结束时(时间超过14:50),强制平掉所有仓位。整体而言,设计了一个自动化的网格交易系统,旨在通过在预定的价格间隔内不断开仓和平仓来从市场波动中获利,同时控制风险。请注意,实际应用时需要根据具体市场规则和交易平台接口进行调整和测试。策略代码:ParamsNumericInitMP(0);//初始仓位,+-表示多空NumericFirstGrid(3);//第一格的间距,点数NumericTotalGrids(10);//总网格数,即最大持仓数NumericGridInterval(3);//网格间距,点数NumericWinGrid(3);//盈利点数NumericEveryLots(1);//每次开仓手数NumericOffsetPoint(0);//委托价格的偏移值(点数)NumericMidLineType(1);//价差中枢类型选项,1代表昨天的收盘价为价差中枢,2代表价差均线为价差中枢,3代表昨天的结算均价为价差中枢,4手动设置价差中枢NumericMidLineSetValue(100);//价差中枢类型选项为4时,手动设置价差中枢位置的具体点位Numericlenth(20);VarsNumericMinPoint;NumericAvgOfClose;NumericAskLine;NumericBidLine;NumericMidLine;//中线值NumericMyRealMp(0);NumericTmpGridIndex;NumericTmpPrice;boolbtimecon;BeginbTimeCon=Time>0.0900And(Time<0.1130OrTime>0.1330)AndTime<0.1450;MinPoint=MinMove*PriceScale;MyRealMp=GetGlobalVar(0);If(BarStatus==0){If(MyRealMp==InvalidNumeric){MyRealMp=InitMP;SetGlobalVar(0,MyRealMp);}}ElseIf(BarStatus==2&&A_AccountID!=""){If(Data0.Q_AskPrice<=0||Data0.Q_BidPrice<=0||Data1.Q_AskPrice<=0||Data1.Q_BidPrice<=0)Return;If(Data0.Q_BidPrice==Data0.Q_UpperLimit||Data0.Q_AskPrice==Data0.Q_LowerLimit)Return;If(Data1.Q_BidPrice==Data1.Q_UpperLimit||Data1.Q_AskPrice==Data1.Q_LowerLimit)Return;If(Time==0.0900&&Data0.Q_LastTime<0.090005||Time==0.1030&&Data0.Q_LastTime<0.103005||Time==0.1330&&Data0.Q_LastTime<0.133005)Return;If(Time==0.0900&&Data1.Q_LastTime<0.090005||Time==0.1030&&Data1.Q_LastTime<0.103005||Time==0.1330&&Data1.Q_LastTime<0.133005)Return;If(Time==0.1459&&Data0.Q_LastTime>0.145930)Return;If(Time==0.1459&&Data1.Q_LastTime>0.145930)Return;If(MidLineType==3&&(Data0.Q_PreSettlePrice()<=0||Data1.Q_PreSettlePrice()<=0))Return;If(MidLineType==1){MidLine=Data0.CloseD[1]-Data1.CloseD[1];}ElseIf(MidLineType==2){MidLine=intpart(AverageFC(data0.close-data1.close,lenth));}ElseIf(MidLineType==3){MidLine=Data0.Q_PreSettlePrice()-Data1.Q_PreSettlePrice();}ElseIf(MidLineType==4){MidLine=MidLineSetValue;}AskLine=Data0.Q_AskPrice-Data1.Q_BidPrice;BidLine=Data0.Q_BidPrice-Data1.Q_AskPrice;Commentary("中线="+Text(MidLine));Commentary("叫卖价="+Text(AskLine));Commentary("叫买价"+Text(BidLine));If(MyRealMp<=0&&BidLine>MidLine+FirstGrid*MinPoint){TmpPrice=MidLine+FirstGrid*MinPoint+Abs(MyRealMp)*(GridInterval*MinPoint);TmpPrice=Ceiling(TmpPrice,MinPoint);Commentary("开仓价="+Text(TmpPrice));TmpGridIndex=-1-IntPart((BidLine-MidLine-FirstGrid*MinPoint)/(GridInterval*MinPoint));If(TmpGridIndex<MyRealMp&&TmpGridIndex>=-1*TotalGrids&&btimecon){MyRealMp=MyRealMp-1;Data0.A_SendOrder(Enum_Sell,Enum_Entry,EveryLots,Data0.Q_BidPrice-OffsetPoint*MinPoint);Data1.A_SendOrder(Enum_Buy,Enum_Entry,EveryLots,Data1.Q_AskPrice+OffsetPoint*MinPoint);}}ElseIf(MyRealMp>=0&&AskLine<MidLine-FirstGrid*MinPoint){TmpPrice=MidLine-FirstGrid*MinPoint-Abs(MyRealMp)*(GridInterval*MinPoint);TmpPrice=Floor(TmpPrice,MinPoint);Commentary("开仓价="+Text(TmpPrice));TmpGridIndex=1+IntPart((MidLine-FirstGrid*MinPoint-AskLine)/(GridInterval*MinPoint));If(TmpGridIndex>MyRealMp&&TmpGridIndex<=TotalGrids&&btimecon){MyRealMp=MyRealMp+1;Data0.A_SendOrder(Enum_Buy,Enum_Entry,EveryLots,Data0.Q_AskPrice+OffsetPoint*MinPoint);Data1.A_SendOrder(Enum_Sell,Enum_Entry,EveryLots,Data1.Q_BidPrice-OffsetPoint*MinPoint);}}If(MyRealMp>0){TmpPrice=MidLine-FirstGrid*MinPoint-(Abs(MyRealMp)-1)*(GridInterval*MinPoint)+WinGrid*MinPoint;TmpPrice=Ceiling(TmpPrice,MinPoint);Commentary("平仓价="+Text(TmpPrice));}ElseIf(MyRealMp<0){TmpPrice=MidLine+FirstGrid*MinPoint+(Abs(MyRealMp)-1)*(GridInterval*MinPoint)-WinGrid*MinPoint;TmpPrice=Floor(TmpPrice,MinPoint);Commentary("平仓价="+Text(TmpPrice));}TmpGridIndex=-1-IntPart((AskLine-FirstGrid*MinPoint+WinGrid*MinPoint-MidLine)/(GridInterval*MinPoint));TmpGridIndex=min(0,TmpGridIndex);If(TmpGridIndex>MyRealMp){MyRealMp=MyRealMp+1;Data0.A_SendOrder(Enum_Buy,Enum_Exit,EveryLots,Data0.Q_AskPrice+OffsetPoint*MinPoint);Data1.A_SendOrder(Enum_Sell,Enum_Exit,EveryLots,Data1.Q_BidPrice-OffsetPoint*MinPoint);}TmpGridIndex=1+IntPart((MidLine-FirstGrid*MinPoint+WinGrid*MinPoint-BidLine)/(GridInterval*MinPoint));TmpGridIndex=max(0,TmpGridIndex);If(TmpGridIndex<MyRealMp){MyRealMp=MyRealMp-1;Data0.A_SendOrder(Enum_Sell,Enum_Exit,EveryLots,Data0.Q_BidPrice-OffsetPoint*MinPoint);Data1.A_SendOrder(Enum_Buy,Enum_Exit,EveryLots,Data1.Q_AskPrice+Offs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论