RegoloB in easylanguage

funes ha scritto:
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;



Buongiorno, sono un neofita di Omega. Mi potete spiegare come trasportare il tds descritto in easylanguge p.e. e quindi in Omega?.
Ho letto il manuale del Easy e dell'Omega ma non ci sono arrivato comunque. Sono fermo al copia e incolla. Help me.
Grazie in anticipo.
 
funes ha scritto:
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;







AIUTOOO. Io e giorosa siamo messi male. Spiegateci per favore come inserire il tds in Omega. O il manuale è fatto male o, molto più probabile, siamo vicini alla fusione. Grazie.
Bye.
 
su tradersite.it c'è un tutorials che fa al caso vostro.
se non siete iscritti mandatemi un mp che vi mando il file.
ciao
 
yquem ha scritto:
su tradersite.it c'è un tutorials che fa al caso vostro.
se non siete iscritti mandatemi un mp che vi mando il file.
ciao


Grazie mille. Trovato il sito e registrato. Non capisco come mai però mi da il segnale di errore con Word not reconized by Easylanguage.
Se inserisco in "signal" la prima parte fino a "commom channel cal" tutto ok. Poi da "common channell.." mi dà l'errore.
Io intanto provo e riprovo fino a far scoppiare il pc in attesa di un'aiuto quanto mai gradito, grazie.
Bye.
 
wdgigi ha scritto:
yquem ha scritto:
su tradersite.it c'è un tutorials che fa al caso vostro.
se non siete iscritti mandatemi un mp che vi mando il file.
ciao


Grazie mille. Trovato il sito e registrato. Non capisco come mai però mi da il segnale di errore con Word not reconized by Easylanguage.
Se inserisco in "signal" la prima parte fino a "commom channel cal" tutto ok. Poi da "common channell.." mi dà l'errore.
Io intanto provo e riprovo fino a far scoppiare il pc in attesa di un'aiuto quanto mai gradito, grazie.
Bye.

Scusate, tutto ok. Si è accesa la lampadina.
 

Users who are viewing this thread

Back
Alto