咨詢內容:
////////////////////////////
原來的TB的策略
?
策略說明: 基于通道突破的判斷
//?系統要素:
// 1.?計算50根k線最高價的區間
// 2.?計算30根k線最低價的區間
//
//?入場條件:
// ????1.價格高于50根K線最高價的區間入場
//?出場條件:
// 1.?當前價格低于30根K線最低價的區間出場
// 2.?當前價格低于入場價一定ATR波動率幅度出場
//
//----------------------------------------------------------------------//
Params
Numeric?Length1(50); //長周期區間參數
Numeric?Length2(30); //短周期區間參數
Numeric?IPS(4); //保護止損波動率參數
Numeric?AtrVal(10); //波動率參數
Vars?
NumericSeries?ProtectStopL;
NumericSeries?ATR;
NumericSeries?Upperband;
NumericSeries?Lowerband;?
NumericSeries?Exitlong;
NumericSeries?Exitshort;
Numeric?L2;
Numeric?L1;
Numeric?Minpoint;
Begin
//?集合競價和小節休息過濾
If(BarStatus?==?2?And?IsCallAuctionTime)?Return;
Minpoint?=?Minmove*PriceScale;
????ATR?=?AvgTrueRange(AtrVal); ????? //定義ATR
L1?=?Max(Length1,Length2); ????? //出場周期選擇較大的區間參數
L2?=?Min(Length1,Length2); ????? //出場周期選擇較小的區間參數
Upperband?=?Highest(High,?L1); ????? //長周期最高價區間
Lowerband?=?lowest(Low,L1); ?? ???? ? //長周期最低價區間
Exitlong?=?Lowest(Low,L2); ????? //短周期最低價區間
Exitshort?=?Highest(high,L2); ????? //短周期最高價區間
//系統入場?
If(Marketposition?==?0?and?High?>=?Upperband[1]?+?Minpoint?And?Vol?>?0) ?????//價格大于長周期最高價區間入場做多
{
Buy(0,?Max(Open,?Upperband[1]?+?Minpoint));
ProtectStopL?=?Entryprice?-?IPS*ATR[1];
}
//系統出場
If(MarketPosition?==?1?and?BarsSinceEntry?>0?And?Vol?>?0)
{
If(?Low?<=?ProtectStopL[1]?and?ProtectStopL[1]?>=?Exitlong[1])??//價格低于入場價以下一定ATR幅度止損
{
Sell?(0,Min(Open,ProtectStopL[1]));
}
Else?if?(Low?<=?Exitlong[1]?-?Minpoint)????????????????????//價格低于短周期最低價區間出場
{
Sell(0,?Min(?Open,?Exitlong[1]?-?Minpoint));
}
}
End
//////////////////////////////////////////////////////////////////
?
///////////////////////////////////////////////////////////////////
我自己轉換的PEL策略
INPUT:LENGTH1(50,1,100,5),LENGTH2(30,1,100,5),IPS(4,1,100,5),ATRVAL(10,1,100,5);
SS:=2;
MINPOINT:=MINDIFF()*MULTIPLIER();
ATR:=MA(TR,ATRVAL);
L1:=MAX(LENGTH1,LENGTH2);
L2:=MIN(LENGTH1,LENGTH2);
UPPERBAND:=HHV(H,L1);
LOWERBAND:=LLV(L,L1);
EXITLONGING:=LLV(L,L2);
EXITSHORTING:=HHV(H,L2);
UPPERBAND1:=REF(UPPERBAND,1);
ATR1:=REF(ATR,1);
PROTECTSTOPL :=ENTERPRICE()-IPS*ATR1;
PROTECTSTOPL1:=REF(PROTECTSTOPL,1);
EXITLONGING1:=REF(EXITLONGING,1);
IF HOLDING =0 AND H>(UPPERBAND1 +MINPOINT) AND VOL>0? THEN BEGIN
? BUY(1,SS,MAX(OPEN,UPPERBAND1+MINPOINT));
? PROTECTSTOPL :=ENTERPRICE()-IPS*ATR1;
END
IF ( HOLDING>0 AND ENTERBARS>0 AND VOL>0 ) THEN BEGIN
? IF ( LOW <PROTECTSTOPL1 AND PROTECTSTOPL1>=EXITLONGING1 ) THEN BEGIN
? SELL(1,SS,MIN(OPEN,PROTECTSTOPL1));
? END
? IF ( LOW<=EXITLONGING1-MINPOINT ) THEN BEGIN
? SELL(1,SS,MIN(OPEN,EXITLONGING1-MINPOINT));
? END
END
////////////////////////////////////////////////////
但是為什么轉出來的策略回測數據都是0呢
?
?
?
?