幽灵交易策略_期货软件TB系统源代码解读系列67-幽灵交易者
取名為幽靈交易者的系統,名字霸氣,效果,大家自己測試看看了,照例還是先看策略說明吧:
策略說明:
模擬交易產生一次虧損后才啟動真實下單交易。
系統要素:
1、兩條指數平均線
2、RSI指標
3、唐奇安通道
入場條件:
1、模擬交易產生一次虧損、短期均線在長期均線之上、RSI低于超買值、創新高,則開多單
2、模擬交易產生一次虧損、短期均線在長期均線之下、RSI高于超賣值、創新低,則開空單
出場條件:
1、持有多單時小于唐奇安通道下軌,平多單
2、持有空單時大于唐奇安通道上軌,平空單
做多代碼及解讀如下:
Params
Numeric FastLength(9);// 聲明數值參數FastLength,初值9,即短期指數平均線參數。//
Numeric SlowLength(19);// 聲明數值參數SlowLength,初值19,即長期指數平均線參數。//
Numeric Length(9);// 聲明數值參數Length,初值9,即RSI參數。//
Numeric OverSold(30);// 聲明數值參數OverSold,初值30,即超賣。//
Numeric OverBought(70);// 聲明數值參數OverBought,初值70,即超買。//
Numeric Lots(0);// 聲明數值參數Lots,初值0,即交易手數設置。//
Vars
NumericSeries AvgValue1;// 聲明數值序列變量AvgValue1,即短期指數平均線?。//
NumericSeries AvgValue2;// 聲明數值序列變量AvgValue2,即長期指數平均線。//
NumericSeries NetChgAvg(0);//聲明數值序列變量NetChgAvg,初值0。//
NumericSeries TotChgAvg(0);//聲明數值序列變量TotChgAvg,初值0.//
Numeric SF(0);//聲明數值變量SF,初值0.//
Numeric Change(0);//聲明數值變量Change,初值0.//
Numeric ChgRatio(0);//聲明數值變量ChgRatio,初值0.//
NumericSeries RSIValue;// 聲明數值序列變量RSIValue,即RSI指標。//
NumericSeries ExitHiBand(0);// 聲明數值序列變量ExitHiBand,初值0,唐奇安通道上軌。//
NumericSeries ExitLoBand(0);//聲明數值序列變量ExitLoBand,初值0, 唐奇安通道下軌。//
NumericSeries myEntryPrice(0);//聲明數值序列變量myEntryPrice,初值0, 進場價格。//
NumericSeries myExitPrice(0);// 聲明數值序列變量myExitPrice,初值0,出場價格。//
NumericSeries myProfit(0);// 聲明數值序列變量myProfit,初值0,即利潤。//
NumericSeries myPosition(0);// 聲明數值序列變量myPosition,初值0,即多空標志。//
Begin
If(!CallAuctionFilter()) Return;// 集合競價和小節休息過濾。//
AvgValue1 = Xaverage(Close,FastLength);// 計算短期指數平均線,即把收盤價與周期9返回函數Xaverage求值。//
AvgValue2 = Xaverage(Close,SlowLength);//同理,計算長期指數平均線參數。//
// 計算RSI。//
If(CurrentBar <= Length - 1)//假如當前索引k線數位值小于等于周期8(9-1)的。//
{
NetChgAvg = (Close - Close[Length])/Length;//代入相應數值計算,即得NetChgAvg = (close - close[9])/ 9的。//
TotChgAvg = Average(Abs(Close - Close[1]),Length);//先算絕對值函數Abs里的,再把絕對值與周期9返回均值函數Average求均值,最后賦值給變量TotChgAvg。//
}Else//就是k線數位值大于周期8的。//
{
SF = 1/Length;//代入相應數值,即SF= 1/9 了.//
Change = Close - Close[1];//同理,代入當期k線收盤價與前一k線收盤價即可。//
NetChgAvg = NetChgAvg[1] + SF*(Change - NetChgAvg[1]);//這里也是代入上邊求得的相應數值即可。//
TotChgAvg = TotChgAvg[1] + SF*(Abs(Change) - TotChgAvg[1]);//同上解讀。//
}
If(TotChgAvg <> 0)//假如變量TotChgAvg不等于0.//
{
ChgRatio = NetChgAvg/TotChgAvg;//則兩變量相除了。//
}Else//等于0的。//
{
ChgRatio = 0;//變量ChgRatio=0了。//
}
RSIValue = 50*(ChgRatio + 1);//指標RSI的計算結果。//
ExitHiBand = Highest(High,20);// 唐奇安通道上軌。//
ExitLoBand = Lowest(Low,20);// 唐奇安通道下軌。//
If(myPosition == 1 And myPosition[1] == 1 and Low <= ExitLoBand[1])// 持有多單時,下破唐奇安通道下軌,平多單。//
{
myExitPrice = Min(Open,ExitLoBand[1]);//出場價的計算,開盤價與前一個唐奇安通道下軌的比較,取較小值。//
Sell(0,myExitPrice);//平倉。//
myProfit = myExitPrice - MyEntryPrice;//利潤算法。//
myPosition = 0;//持倉多空標志myPosition = 0.//
}
If(myPosition == 0 And myPosition[1] == 0 And AvgValue1[1] > AvgValue2[1] And RSIValue[1] < OverBought and High >= High[1])// 模擬交易產生一次虧損、短期均線在長期均線之上、RSI低于超買值、創新高,則開多單。//
{
myEntryPrice = Max(Open,High[1]);//進場價計算,即開盤價與前一個最高價的比較,取較大值。//
myPosition = 1;//持倉多空標志myPosition = 1.//
If(myProfit < 0) Buy(Lots,myEntryPrice);//假如利潤myProfit <0的,以進場價開倉。//
}
End
做空代碼及結果如下:
Params
Numeric FastLength(9);
Numeric SlowLength(19);
Numeric Length(9);
Numeric OverSold(30);
Numeric OverBought(70);
Numeric Lots(0);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
NumericSeries NetChgAvg(0);
NumericSeries TotChgAvg(0);
Numeric SF(0);
Numeric Change(0);
Numeric ChgRatio(0);
NumericSeries RSIValue;
NumericSeries ExitHiBand(0);
NumericSeries ExitLoBand(0);
NumericSeries myEntryPrice(0);
NumericSeries myExitPrice(0);
NumericSeries myProfit(0);
NumericSeries myPosition(0);
Begin
If(!CallAuctionFilter()) Return;
AvgValue1 = Xaverage(Close,FastLength);
AvgValue2 = Xaverage(Close,SlowLength);
If(CurrentBar <= Length - 1)
{
NetChgAvg = (Close - Close[Length])/Length;
TotChgAvg = Average(Abs(Close - Close[1]),Length);
}Else
{
SF = 1/Length;
Change = Close - Close[1];
NetChgAvg = NetChgAvg[1] + SF*(Change - NetChgAvg[1]);
TotChgAvg = TotChgAvg[1] + SF*(Abs(Change) - TotChgAvg[1]);
}
If(TotChgAvg <> 0)
{
ChgRatio = NetChgAvg/TotChgAvg;
}Else
{
ChgRatio = 0;
}
RSIValue = 50*(ChgRatio + 1);
ExitHiBand = Highest(High,20);
ExitLoBand = Lowest(Low,20);
If(myPosition == -1 And myPosition[1] == -1 and High >= ExitHiBand[1])
{
myExitPrice = Max(Open,ExitHiBand[1]);
BuyToCover(0,myExitPrice);
myProfit = myEntryPrice - MyExitPrice;
myPosition = 0;
}
If(myPosition == 0 And myPosition[1] == 0 And AvgValue1[1] < AvgValue2[1] And RSIValue[1] > OverSold and Low <= Low[1])
{
myEntryPrice = Min(Open,Low[1]);
myPosition = -1;
If(myProfit < 0) SellShort(Lots,myEntryPrice);
}
End
總結
以上是生活随笔為你收集整理的幽灵交易策略_期货软件TB系统源代码解读系列67-幽灵交易者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【混淆工具】保护Net程序代码安全
- 下一篇: 赛前注意事项+客观题~~~