HOME

*******************
20.11.2001. Теперь алгоритм "Динамического канала" реализован Сергеем Косинским для программы Метасток.
"формулы для Metastock'a"

*******************
ELA-коды функций, индикаторов и торговых систем к статье "Трендовый индикатор прорыва динамического ценового канала". (
"Современный трейдинг", №4, 2001 г.)

1. Базовая функция "$NRTR_DT". Рассчитывает динамику процентного скользящего фильтра. Вариант предложенный Дмитрием Толстоноговым:

{*************************
"New Russian" Trailing Reverse Function based on percentage channel
Coded by Dmitri Tolstonogov (aka DT)
**************************}
Inputs: K(Numeric);

Vars: Trend(0), HPrice(C), LPrice(C), Reverse(0);

if Trend >=0 then begin
if C > HPrice then HPrice = C;
Reverse = HPrice*(1 - K*.01);
if C <= Reverse then begin
Trend = -1;
LPrice = C;
Reverse = LPrice*(1 + K*.01);
end;
end;
if Trend <= 0 then begin
if C < LPrice then LPrice = C;
Reverse = LPrice*(1 + K*.01);
if C > Reverse then begin
Trend = 1;
HPrice = C;
Reverse = HPrice*(1 - K*.01);
end;
end;
$NRTR_DT = Reverse;
{************************}

2. Индикатор тренда "1_NRTR_DT".

{***************************************************
Description : This Indicator plots Nitwit Radical Trailing Reverse level
Coded By : Konstantin Kopyrkin (aka konkop) 08.06.2001
****************************************************}

Inputs: K(10);
Value1 = $NRTR_DT(K);
Plot1(Value1,"NRTR_DT");

3. Торговый сигнал "1_NRTR_DT".

В сигнал добавлен фрагмент кода, рассчитывающий математическое ожидание системы и отправляющий результаты в файл C:\NRTR_DT.csv Методика описана Дмитрием Толстоноговым в 4-м номере журнала "Современный трейдинг" . Для активизации этого фрагмента кода необходимо удалить фигурные скобки, выделенные красным цветом.

Inputs: K(10), Short(False);

If C > $NRTR_DT(K) Then Buy("EnL") at Close;
If C < $NRTR_DT(K) Then Begin
If Short = False Then ExitLong("ExL") at Close
Else Sell("EnS") at Close;
End;

{

{R Multiples and Expentancy Output
based on article by Dmitri Tolstonogov in "Modern Trading magazine" #4,2001
www.m-trading.ru}

Vars: R1(1), RMult(1), Trades(0), Pprofit(0), SumRMult(0), EO(0);
R1 = K;
Trades = TotalTrades;
Pprofit = IFF(EntryPrice(1) = 0, 0, 100*((ExitPrice(1)/EntryPrice(1))-1)); {Percentage profit/loss}
RMult = IFF(R1=0,0,Pprofit/R1);

If barnumber = 1 then
Print(File("C:\NRTR_DT.csv"),"Date",",", "Trades",",", "Initial Risk",",", "Profit(%)",",", "R Multiple",",","Expectancy");
If Trades<>Trades[1] then begin
SumRMult = SumRMult[1] + RMult;
EO = SumRMult/Trades;
Print(File("C:\NRTR_DT.csv"),ELDateToString(Date),",", Trades:5:0,",", R1,",", Pprofit,",", RMult,",",EO);
End;
}

4. Торговый сигнал "$NRTR_2data" для двух данных различных временных масштабов. Data1 - меньший тайм-фрейм, Data2 - больший тайм-фрейм. (торговля по-тренду)

{****************
Never Random Trailing Reverse Long/Short based on NRTR function
This signal Buy Long on Data1 only if on Data2 detected UpTrend
and Sell Short on Data1 only if on Data2 detected DownTrend
Coded By Konstantin Kopyrkin (aka konkop) 08.06.2001
Ekaterinburg, Russia
konkop@mail.ur.ru
*****************}
Inputs:
K1(5), {Percentage trailing reverse level for Data1}
K2(10);{Percentage trailing reverse level for Data2}

Vars: Up_trend(false), Dn_trend(false);

If C of Data2 > $NRTR_DT(K2) of Data2 Then begin
Up_trend = True;
Dn_trend = False;
End;

If C of Data2 < $NRTR_DT(K2) of Data2 Then begin
Up_trend = False;
Dn_trend = True;
End;

If Up_trend = True and C > $NRTR_DT(K1) Then Buy at Close;
If Up_trend = True and C < $NRTR_DT(K1) Then ExitLong at Close;

If Dn_trend = True and C < $NRTR_DT(K1) Then Sell at Close;
If Dn_trend = True and C > $NRTR_DT(K1) Then ExitShort at Close;

5. Функция "$NRTR_WATR". Рассчитывает скользящий фильтр на основе взвешенного ATR.

{************************************
North Russian Trailing Reverse Function
based on Weighted Average True Range with Multiplier.
Coded by Konstantin Kopyrkin (aka konkop)
and Dmitri Tolstonogov (aka DT)
Ekaterinburg-Irkutsk, Russia
08.06.2001 konkop@mail.ur.ru
*************************************}

Inputs: Len(Numeric), {WAverage TrueRange Length}
M(Numeric); {Multiplier}
Vars: Trend(0), HPrice(C), LPrice(C), Reverse(0), TrueHi(H), TrueLo(L), TrueRng(0), WATR(0);

{Calculate Weighted Average TrueRange}

If Close[1] > High Then TrueHi = Close[1] Else TrueHi = High; {Calculate TrueHigh}

If Close[1] < Low Then TrueLo = Close[1] Else TrueLo = Low; {Calculate TrueLow}

TrueRng = TrueHi - TrueLo; {Calculate TrueRange}

WATR = WAverage(TrueRng,Len); {Calculate WATR}

{Calculate Trailing Reverse Level}

if Trend >=0 then begin {UpTrend}
if C > HPrice then HPrice = C;
Reverse = HPrice - M*WATR;
if C < Reverse then begin
Trend = -1;
LPrice = C;
Reverse = LPrice + M*WATR;
end;
end;
if Trend <= 0 then begin {DownTrend}
if C < LPrice then LPrice = C;
Reverse = LPrice + M*WATR;
if C >= Reverse then begin
Trend = 1;
HPrice = C;
Reverse = HPrice - M*WATR;
end;
end;

$NRTR_WATR = Reverse;

6. Трендовый индикатор "1_NRTR_WATR"

Inputs: Len(15), M(2);

Plot1($NRTR_WATR(Len,M));

7. Торговый сигнал "1_NRTR_WATR".

Inputs:
Len(15), {ATR Lenght}
M(2), {ATR Multiplier}
Short(False);{Enable Short Trade}


If C > $NRTR_WATR(Len,M) Then Buy at Close;
If C < $NRTR_WATR(Len,M) and Short = False Then ExitLong at Close;
If C < $NRTR_WATR(Len,M) and Short = True Then Sell at Close;

8. Торговый сигнал "$NRTRwATR_2data" для двух данных различных временных масштабов. Data1 - меньший тайм-фрейм, Data2 - больший тайм-фрейм. (Торговля по-тренду)

{****************
Never Random Trailing Reverse Long/Short based on NRTR_WATR function
This signal Buy Long on Data1 only if on Data2 detected UpTrend
and Sell Short on Data1 only if on Data2 detected DownTrend
Coded By Konstantin Kopyrkin (aka konkop) 08.06.2001
konkop@mail.ur.ru
*****************}
Inputs: Len1(10), Len2(15), M1(1), M2(2);

Vars: Up_trend(false), Dn_trend(false);

If C of Data2 > $NRTR_WATR(Len2,M2) of Data2 Then begin
Up_trend = True;
Dn_trend = False;
End;

If C of Data2 < $NRTR_WATR(Len2,M2) of Data2 Then begin
Up_trend = False;
Dn_trend = True;
End;

If Up_trend = True and C > $NRTR_WATR(Len1,M1) Then Buy at Close;
If Up_trend = True and C < $NRTR_WATR(Len1,M1) Then ExitLong at Close;

If Dn_trend = True and C < $NRTR_WATR(Len1,M1) Then Sell at Close;
If Dn_trend = True and C > $NRTR_WATR(Len1,M1) Then ExitShort at Close;

Файл ELA с некоторыми формулами и стратегиями, приведенными выше.

(с) konkop, 2001

HOME

 

 

Hosted by uCoz