哎
关于oops交易系统,就是跳空回调后买入。 胜率挺高的,优化后能到60%以上,盈利能力也可以。就是交易次数有点少。就算在《完美的日内交易商2》书中给出的例子,82年4月到98年交易SP500也才177次。可以做为策略池中的一个。针对一日的缺口的代码:ParamsNumeric gapsize(2); //缺口大小
Numeric breaksize(3); //突破大小
Numeric stoploss(10); //止损
Numeric takeprofit(20); //止盈
Vars
Bool isgap;
Bool temp;
Numeric enterprice;
NumericSeries HighestAfterEntry(0);
NumericSeries LowestAfterEntry(0);
Begin
isgap = OpenD(0)>HighD(1)+gapsize; //高开
temp = Low<HighD(1)-breaksize; //跌破前日最高价
enterprice = HighD(1)-breaksize-2;
If(isgap And temp And MarketPosition==0)
{
SellShort(1,enterprice);
LowestAfterEntry=Low;
}
isgap = OpenD(0)<LowD(1)-gapsize; //低开
temp = High>LowD(1)+breaksize; //涨破前日最低价
enterprice = LowD(1)+breaksize+2;
If(isgap And temp And MarketPosition==0)
{
Buy(1,enterprice);
HighestAfterEntry=High;
}
/*止损止盈部分*/
If (MarketPosition!=0 And BarsSinceEntry!=0)
{
If(MarketPosition==-1)
{
LowestAfterEntry = Min(LowestAfterEntry,Low);
If(High>EntryPrice And LowestAfterEntry>EntryPrice-takeprofit)
{
BuyToCover(1,EntryPrice-takeprofit); //空单止盈
LowestAfterEntry=0;
} Else If(High>EntryPrice+stoploss) //空单止损
{
BuyToCover(1,EntryPrice+stoploss);
LowestAfterEntry=0;
}
}
If(MarketPosition==1)
{
HighestAfterEntry = Max(HighestAfterEntry,High);
If(Low<EntryPrice And HighestAfterEntry>EntryPrice+takeprofit)
{
Sell(1,EntryPrice+takeprofit); //多单止盈
LowestAfterEntry=0;
} Else If(Low<EntryPrice-stoploss)
{
Sell(1,EntryPrice-stoploss); //多单止损
LowestAfterEntry=0;
}
}
If((Date[-1]!=InvalidInteger && Date!=Date[-1])||(Date[-1]==InvalidInteger && Date < CurrentDate))//当日平仓
{
Sell(1,Close);
BuyToCover(1,Close);
}
}
End
开盘区间突破交易系统
发现这个很好用啊,开始还挺鄙视这种交易系统,认为太简单了,看过 拉里.威廉斯的《短线交易秘诀》后感觉还挺好用的。比上一个好用多了。如果能够把日趋势考虑进去,做到日间的,收益率感觉还能上去。看的比较粗糙,分别用前一日开盘和收盘的差,以及最高和最低差表示波幅回测了下,发现用最高价最低价的差乘以0.25为区间效果不错。感觉以这个为基础可以实盘模拟啊。Params
Numeric perc(0.1);
Numeric stoploss(10); //止损
Numeric takeprofit(20); //止盈
Vars
Bool con1; //开多条件
Bool con2; //开空条件
Numeric enterprice;
NumericSeries HighestAfterEntry(0);
NumericSeries LowestAfterEntry(0);
Begin
con1 = high > OpenD(0) + perc*Abs(HighD(1)-LowD(1)); //先用开盘收盘表示前一日波幅
con2 = Low< OpenD(0) - perc*Abs(HighD(1)-LowD(1));
If(MarketPosition==0 And con1)
{
Buy(1,OpenD(0) + perc*Abs(OpenD(1)-CloseD(1)));
HighestAfterEntry=High;
}
If(MarketPosition==0 And con2)
{
SellShort(1,OpenD(0) - perc*Abs(OpenD(1)-CloseD(1)));
LowestAfterEntry=Low;
}
/*止损止盈部分*/
If (MarketPosition!=0 And BarsSinceEntry!=0)
{
If(MarketPosition==-1)
{
LowestAfterEntry = Min(LowestAfterEntry,Low);
If(High>EntryPrice And LowestAfterEntry>EntryPrice-takeprofit)
{
BuyToCover(1,EntryPrice-takeprofit); //空单止盈
LowestAfterEntry=0;
} Else If(High>EntryPrice+stoploss) //空单止损
{
BuyToCover(1,EntryPrice+stoploss);
LowestAfterEntry=0;
}
}
If(MarketPosition==1)
{
HighestAfterEntry = Max(HighestAfterEntry,High);
If(Low<EntryPrice And HighestAfterEntry>EntryPrice+takeprofit)
{
Sell(1,EntryPrice+takeprofit); //多单止盈
LowestAfterEntry=0;
} Else If(Low<EntryPrice-stoploss)
{
Sell(1,EntryPrice-stoploss); //多单止损
LowestAfterEntry=0;
}
}
If((Date[-1]!=InvalidInteger && Date!=Date[-1])||(Date[-1]==InvalidInteger && Date < CurrentDate))//当日平仓
{
Sell(1,Close);
BuyToCover(1,Close);
}
}
EndPS:止损止盈从第一个粘贴过来的 《短线交易秘诀》里第八章中介绍的那个震荡系统和dual thrust系统个人感觉本质上是一样的吧,都是找多空的力量。只不过震荡系统用的是开盘价,dual thrust用的是收盘价,震荡系统用的是4日的均值,dual thrust用的是最值。应该都算开盘区间突破中的一种。不过二楼是通过前日波幅找这个区间,震荡系统和dual thrust是根据多空力量找这个区间。而《完美的日内交易商》中的30分钟突破发和《日内交易策略-谷物期货实战指南》则是通过开盘后的几根K线走出的高点和低点,并配合不同的确认条件来确定区间。 学习啊 同行 学习 回复就能涨积分吗
页:
[1]