АмиБрокер. Стратегия Zero-Lag

Реализация скользящей средней с нулевым запаздыванием.

zero-lag moving average

Код включает в себя как код индикатора, так и торговую стратегию, основанную на среднем с нулевым запаздыванием. Формула может быть использована в окне автоматического анализа (для тестирования на истории) и в виде графика. Чтобы использовать его, введите формулу в редакторе Afl, затем нажмите кнопку “Insert Indicator”, чтобы увидеть график, или нажмите “Backtest”, чтобы выполнить тест стратегии на исторических данных.

Формула стратегии Zero-Lag

// Zero-Lag Indicator for AmiBroker 
// 

Length = Param("Length", 32, 0, 100 ); 
GainLimit = Param("Gain limit", 22, 1, 100 ); 
Threshold = Param("Threshold", 0.75, 0.1, 10, 0.01 ); 

alpha = 2 / ( Length + 1 ); 

iEMA = AMA( Close, alpha ); 

EC = Close[ 0 ]; 

for( bar = 0; bar < BarCount; bar++ ) 
{ 
 EC1 = EC; 

 LeastError = 1e9; 
 BestEC = 0; 

 for( gain = -0.1 * GainLimit; gain < 0.1 * GainLimit; gain += 0.1 ) 
 { 
   EC = alpha * ( iEMA[ bar ] + gain * ( Close[ bar ] - EC1 ) ) + ( 1 - alpha ) * EC1; 

   Erro = abs( Close[ bar ] - EC ); 

   if( Erro < LeastError ) 
   { 
    LeastError = Erro; 
    BestEC = EC; 
   } 
 } 
 iEC[ bar ] = BestEC;   
 iLeastError[ bar ] = LeastError; 
} 
Plot( iEMA, "EMA", colorRed ); 
Plot( iEC, "EC" + _PARAM_VALUES(), colorYellow, styleThick ); 
Plot( C, "Close", ParamColor("Color", colorGreen ), ParamStyle("Style") | GetPriceStyle() ); 

// strategy rules 
Buy = Cross( iEC, iEMA ) AND 100 * iLeastError / Close > Threshold; 
Short = Cross( iEMA, iEC ) AND 100 * iLeastError / Close > Threshold; 
Sell = Short; 
Cover = Buy; 
// trade on next bar open 
SetTradeDelays( 1, 1, 1, 1 ); 
BuyPrice = SellPrice = CoverPrice = ShortPrice = Open;
Erenbur

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *