如果您需要代写技术指标公式, 请联系我。
龙哥QQ:591438821
龙哥微信:Long622889
也可以把您的通达信,文华技术指标改成TB交易开拓者、金字塔、文华8的自动交易量化策略
开始分享一些细致化的思路和写法,我常用的是TB交易开拓者。对量化感兴趣的朋友可以多交流
这篇介绍重点介绍分时均线的写法,用双均线举例开仓平仓
分时均线的计算公式是,从每个交易日的第一个K线开始累加,累加的成交额,除以,累积的成交量
开仓逻辑:
ma1金叉ma2,而且,收盘价在分时均线之上,开多
ma1死叉ma2,而且,收盘价在分时均线之下,开空
平仓逻辑:
只要是死叉平多,不用管收盘价是不是在分时均线之上,因为死叉有可能出现在分时均线之上,也有可能在之下
只要死叉就平空
尾盘最后一分钟14:59,清仓
用文华6,核对分时均线是否正确
可以复制的代码,//是解释文字,
Params
Numeric qty(1);
Numeric ma1_n(20);
Numeric ma2_n(60);
Vars
Series<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;
Events
OnInit()
{
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线总的成交额baramount
barvol = barvol[1]+vol;
//成交量也是同理
}
dayavg = baramount / barvol; //累计的成交额÷累积的成交量,得到分时均线dayavg
PlotAuto("dayavg",dayavg, dayavg,yellow,Enum_Line,Enum_Solid,Enum_2Pix); //画出分时均线dayavg,黄线yellow,加粗Enum_2Pix
ma1 = 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,所以乘10000
Commentary("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);
}
}
}
标签:ma1,ma2,均线,Series,龙哥,dayavg,量化,baramount From: https://www.cnblogs.com/long136/p/18632527