我一直也在用均線的交易系統(tǒng),可關(guān)于四均線交易系統(tǒng)妒峦,還真沒想過這個(gè)重斑,一般都只用兩根的比較兵睛。這可以借鑒一下思路,好不好,就看個(gè)人喜好了祖很。
策略說明:
基于4均線系統(tǒng)進(jìn)行判斷交易
系統(tǒng)要素:
(5和20周期均線),(3和10周期均線)構(gòu)成的兩組不同周期的均線組合
入場(chǎng)條件:
當(dāng)2組均線均成多頭排列時(shí)且當(dāng)前價(jià)高于上根BAR最高價(jià)入場(chǎng)
出場(chǎng)條件:
1. 小周期多頭均線組合成空頭排列
2. 兩組空頭均線分別空頭排列且低于上根BAR最低價(jià)出場(chǎng)
均線嘛笛丙,也不涉及什么新函數(shù)了,就是一個(gè)求均值函數(shù)Average假颇,這個(gè)解讀過胚鸯,下邊復(fù)制一下,讓大家重溫看下笨鸡,不做解讀姜钳,代碼如下:
Params
NumericSeries Price(1);
Numeric Length(10);
Vars
Numeric AvgValue;
Begin
AvgValue = Summation(Price, Length) / Length;
Return AvgValue;
End
接下來直接看這四均線交易系統(tǒng)的做多代碼及相應(yīng)解讀了,如下:
Params
Numeric LEFast(5); //聲明數(shù)值參數(shù)LEFast形耗,初值5哥桥,即多頭入場(chǎng)短均線周期參數(shù)。//
Numeric LESlow(20); //聲明數(shù)值參數(shù)LESlow激涤,初值20拟糕,即多頭入場(chǎng)長(zhǎng)均線周期參數(shù)。//
Numeric LXFast(3); //聲明數(shù)值參數(shù)LXFast倦踢,初值3送滞,即多頭出場(chǎng)短均線周期參數(shù)。//
Numeric LXSlow(10); //聲明數(shù)值參數(shù)LXSlow辱挥,初值10犁嗅,即多頭出場(chǎng)長(zhǎng)均線周期參數(shù)。//
Numeric SEFast(5); //聲明數(shù)值參數(shù)SEFast晤碘,初值5愧哟,即空頭入場(chǎng)短均線周期參數(shù)。//
Numeric SESlow(20); //聲明數(shù)值參數(shù)SESlow哼蛆,初值20蕊梧,即空頭入場(chǎng)長(zhǎng)均線周期參數(shù)。//
Numeric SXFast(3); //聲明數(shù)值參數(shù)SXFast腮介,初值3肥矢,即空頭出場(chǎng)短均線周期參數(shù)。//
Numeric SXSlow(10); //聲明數(shù)值參數(shù)SXSlow叠洗,初值10甘改,即空頭出場(chǎng)長(zhǎng)均線周期參數(shù)。//
Vars
NumericSeries MALEFast;//聲明數(shù)值序列變量MALEFast灭抑,即多頭入場(chǎng)短均線十艾。//
NumericSeries MALESlow;//聲明數(shù)值序列變量MALSlow,即多頭入場(chǎng)長(zhǎng)均線腾节。//
NumericSeries MALXFast;//聲明數(shù)值序列變量MALXFast忘嫉,即多頭出場(chǎng)短均線荤牍。//
NumericSeries MALXSlow;//聲明數(shù)值序列變量MALXSlow,即多頭出場(chǎng)長(zhǎng)均線庆冕。//
NumericSeries MASEFast;//聲明數(shù)值序列變量MASEFast康吵,即空頭入場(chǎng)短均線。//
NumericSeries MASESlow;//聲明數(shù)值序列變量MASEFSlow访递,即空頭入場(chǎng)長(zhǎng)均線晦嵌。//
NumericSeries MASXFast;//聲明數(shù)值序列變量MASXFast,即空頭出場(chǎng)短均線拷姿。//
NumericSeries MASXSlow;//聲明數(shù)值序列變量MASXSlow惭载,即空頭出場(chǎng)長(zhǎng)均線。//
Begin
If(!CallAuctionFilter()) Return;// 集合競(jìng)價(jià)和小節(jié)休息過濾响巢。//
//下來這些都是關(guān)于均線的算法棕兼,即代入相應(yīng)收盤價(jià)與周期返回求值就行。//
MALEFast=Average(Close,LEFast);//多頭入場(chǎng)短均線抵乓。//
MALESlow=Average(Close,LESlow);//多頭入場(chǎng)長(zhǎng)均線伴挚。//
MALXFast=Average(Close,LXFast);//多頭出場(chǎng)短均線。//
MALXSlow=Average(Close,LXSlow);//多頭出場(chǎng)長(zhǎng)均線灾炭。//
MASEFast=Average(Close,SEFast);//空頭入場(chǎng)短均線茎芋。//
MASESlow=Average(Close,SESlow);//空頭入場(chǎng)長(zhǎng)均線。//
MASXFast=Average(Close,SXFast);//空頭出場(chǎng)短均線蜈出。//
MASXSlow=Average(Close,SXSlow);//空頭出場(chǎng)長(zhǎng)均線田弥。//
//系統(tǒng)入場(chǎng)的條件設(shè)置。//
If(Marketposition <> 1 and Currentbar >= 100)?//假如當(dāng)前沒有持多單铡原,并且當(dāng)前k線索引值大于等于100的偷厦。//
{
??If(MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] And Vol > 0)//就是拿快慢兩均線對(duì)比了,形成兩組均線均成多頭排列時(shí)且當(dāng)前價(jià)高于上根k線的最高價(jià)入場(chǎng)燕刻。//
??{
Buy(0,Max(Open,High[1]));//開多只泼,價(jià)格為前一k線最高價(jià)與開盤價(jià)的比較取大值。//
??}
}
//系統(tǒng)出場(chǎng)條件設(shè)置卵洗。//
If(marketposition == 1 and BarsSinceEntry > 0 And Vol > 0)//假如當(dāng)前持有多單请唱,并且開倉的k線數(shù)位大于0,并且成交量大于0.//
{
??If(MALXFast[1] < MALXSlow[1] )???//兩均線對(duì)比过蹂,形成小周期多頭均線組合成空頭排列出場(chǎng)十绑。//
{
Sell(0,Open);//以開盤價(jià)平倉了。//
}
??Else If( MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1] and Low <= Low[1])?//兩組均線分別空頭排列且低于上根k線最低價(jià)出場(chǎng)酷勺。//
{
Sell(0,Min(Open,Low[1]));//開空本橙,價(jià)格為前一k線最低價(jià)與開盤價(jià)的比較取小值。//
}
}
End
解讀完源代碼脆诉,我覺得還好甚亭,但可能不符合我的操作理念贷币,它這里邊設(shè)置的參數(shù)太多了,看著我都頭暈狂鞋,而且這盈虧比一般,成功率也不高潜的,當(dāng)然這些參數(shù)都可以依據(jù)個(gè)人喜好而修改的骚揍。我更喜歡的是用一根200-360的周期確定多空方向,再根據(jù)個(gè)人喜好選定兩條均線參數(shù)啰挪。好了信不,也不廢話了,直接看做空的四均線源代碼及結(jié)果如下:
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
看著結(jié)果總感覺別扭亡呵,既然寫到這了抽活,我就按照我上面的意愿修改一下,看結(jié)果如何的锰什。修改的代碼及結(jié)果如下:
Params
Numeric LEFast(20);
Numeric LESlow(50); ?
Numeric LXFast(300);
Vars
NumericSeries MALEFast;
NumericSeries MALESlow;
NumericSeries MALXFast;
Begin
If(!CallAuctionFilter()) Return;
MALEFast=Average(Close,LEFast);
MALESlow=Average(Close,LESlow);
MALXFast=Average(Close,LXFast);
If(Marketposition <> 1 and Currentbar >= 100)??
{
??If(MALEFast[1] > MALESlow[1] and Close[1] > MALXFast[1]?and High >= High[1] And Vol > 0)
??{
Buy(0,Max(Open,High[1]));
??}
}
If(marketposition == 1 and BarsSinceEntry > 0 And Vol > 0)
{
If( MALEFast[1] < MALESlow[1] and Low <= Low[1])??
{
Sell(0,Min(Open,Low[1]));
}
}
If(Marketposition <> -1 and Currentbar >= 100)?
{
If(MALEFast[1] < MALESlow[1] and Close[1] < MALXFast[1] and Low <= Low[1] And Vol > 0)
{
SellShort(0,Min(Open,Low[1]));
?}
}
If(MarketPosition == -1 and BarsSinceEntry > 0 And Vol > 0)
{
?if( MALEFast[1] > MALESlow[1] and?High >= High[1] )?
{
BuyToCover(0,Max(Open,High[1]));
}
}
End
看這結(jié)果相對(duì)好多的吧下硕,所以一個(gè)程序化交易系統(tǒng),在你理解基礎(chǔ)上汁胆,按照你個(gè)人經(jīng)驗(yàn)修改好梭姓,比單純的復(fù)制粘貼,不理解具體意思嫩码,只是粗略看結(jié)果誉尖,這沒什么進(jìn)步的。你借鑒別人的買賣規(guī)則铸题,再加入自己的理解铡恕,一個(gè)好的程序基本是可以做出來的。