RegoloB in easylanguage (1 Viewer)

Ho convertito REGOLO B in linguaggio Easylanguage per Tradestation (versione 2000i).
Un paio di osservazioni:

1) Ho privilegiato innanzitutto la leggibilità del codice, a scapito forse di una conversione puntuale del sistema originale per Excel.
Questo a giovamento di quanti vogliano studiarlo per comprenderne i punti di forza (o debolezza), ed è oltremodo evidente che il primo passo per migliorare un sistema è comprenderne in pieno il funzionamento :)

2) Ho notato un'incoerenza logica nel codice. Da quel che ho capito il canale IDC ha funzione di filtro per i segnali generati dagli altri due indicatori, ovvero se, per esempio, il canale IDC viene bucato (BreakOut) allora si controlla se MACD e KC "vanno dalla stessa parte": se verso l'alto (+1 nel mio codice) allora long, se verso il basso (-1 nel mio codice) allora short.
Ora, abbiamo che potremmo avere un breakout verso il basso dell'IDC e contemporaneamente MACD = KC = +1 e avremmo comunque un segnale long. Ciò sembra in contraddizione con la logica che vorrebbe come prerequisisto per un segnale long SOLO un breakout verso l'alto dell'IDC.
Allora ho provato a riscrivere il codice trasformando l'indicatore IDC in modo da indicarmi non semplicemente la presenza di un breakout o meno (false = no breakout, true = breakout) ma anche la direzione dello stesso (0 = no breakout, +1 = up breakout, -1 = down breakout) e chiedere che il long venga generato solo se MACD = KC = IDC = +1 e lo short solo se MACD = KC = IDC = -1.
Pensavo di ottenere risultati equivalenti (esisteva la possibilità che non si verificassero mai contemporaneamente - nella "realtà" dei dati storici - le condizioni le condizioni IDC = -1 AND MACD = KC = 1, o le condizioni speculari per lo short), in tal caso i risultati sarebbero stati sovrapponibili. In realtà si ottiene un peggioramento EVIDENTE dei risultati (un disastro insomma ...).
Questo mi porta a concludere che il filtro IDC faccia inconsapevolmente, o comunque in maniera poco ortodossa, da filtro per la volatilità, non avendo alcun valore (se non peggiorativo) la conoscenza della direzione con cui si esce dal canale.
Mi piacerebbe a riguardo un commento di quanti l'hanno sviluppato.

Buona serata a tutti,
Funes


REGOLO B

Input: ChSmooth(10),
IDCSmooth(35),
IDCFactor(1.35),
KCFactor(0.95),
XAvgFast(13),
XAvgSlow(23),
XAvgDiff(9);

Vars: AvgHigh(0),
AvgLow(0),
AvgClose(0),
MidValue(0),
Spread(0),
IDCUpper(0),
IDCLower(0),
IDCPrice(0),
KCUpper(0),
KCLower(0),
KCPrice(0),
FastEMA(0),
SlowEMA(0),
DiffEMA(0),
KCdir(0),
MACDdir(0),
BreakOut(false);

{-------- common channels calculations -----------}

AvgHigh = Average(High, ChSmooth);
AvgLow = Average(Low, ChSmooth);
MidValue = (AvgHigh + AvgLow)/2;
Spread = (AvgHigh - AvgLow)/2;

{----------------- IDC filter --------------------}

IDCUpper = MidValue + Spread*IDCFactor;
IDCLower = MidValue - Spread*IDCFactor;
IDCPrice = Average(Close, IDCSmooth);

if IDCPrice < IDCLower or IDCPrice > IDCUpper
then BreakOut = true
else BreakOut = false;

{---------------- KC direction -------------------}

KCUpper = MidValue + Spread*KCFactor;
KCLower = MidValue - Spread*KCFactor;
KCPrice = Close;

if KCPrice > KCUpper then KCdir = +1
else
if KCPrice < KCLower then KCdir = -1;

{--------------- MACD direction ------------------}

FastEMA = XAverage(Close, XAvgFast);
SlowEMA = XAverage(Close, XAvgSlow);
DiffEMA = XAverage(FastEMA - SlowEMA, XAvgDiff);

if FastEMA - SlowEMA > DiffEMA
then MACDdir = +1
else MACDdir = -1;

{--------------- trading rules -------------------}

if BreakOut and MACDdir = KCdir
then begin
if MACDdir = +1 then buy next bar at Open
else
if MACDdir = -1 then sell next bar at Open;
end;
 

alan1

Forumer storico
La funzione dell'IDC (Indicatore Di Congestione da me inventato) è quella di leggere se il mercato è in congestione.
Quando la media lunga è dentro il canale allora siamo in congestione.

Si sa che i TS trend follower fanno disastri nelle fasi laterali (congestive),
pertanto quando siamo in congestione i segnali vengono bloccati, non si generano inversioni.

Grazie a Dio l'IDC svolge esattamente (ed egregiamente) la funzione per cui è stato inventato :) .
 
alan1 ha scritto:
La funzione dell'IDC (Indicatore Di Congestione da me inventato) è quella di leggere se il mercato è in congestione.
Quando la media lunga è dentro il canale allora siamo in congestione.

Questo era chiaro.
Un po' meno il fatto il fatto che uscire da una congestione "dal basso" sia un buon segnale per guardare ad un possibile trade "verso l'alto" (ovvero andare long).

Cmq sia, a quanto pare hai fatto un ottimo lavoro :)

Ciao
 

alan1

Forumer storico
funes ha scritto:
alan1 ha scritto:
La funzione dell'IDC (Indicatore Di Congestione da me inventato) è quella di leggere se il mercato è in congestione.
Quando la media lunga è dentro il canale allora siamo in congestione.

Questo era chiaro.
Un po' meno il fatto il fatto che uscire da una congestione "dal basso" sia un buon segnale per guardare ad un possibile trade "verso l'alto" (ovvero andare long).

Cmq sia, a quanto pare hai fatto un ottimo lavoro :)

Ciao


Non ha importanza da che parte esce,
gli indicatori che determinano il tipo di segnale sono il Macd filtrato dal Keltner,
l'IDC da solo il via libera oppure li blocca.


Comunque ad onore di cronaca se vuoi vedere l'IDC come un indicatore di segnale lo puoi fare,
ma ovviamente il Long si ha quando una media corta attraversa dal basso verso l'alto la media lunga,
quindi è il canale (medie 10 periodi) che attraversando la media lunga (35 periodi) fornisce l'eventuale segnale Long,
non il contrario.
 
alan1 ha scritto:
Comunque ad onore di cronaca se vuoi vedere l'IDC come un indicatore di segnale lo puoi fare,
ma ovviamente il Long si ha quando una media corta attraversa dal basso verso l'alto la media lunga, quindi è il canale (medie 10 periodi) che attraversando la media lunga (35 periodi) fornisce l'eventuale segnale Long, non il contrario.

Cacchiolina, hai ragione! :D
Tale è l'abitudine a considerare la media (veloce) che esce da un canale (lento) che non mi ero accorto che hai scelto di fare l'opposto in termini di smoothing, e che quindi i breakout vanno interpretati, in termini di direzioni, al contrario di quanto si farebbe solitamente.

Grazie,
funes
 

yquem

Nuovo forumer
funes ha scritto:
Ho convertito REGOLO B in linguaggio Easylanguage per Tradestation (versione 2000i).
Un paio di osservazioni:

ciao funes,
ho messo il codice in TS e mi pare risultino valori diversi da quelli forniti "ufficialmente".
anche i vari trades non mi corrispondono al file regolo plus.

ecco quello che sputa TS:(03/01/95-20/01/03)

Performance Summary: All Trades

Total Net Profit $53.358,61 Open position P/L ($-1.505,00)
Gross Profit $90.424,23 Gross Loss ($37.065,63)

Total # of trades 82 Percent profitable 58,54%
Number winning trades 48 Number losing trades 34

Largest winning trade $7.175,31 Largest losing trade ($4.058,00)
Average winning trade $1.883,84 Average losing trade ($1.090,17)
Ratio avg win/avg loss 1,73 Avg trade (win & loss) $650,71

Max consec. Winners 7 Max consec. losers 4
Avg # bars in winners 24 Avg # bars in losers 13

Max intraday drawdown ($6.174,60)
Profit Factor 2,44 Max # contracts held 2
Account size required $6.174,60 Return on account 864,16%

Strategy Analysis

Net Profit $53.358,62 Open Position ($1.505,00)
Gross Profit $90.424,25 Interest Earned $0,00
Gross Loss ($37.065,63) Commission Paid $0,00

Percent profitable 59,04% Profit factor 2,44
Ratio avg. win/avg. loss 1,69 Adjusted profit factor 1,78

Annual Rate of Return 27,44% Sharpe Ratio 0,76
Return on Initial Capital 533,59% Return Retracement Ratio 2,02
Return on Max. Drawdown 611,23% K-Ratio 4,08

Buy/Hold return 26,22% RINA Index 39,31
Cumulative return 141,55% Percent in the market 95,03%

Adjusted Net Profit $34.084,17 Select Net Profit $39.176,68
Adjusted Gross Profit $77.506,50 Select Gross Profit $76.242,31
Adjusted Gross Loss ($43.422,33) Select Gross Loss ($37.065,63)

Total Trade Analysis

Number of total trades 83
Average trade $642,88 Avg. trade ± 1 STDEV $2.723,12 / ($1.437,37)
1 Std. Deviation (STDEV) $2.080,25 Coefficient of variation 323,59%

Run-up
Maximum Run-up $11.853,39 Max. Run-up Date 21/09/01
Average Run-up $2.468,33 Avg. trade ± 1 STDEV $4.936,66 / $0,01
1 Std. Deviation (STDEV) $2.468,33 Coefficient of variation 100,00%

Drawdown
Maximum Drawdown ($4.058,00) Max. Drawdown Date 13/01/97
Average Drawdown ($1.048,79) Avg. trade ± 1 STDEV ($248,33) / ($1.849,24)
1 Std. Deviation (STDEV) $800,46 Coefficient of variation 76,32%

Reward/Risk Ratios
Net Prft/Largest Loss 13,15 Net Prft/Max Drawdown 13,15
Adj Net Prft/Largest Loss 8,40 Adj Net Prft/Max Drawdown 8,40

Outlier Trades Total Trades Profit/Loss
Positive outliers 2 $14.181,94
Negative outliers 0 $0,00
Total outliers 2 $14.181,94


Efficiency Analysis

Total Efficiency
Average Total Efficiency 2,55% Avg. trade ± 1 STDEV 52,09% / -46,99%
1 Std. Deviation (STDEV) 49,54% Coefficient of variation 1942,71%

Entry Efficiency
Average Entry Efficiency 61,49% Avg. trade ± 1 STDEV 92,69% / 30,30%
1 Std. Deviation (STDEV) 31,19% Coefficient of variation 50,73%

Exit Efficiency
Average Exit Efficiency 41,06% Avg. trade ± 1 STDEV 64,61% / 17,50%
1 Std. Deviation (STDEV) 23,55% Coefficient of variation 57,36%

Open Position Analysis

Open Average Percent
Position Trade of Average
Unrealized Profit/Loss ($1.505,00) $642,88 -334,10%
Time in trade (Days) 14,00 33,98 41,21%


in particolare mi sembra eccessivo il max dd di oltre 6000pt
come pure il total net profit di 53358 inferiore a quello dichiarato sul sito del regolo team.

qualcuno può in qualche modo illuminarmi?
per le altre traduzioni in easy language di regolo a chi posso rivolgermi?

complimenti sinceri a tutto il team.
saluti
 

tsxela

Nuovo forumer
volevo soddisfare qualche curiosità:
il ts che hai tradotto funziona solo in stop and reverse senza alcun stoploss?
oppure hai provato o pensi di metterceli?
dove hai trovato lo schema per tradurre tale ts?
grazie e ciao :-o
 

tsxela

Nuovo forumer
questo è invece quello che ho ottenuto da una prova di applicazione:
Performance Summary: All Trades

Total Net Profit $90.232,01 Open position P/L $2.020,00
Gross Profit $113.407,01 Gross Loss ($23.175,00)

Total # of trades 92 Percent profitable 65,22%
Number winning trades 60 Number losing trades 32

Largest winning trade $7.160,00 Largest losing trade ($2.790,00)
Average winning trade $1.890,12 Average losing trade ($724,22)
Ratio avg win/avg loss 2,61 Avg trade (win & loss) $980,78

Max consec. Winners 5 Max consec. losers 2
Avg # bars in winners 26 Avg # bars in losers 12

Max intraday drawdown ($3.860,00)
Profit Factor 4,89 Max # contracts held 1
Account size required $3.860,00 Return on account 2337,62%

Performance Summary: Long Trades

Total Net Profit $49.796,00 Open position P/L $0,00
Gross Profit $60.336,00 Gross Loss ($10.540,00)

Total # of trades 46 Percent profitable 67,39%
Number winning trades 31 Number losing trades 15

Largest winning trade $7.160,00 Largest losing trade ($1.980,00)
Average winning trade $1.946,32 Average losing trade ($702,67)
Ratio avg win/avg loss 2,77 Avg trade (win & loss) $1.082,52

Max consec. Winners 10 Max consec. losers 3
Avg # bars in winners 26 Avg # bars in losers 12

Max intraday drawdown ($4.345,00)
Profit Factor 5,72 Max # contracts held 1
Account size required $4.345,00 Return on account 1146,05%

Performance Summary: Short Trades

Total Net Profit $40.436,00 Open position P/L $2.020,00
Gross Profit $53.071,00 Gross Loss ($12.635,00)

Total # of trades 46 Percent profitable 63,04%
Number winning trades 29 Number losing trades 17

Largest winning trade $6.800,00 Largest losing trade ($2.790,00)
Average winning trade $1.830,03 Average losing trade ($743,24)
Ratio avg win/avg loss 2,46 Avg trade (win & loss) $879,04

Max consec. Winners 5 Max consec. losers 3
Avg # bars in winners 27 Avg # bars in losers 12

Max intraday drawdown ($4.285,00)
Profit Factor 4,20 Max # contracts held 1
Account size required $4.285,00 Return on account 943,66%
 

yquem

Nuovo forumer
questo report è stato ottenuto plottando il codice sopra pari pari?
se sì in quale intervallo temporale?
ciao
 

Users who are viewing this thread

Alto