首页 > 其他分享 >龙哥量化:通达信文华技术指标-双均线策略叠加分时均线,量化策略思路详细分析

龙哥量化:通达信文华技术指标-双均线策略叠加分时均线,量化策略思路详细分析

时间:2024-12-26 13:19:32浏览次数:3  
标签:ma1 ma2 均线 Series 龙哥 dayavg 量化 baramount

如果您需要代写技术指标公式, 请联系我。

龙哥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

相关文章