请帮助修改一个动态突破策略交易系统,谢谢
这是我写的,请帮助修改,并加入头寸管理语句(最下面是策略的原型语句),谢谢!
variable:Lag=20;
Today_Jitter_ER:=STD(CLOSE,30);
Yestoday_Jitter_ER:REF(STD(CLOSE,30),1);
Jitter_Change_ER:=(Today_Jitter_ER - Yestoday_Jitter_ER) / Today_Jitter_ER;
Lag := (1 + Jitter_Change_ER) * Lag;
MaxLag := HHV(Lag,20);
MinLag := LLV(Lag,60);
UpBand := MA(CLOSE,Lag) + STD(CLOSE,Lag) * 2;
DownBand := MA(CLOSE,Lag) - STD(CLOSE,Lag) * 2;
BuyPoint := HHV(HIGH,Lag);
BuyShortPoint := LLV(LOW,Lag);
SellPoint := MA(CLOSE,Lag);
SellShortPoint := MA(CLOSE,Lag);
BUY(REF(CLOSE,1) > UpBand AND CLOSE >= BuyPoint ,1 , MARKET);
BUYSHORT(REF(CLOSE,1) < DownBand AND CLOSE <= BuyShortPoint, 1, MARKET);
SELL(CLOSE <= SellPoint, 0, MARKET);
SELLSHORT(CLOSE >= SellShortPoint, 0, MARKET);
//该策略的原型自然语句
四 具体策略
T=0(今日),滞后期K=20;
今日市场波动率=stdDev(Close,30);
昨日市场波动率= stdDev(Close(-1),30);
波动率变化率=(今日市场波动率-昨日市场波动率)/今日市场波动率;
T=1(第二天),滞后期K=(1+波动率变化率)*K;
K=min(K,60); K=max(K,20);
Upband=Average(Close,K)+stdDev(close,K)*2;布林带上限
Dnband=Average(Close,K)-stdDev(close,K)*2;布林带下限
buyPoint = Highest(High,K) /滞后期的最高价,为买入点
sellPoint = Lowest(Low,K) /滞后期的最低价,为卖出点
longLiqPoint =Average(Close,K) /做多平仓点
shortLiqPoint = Average(Close,K) / 做空平仓点
If(Close of yesterday > upBand) then initiate a long position if today'smarket action >= buyPoint /如果昨日收盘价高于布林带上轨,今日市价高于买入点,则触发做多
If(Close of yesterday < dnBand) then initiate a short position if today'smarket action <= sellPoint /如果昨日收盘价低于布林带下轨,今日市价低于卖出点,则触发做空
Liquidate long position if today's market action <= longLiqPoint/回落至滞后期的移动平均价,卖出平仓
Liquidate short position if today's market action >= shortLiqPoint/回调至滞后期的移动平均价,买入平仓
只要做到先开后平就好了
if holding>0 and cond then sell();
if holding=0 then buy;
这个样子应该能做到,没平不开