龙哥量化:通达信文华技术指标-双均线固定止损的期货量化策略思路详细分析

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

龙哥QQ:591438821

龙哥微信:Long622889

也可以把您的通达信,文华技术指标改成TB交易开拓者、金字塔、文华8的自动交易量化策略

开始分享一些细致化的思路和写法,我用的是TB交易开拓者。对量化感兴趣的朋友可以多交流

这篇介绍重点介绍固定止损的写法,用双均线举例

先看一下代码,可以复制运行的

基本每行代码都用汉字解释了,代码的末尾重点说一下为啥还要用min,max

Params
Numeric qty(1); //手数
Numeric ma1_n(20); //短均线参数
Numeric ma2_n(60); //长均线参数
Numeric zhisun_tiao(30); // 固定止盈x跳
Vars
Series<bool> BK_xinhao; //开多-信号
Series<bool> SK_xinhao; //开空-信号
Series<bool> SP_xinhao; //平多-信号
Series<bool> BP_xinhao; //平空-信号
Series<Numeric> ma1; //均线ma1
Series<Numeric> ma2; //均线ma2
Numeric yitiao; //一跳,比如豆油一跳2个点
Events
OnInit()
{
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
}
onBar(ArrayRef<Integer> indexs)
{
yitiao=MinMove*PriceScale; //一跳
ma1 = Averagefc(close,ma1_n); //短均线ma1
ma2 = Averagefc(close,ma2_n); //长均线ma2
PlotNumeric("ma1",ma1,ma1,red); //在图上画出ma1,红色,主图副图,是在公式属性设置, 属性-->显示方式-->主图
PlotNumeric("ma2",ma2,ma2,green); //在图上画出ma2,绿色
//多信号-------------------------------------------------------------
BK_xinhao = CrossOver(ma1,ma2); //金叉开多
SP_xinhao = Crossunder(ma1,ma2); //死叉平多
//空信号-------------------------------------------------------------
SK_xinhao = Crossunder(ma1,ma2); //死叉开空
BP_xinhao = CrossOver(ma1,ma2); //金叉平空
//固定止损------------------------------------------------------
if(MarketPosition==1 And BarsSinceEntry>=1) // 有多仓的情况 and 开仓到当前的K线个数
{
if(low<EntryPrice-zhisun_tiao*yitiao) //最低价小于开仓价减去止损点数,这里为什么要用两层if,是为了减少程序运行和计算量
{
Sell(0, min(open,EntryPrice-zhisun_tiao*yitiao)); //止损价是开仓价减去止损点数,再和开盘价比较,较小值是实际止损价
}
}
else if(MarketPosition==-1 And BarsSinceEntry>=1)
{
if(high>entryPrice+zhisun_tiao*yitiao)
{
BuyToCover(0,max(open,EntryPrice+zhisun_tiao*yitiao));
}
}
//开仓-----------------------------------------------------------------------
if (MarketPosition==0 and BK_xinhao[1]) //这里重点说明,当根K线走完,确定金叉了, 在下一个K线的开盘价开仓
{
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);
}
}

 

重点说明:为啥还要用min  max   ,这里以空单为例,解释一下

看下图,开空价是7812,止损30跳,每跳2点,止损点数是60点,空单计算的止损价应该是7872,

但是开盘向上大幅跳空,开盘价是7898,此时亏损点数7898-7812=86点数,超过固定止损点数60点,

所以,一开盘就必须立马用开盘价止损,

用max函数比较一下开盘价和计算的止损价,实际止损价是较大值

max(open,     EntryPrice + zhisun_tiao*yitiao)

 

posted @   龙哥量化  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
点击右上角即可分享
微信分享提示