wxxx 发表于 2012-11-1 21:20:53


//Table 37.1  第三天反着做
if MarketPosition<1 and C<L and C<L then Buy('', DEFAULT, O[-1] -.33*MA(krange,3), 0, OT_Limit, OB_NextBar,  '');
if MarketPosition=1 then Sell('', DEFAULT, H, 0, OT_Limit, OB_NextBar, '');
if MarketPosition=1 then Sell('', DEFAULT, L-(MinMove/PriceScale), -1, OT_Stop, OB_NextBar, '');
if MarketPosition=1 then SetExitOnClose;
if MarketPosition>-1 and  C>H and C>H then SellShort('', DEFAULT, O[-1] +.33*MA(krange,3), 0, OT_Limit, OB_NextBar,  '');
if MarketPosition=-1 then BuyToCover('', DEFAULT, L, 0, OT_Limit, OB_NextBar, '');
if MarketPosition=-1 then BuyToCover('', DEFAULT, H+(MinMove/PriceScale), -1, OT_Stop, OB_NextBar, '');
if MarketPosition=-1 then SetExitOnClose;
{
如果连续2天收盘价小于前一天的最低价,那么下限价单,
把开盘价减去3天平均振幅的50%作为买入点,持仓过夜。
第二天在今天的最高价兑现利润,或把止损单设置在昨天最低价下面一个基点的地方。
如果市场价格没有达到这2个价格,那么收盘前出场。

反之则做空。
}

wxxx 发表于 2012-11-1 21:43:01


//Table 37.2  
Variable:x(0),y(0);
Input:n(5);
if C<MA(L,5) then x=1; else x:=0;
if C>MA(H,5) then y=1; else y:=0;
if MarketPosition<1 and LLV(x,3)=1 and C<C and C<Cthen Buy('', DEFAULT, 0, 0, OT_Market, OB_NextBar,  '');
if MarketPosition=1 and BarsSinceEntry>0 then Sell('', DEFAULT, H, 0, OT_Limit, OB_NextBar, 's1');
if MarketPosition=1 and BarsSinceEntry>0 then Sell('', DEFAULT, L-(MinMove/PriceScale), -1, OT_Stop, OB_NextBar, 's2');
if MarketPosition=1 and BarsSinceEntry>1 then SetExitOnClose;
if MarketPosition>-1 and LLV(y,3)=1 and C>C and C>C then SellShort('', DEFAULT, 0, 0, OT_Market, OB_NextBar,  '');
if MarketPosition=-1 and BarsSinceEntry>0 then BuyToCover('', DEFAULT, L, 0, OT_Limit, OB_NextBar, 'bc1');
if MarketPosition=-1 and BarsSinceEntry>0 then BuyToCover('', DEFAULT, H+(MinMove/PriceScale), -1, OT_Stop, OB_NextBar, 'bc2');
if MarketPosition=-1 and BarsSinceEntry>1 then SetExitOnClose;
{
如果连续2天收盘价小于前一天的收盘价,且收盘价连续3天小于最低价
的5天均值(LLV(x,3)=1),那么就在第二天开盘买入,连续持仓过夜2次,在第三天,
把前一天的最高价作为利润目标,止损点则是前一天最低价减去一个基点。
如果市场没有达到这2个价格,收盘前出场。

反之则做空。
}对于一个开仓,有多种平仓逻辑时,可以在平仓函数里填上ExitName,查看交易明细,看到底是触发了哪个逻辑的平仓指令。

花生油 发表于 2012-11-4 03:56:02

学习了,谢谢诶

wxxx 发表于 2012-11-5 20:20:49

//Table 38.1  N Day System
Buy('', DEFAULT, HHV(H,20), -1, OT_Stop, OB_NextBar,  '');
SellShort('', DEFAULT, LLV(L,20), -1, OT_Stop, OB_NextBar,  '');
{
价格到达N天的做高价时用stop订单建立多头仓位;
价格达N天最低价时就做空。
该策略永久在市,不是做多就是做空。
}

wxxx 发表于 2012-11-5 20:36:19

//Table 38.3  N Day System 10天止损
if MarketPosition<1 then Buy('', DEFAULT, HHV(H,20), -1, OT_Stop, OB_NextBar,  '');
if BarsSinceEntry>=10 and (C>HHV(C,10)or H>HHV(H,10))
then Sell('', DEFAULT, 0, 0, OT_Market, OB_NextBar, 's');
if MarketPosition>-1 then  SellShort('', DEFAULT, LLV(L,20), -1, OT_Stop, OB_NextBar,  '');
if BarsSinceEntry>=10 and (C<LLV(C,10) or L<LLV(L,10))
then BuyToCover('', DEFAULT, 0, 0, OT_Market, OB_NextBar, 'bc');
{
如果你的多头仓位至少持有了10天,市场的最高价没有11天前的最高价高,收盘价也
没有11天前的收盘价高,那么第二天开盘平仓;
空头则反之。
}

wxxx 发表于 2012-11-6 20:25:39

39章,这次我们的策略用到了公共函数,rsi指标
公共函数  myRSI如下inputs:
        numericseries PriceValue,
        numericsimple Len ;                                             

variables:
        var0( 0 ),
        var1( 0 ),
        var2( 0 ),
        var3( 0 ),                     
        var4( 0 ) ;

var3=1 / Len ;
if CurrentBar = 1 then
        begin
        var0 = ( PriceValue - PriceValue ) / Len ;
        var1 = Average( Abs( PriceValue - PriceValue ), Len ) ;
        end
else
        begin
        var2 = PriceValue - PriceValue ;
        var0 = var0 + var3 * ( var2 - var0 ) ;
        var1 = var1 + var3 * ( Abs( var2 ) - var1 ) ;
        end ;

if var1 <> 0 then
        var4 = var0 / var1 ;
else
        var4 = 0 ;

myRSI = 50 * ( var4 + 1 ) ;
代码看不懂没关系,其实他和金魔方自带的rsi 相对强弱指标一样,只是,金魔方自带的rsi只是针对收盘价做的计算,而公共函数myRSI,可以对任意序列计算。Input: Length(9),n(15),b(9.15),x(14.45),z(15.0);
Variable: e(0);
e := myRSI( Close, Length ) ;
if Time>=(b*10000) and Time<=(x*10000) and e>(100-n) then Buy('', DEFAULT, 0, 0, OT_Market, OB_NextBar,  '');
if Time>=(z*10000) and Time<((z+0.01)*10000) then Sell('', DEFAULT, 0, 0, OT_Market, OB_NextBar, 's');
if  Time>=(b*10000) and Time<=(x*10000) and e<n then SellShort('', DEFAULT, 0, 0, OT_Market, OB_NextBar,  '');
if Time>=(z*10000)  and Time<((z+0.01)*10000) then BuyToCover('', DEFAULT, 0, 0, OT_Market, OB_NextBar, 'bc');
{
原书中z变量取值为15.1,这里改成了15.0
}

麒智 发表于 2012-11-6 21:14:11

精华需要定期顶一顶.........{:4_89:}

wxxx 发表于 2012-11-7 16:55:49

//Table 40.1  Fading Reversals
Input:p(2);
Variable:hh(0),ll(0);

if MarketPosition=1 and BarsSinceEntry=0 then hh:=H;
if MarketPosition=-1 and BarsSinceEntry=0 then ll:=L;

if MarketPosition<1 and H>H and C<C then Buy('', DEFAULT, 0, 0, OT_Market, OB_NextBar,  '');
if(H<=H or C>=C) then Sell('', DEFAULT, hh, 0, OT_Limit, OB_NextBar, '多头平仓:hh');
if BarsSinceEntry>0 then Sell('', DEFAULT, (ll-(MinMove/PriceScale)), -1, OT_Stop, OB_NextBar, '多头平仓:ll-');

if MarketPosition>-1 and L<L and C>C then SellShort('', DEFAULT, 0, 0, OT_Market, OB_NextBar,  '');
if (L>=L or C<=C) then BuyToCover('', DEFAULT, ll, 0, OT_Limit, OB_NextBar, '空头平仓:ll');
if BarsSinceEntry>0 then BuyToCover('', DEFAULT, (hh+(MinMove/PriceScale)), -1, OT_Stop, OB_NextBar, '空头平仓:hh+');
{
最高价大于上一根的最高价,且收盘价小于上一根的收盘价,下一根K线市价做多;
最低价小于上一根的最低价,且收盘价大于上一根的收盘价,下一根K线市价做空。

if MarketPosition<1     //表示空仓或持有空头仓位
        Buy();//如果持有空头仓位,会平掉空头仓位的同时开多仓
}

显示  “sell 非市价单价格不能缺省”。

策略可以正常运行,这里应该是一个提示,不算一个错误吧。

wxxx 发表于 2012-11-8 17:07:36

//Table 41.1  4 Day Range Expansion
Buy('', DEFAULT, O[-1] +2*MA(KRange,3), -1, OT_Stop, OB_NextBar,  '');
if BarsSinceEntry=2 then Sell('', DEFAULT, H, 0, OT_Limit, OB_NextBar, '多头止盈');
if BarsSinceEntry=2 then Sell('', DEFAULT, L, -1, OT_Stop, OB_NextBar, '多头止损');
if BarsSinceEntry=2 then Sell('', DEFAULT, 0, 0, OT_CLOSE, OB_THISBAR, '');
SellShort('', DEFAULT, O[-1] -(2*MA(KRange,3)), -1, OT_Stop, OB_NextBar,  '');
if BarsSinceEntry=2 then BuyToCover('', DEFAULT, L, 0, OT_Limit, OB_NextBar, '空头止盈');
if BarsSinceEntry=2 then BuyToCover('', DEFAULT, H, -1, OT_Stop, OB_NextBar, '空头止损');
if BarsSinceEntry=2 then BuyToCover('', DEFAULT, 0, 0, OT_CLOSE, OB_THISBAR, '');
{
进场:
明天开盘价加上3天振幅均值的2倍作为买点;
开盘价减去同样的距离作为空点。

出场:
多头:最高价兑现利润,止损点在前一天(OB_NextBar发单,所以
前一天就是今天,最低价L)的最低价,如果这2个价格都没达到,收盘
前出场。

空头:同理
}

wxxx 发表于 2012-11-9 21:03:57

//Table 41.4  9天66%动量系统
Variable:mp(0),hc(0),lc(0),xx(0);
hc:=HHV(H,9)-C;
lc:=C-LLV(L,9);
if hc>lc then xx:=hc;
if hc<lc then xx:=lc;
mp:=MarketPosition;
if mp<1 and hc>lc then Buy('', DEFAULT, O[-1] +(0.66*lc), -1, OT_Stop, OB_NextBar,  '');
if mp=1 and BarsSinceEntry>0  then Sell('', DEFAULT, EntryPrice-(1.32*xx), -1, OT_Stop, OB_NextBar, '');
if mp>-1 and lc>hc then SellShort('', DEFAULT, O[-1] -(0.66*hc), -1, OT_Stop, OB_NextBar,  '');
if mp=-1 and BarsSinceEntry>0  then BuyToCover('', DEFAULT, EntryPrice+(1.32*xx), -1, OT_Stop, OB_NextBar, '');
{
把9天的最高价减去收盘价赋值为 hc
把收盘价减去9天的最低价赋值为 lc
把这2个数值中的较大的赋值为   xx
如果hc>lc,那么第二天下stop订单,买入价是开盘价加上lc的66%;
止损点是进场价减去1.32(2*0.66)乘以xx的结果
}
页: 1 2 3 4 5 6 [7] 8 9 10 11 12
查看完整版本: 战胜金融期货市场(把小的市场优势整合成为强大的赚钱策略)