期货软件TB系统源代码解读系列51-四均线交易系统
我⼀直也在⽤均线的交易系统,可关于四均线交易系统,还真没想过这个,⼀般都只⽤两根的⽐较。这可以借鉴⼀下思路,好不好,就看个⼈喜好了。
策略说明:
基于4均线系统进⾏判断交易
系统要素:
(5和20周期均线),(3和10周期均线)构成的两组不同周期的均线组合
⼊场条件:
当2组均线均成多头排列时且当前价⾼于上根BAR最⾼价⼊场
出场条件:
1. ⼩周期多头均线组合成空头排列
2. 两组空头均线分别空头排列且低于上根BAR最低价出场
均线嘛,也不涉及什么新函数了,就是⼀个求均值函数Average,这个解读过,下边复制⼀下,让⼤家重温看下,不做解读,代码如下:
Params
NumericSeries Price(1);
Numeric Length(10);
Vars
Numeric AvgValue;
Begin
AvgValue = Summation(Price, Length) / Length;
Return AvgValue;
End
接下来直接看这四均线交易系统的做多代码及相应解读了,如下:
Params
Numeric LEFast(5); //声明数值参数LEFast,初值5,即多头⼊场短均线周期参数。//
Numeric LESlow(20); //声明数值参数LESlow,初值20,即多头⼊场长均线周期参数。//
Numeric LXFast(3); //声明数值参数LXFast,初值3,即多头出场短均线周期参数。//
Numeric LXSlow(10); //声明数值参数LXSlow,初值10,即多头出场长均线周期参数。//
Numeric SEFast(5); //声明数值参数SEFast,初值5,即空头⼊场短均线周期参数。//
Numeric SESlow(20); //声明数值参数SESlow,初值20,即空头⼊场长均线周期参数。//
Numeric SXFast(3); //声明数值参数SXFast,初值3,即空头出场短均线周期参数。//
Numeric SXSlow(10); //声明数值参数SXSlow,初值10,即空头出场长均线周期参数。//
Vars
NumericSeries MALEFast;//声明数值序列变量MALEFast,即多头⼊场短均线。//
NumericSeries MALESlow;//声明数值序列变量MALSlow,即多头⼊场长均线。//
NumericSeries MALXFast;//声明数值序列变量MALXFast,即多头出场短均线。//
NumericSeries MALXSlow;//声明数值序列变量MALXSlow,即多头出场长均线。//
NumericSeries MASEFast;//声明数值序列变量MASEFast,即空头⼊场短均线。//
NumericSeries MASESlow;//声明数值序列变量MASEFSlow,即空头⼊场长均线。//
NumericSeries MASXFast;//声明数值序列变量MASXFast,即空头出场短均线。//
NumericSeries MASXSlow;//声明数值序列变量MASXSlow,即空头出场长均线。//
Begin
If(!CallAuctionFilter()) Return;// 集合竞价和⼩节休息过滤。//
//下来这些都是关于均线的算法,即代⼊相应收盘价与周期返回求值就⾏。//
MALEFast=Average(Close,LEFast);//多头⼊场短均线。//
MALESlow=Average(Close,LESlow);//多头⼊场长均线。//
MALXFast=Average(Close,LXFast);//多头出场短均线。//
MALXSlow=Average(Close,LXSlow);//多头出场长均线。//
MASEFast=Average(Close,SEFast);//空头⼊场短均线。//
MASESlow=Average(Close,SESlow);//空头⼊场长均线。//
MASXFast=Average(Close,SXFast);//空头出场短均线。//
MASXSlow=Average(Close,SXSlow);//空头出场长均线。//
//系统⼊场的条件设置。//
If(Marketposition <> 1 and Currentbar >= 100) //假如当前没有持多单,并且当前k线索引值⼤于等于100的。//
{
If(MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] And Vol > 0)//就是拿快慢两均线对⽐了,形成两组均线均成多头排列时且当前价⾼于上根k线的最⾼价⼊场。//
{
Buy(0,Max(Open,High[1]));//开多,价格为前⼀k线最⾼价与开盘价的⽐较取⼤值。//
}
}
//系统出场条件设置。//
If(marketposition == 1 and BarsSinceEntry > 0 And Vol > 0)//假如当前持有多单,并且开仓的k线数位⼤于0,并且成交量⼤于0.//
{
If(MALXFast[1] < MALXSlow[1] ) //两均线对⽐,形成⼩周期多头均线组合成空头排列出场。//
{
Sell(0,Open);//以开盘价平仓了。//
}
Else If( MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1] and Low <= Low[1]) //两组均线分别空头排列且低于上根k线最低价出场。//
{
Sell(0,Min(Open,Low[1]));//开空,价格为前⼀k线最低价与开盘价的⽐较取⼩值。//
}
}
End
解读完源代码,我觉得还好,但可能不符合我的操作理念,它这⾥边设置的参数太多了,看着我都头晕,⽽且这盈亏⽐⼀般,成功率也不⾼,当然这些参数都可以依据个⼈喜好⽽修改的。我更喜欢的是⽤⼀根200-360的周期确定多空⽅向,再根据个⼈喜好选定两条均线参数。好了,也不废话了,直接看做空的四均线源代码及结果如下:
Params
Numeric LEFast(5);
Numeric LESlow(20);
Numeric LXFast(3);
Numeric LXSlow(10);
Numeric SEFast(5);
Numeric SESlow(20);
Numeric SXFast(3);
Numeric SXSlow(10);
Vars
NumericSeries MALEFast;
NumericSeries MALESlow;
NumericSeries MALXFast;
NumericSeries MALXSlow;
NumericSeries MASEFast;
NumericSeries MASESlow;
NumericSeries MASXFast;
NumericSeries MASXSlow;
Begin
If(!CallAuctionFilter()) Return;
MALEFast=Average(Close,LEFast);
MALESlow=Average(Close,LESlow);
MALXFast=Average(Close,LXFast);
MALXSlow=Average(Close,LXSlow);
MASEFast=Average(Close,SEFast);
MASESlow=Average(Close,SESlow);
MASXFast=Average(Close,SXFast);
MASXSlow=Average(Close,SXSlow);
If(Marketposition <> -1 and Currentbar >= 100)
{
If(MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1] and Low <= Low[1] And Vol > 0) {
SellShort(0,Min(Open,Low[1]));
}
}
If(MarketPosition == -1 and BarsSinceEntry > 0 And Vol > 0)
{
If(MASXFast[1] > MASXSlow[1])
{
BuyToCover(0,Open);
}
Else if( MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] )
{
BuyToCover(0,Max(Open,High[1]));
}
}
End
看着结果总感觉别扭,既然写到这了,我就按照我上⾯的意愿修改⼀下,看结果如何的。修改的代码及结果如下:Params
Numeric LEFast(20);
Numeric LESlow(50);
h5源码交易平台Numeric LXFast(300);
Vars
NumericSeries MALEFast;
NumericSeries MALESlow;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论