如果您需要代写技术指标公式, 请联系我。
龙哥QQ:591438821
龙哥微信:Long622889
也可以把您的通达信,文华技术指标改成TB交易开拓者、金字塔、文华8的自动交易量化策略
开始分享一些细致化的思路和写法,我常用的是TB交易开拓者。对量化感兴趣的朋友可以多交流
这篇介绍重点介绍分时均线的写法,用双均线举例开仓平仓
分时均线的计算公式是,从每个交易日的第一个K线开始累加,累加的成交额,除以,累积的成交量
开仓逻辑:
ma1金叉ma2,而且,收盘价在分时均线之上,开多
ma1死叉ma2,而且,收盘价在分时均线之下,开空
平仓逻辑:
只要是死叉平多,不用管收盘价是不是在分时均线之上,因为死叉有可能出现在分时均线之上,也有可能在之下
只要死叉就平空
尾盘最后一分钟14:59,清仓
用文华6,核对分时均线是否正确
可以复制的代码,//是解释文字,
ParamsNumeric qty(1); Numeric ma1_n(20); Numeric ma2_n(60);
VarsSeries<bool> BK_xinhao;Series<bool> SK_xinhao;Series<bool> BP_xinhao;Series<bool> SP_xinhao;Series<Numeric> ma1;Series<Numeric> ma2;Series<Numeric> baramount;Series<Numeric> barvol;Series<Numeric> RD_dayavg;Series<Numeric> dayavg;Global Numeric time2;
EventsOnInit(){ AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算 }onBar(ArrayRef<Integer> indexs){ //分时均线计算if(TrueDate(0)!=TrueDate(1)) //TrueDate-求指定bar的真正交易日期, 这行是找到每天的第一个K线,21:00 是每个交易日的第一个K线{baramount=(close+open+high+low)*0.25*Vol; //因为期货没有成交额函数,只能用高开低收的平均值,再乘成交量vol,计算每根K线的成交额barvol=vol;//成交量RD_dayavg=baramount / barvol; //第一根K线的分时均价=成交额÷成交量}else //上半部分只是计算第一个K线,下面是计算当日交易的其他K线,用累加的方式{ baramount = baramount[1]+(close+open+high+low)*0.25*vol; //比如//现在是21:02,第二个K线,(close+open+high+low)*0.25*vol计算出第二个K线的成交额,然后累加上一个成交额baramount[1],//得到两个K线总的成交额baramount//现在是21:02,第三个K线,(close+open+high+low)*0.25*vol计算出第三个K线的成交额,然后累加前面计算的总成交额baramount[1],//得到三个K线总的成交额baramountbarvol = barvol[1]+vol;//成交量也是同理}dayavg = baramount / barvol; //累计的成交额÷累积的成交量,得到分时均线dayavgPlotAuto("dayavg",dayavg, dayavg,yellow,Enum_Line,Enum_Solid,Enum_2Pix); //画出分时均线dayavg,黄线yellow,加粗Enum_2Pixma1 = Averagefc(close,20); //计算短均线,Averagefc求平均值,作用和通达信的ma函数一样 通达信的写法是ma1:ma(close,20); ma2 = Averagefc(close,60); //计算长均线,写法稍有区别,很简单的PlotNumeric("ma1",ma1,ma1,red); //PlotNumeric函数专门画线,画ma1均线,红色,PlotNumeric("ma2",ma2,ma2,green); //画ma2均线,绿色time2=IntPart(Time*10000); //K线时间,比如说21:05,time的数值是0.210500,所以乘10000Commentary("time2:" + Text(IntPart(Time*10000))); //在K线图看时间
//--多信号-------------------------------------------------------------BK_xinhao = CrossOver(ma1,ma2) and close>dayavg; //ma1金叉ma2,而且,收盘价在分时均线之上,开多SP_xinhao = Crossunder(ma1,ma2); //只要是死叉平多,不用管收盘价是不是在分时均线之上
//--空信号-------------------------------------------------------------SK_xinhao = Crossunder(ma1,ma2) and close<dayavg; //ma1死叉ma2,而且,收盘价在分时均线之下,开空BP_xinhao = CrossOver(ma1,ma2); //只要死叉就平空
//--建仓-----------------------------------------------------------------------if (MarketPosition==0 and BK_xinhao[1]) {Buy(qty, open); }if (MarketPosition==0 and SK_xinhao[1]){SellShort(qty, open);}if (MarketPosition>0 and SP_xinhao[1]) {Sell(0, open); }if (MarketPosition<0 and BP_xinhao[1]) {BuyToCover(0, open);}if(time2==1459) //尾盘最后一分钟,清仓{if (MarketPosition>0) {Sell(0, open); }if (MarketPosition<0) {BuyToCover(0, open);}}}