Aiuto per la codifica - pagina 61

 
mladen:
Quell'indicatore sta usando la "forza del serpente" (TMA centrato) per lo smoothing e non può essere cambiato per non ricalcolare e per rimanere lo stesso. La versione "non-repainting" (end-pointed) del TMA centrato è un semplice LWMA, ma non aspettatevi di avere gli stessi risultati con esso come con il TMA centrato. Per saperne di più sul TMA centrato potete leggere qui: https: //www.mql5.com/en/forum/181241 Per quanto riguarda il cambiamento o il miglioramento di quel codice: la base di esso è un codice decompilato. Dubito che qualcuno cambierà un codice decompilato

Grazie mille Mladen per le informazioni è stato molto utile

 

Ciao,

ho scaricato questo indicatore dal web ma quando lo collego appaiono le finestre separate con 2 livelli ma non appaiono le barre.

Puoi aiutarmi a risolvere il problema?

Grazie a voi

oscillatore.mq4

File:
 

dasio,

Questo è solo un altro indicatore di vento solare (qualcuno ha cercato di cambiare qualcosa in esso).

dasio:
Ciao,

Ho scaricato questo indicatore dal web ma quando lo collego appaiono le finestre separate con 2 livelli ma non appaiono le barre.

Puoi aiutarmi a risolvere il problema?

Grazie per avermi aiutato a risolvere il problema.

oscillatore.mq4
 
mladen:
dasio, Questo è solo un altro indicatore di vento solare (qualcuno ha cercato di cambiare qualcosa in esso).

Grazie. Ma quando inizio il backtest le barre appaiono. Come può essere possibile?

Grazie a voi

 

dasio

Controlla nella scheda esperti e diario se c'è scritto qualche errore. Sui miei dati di broker funziona quindi non posso dire cosa sta succedendo sui tuoi dati di broker (forse zero divide o qualcosa di simile)

dasio:
Grazie. Ma quando avvio il backtest le barre appaiono. Come può essere possibile? Grazie
 

Mladen,

Quando scrivi un codice o guardi nel codice di qualcuno come valuti la qualità del codice? Quando scrivi un codice come testi la robustezza del codice? Grazie.

 

:)

I miei due criteri principali sono:

- semplicità (rendere un codice semplice lo rende più facile da sviluppare, migliorare e debuggare)

- l'ordine (chi pensa che un codice possa essere semplicemente gettato su un mucchio e funzionerà non ha mai guardato il proprio codice dopo un certo periodo di tempo. Inoltre, il debugging di un codice disordinato è una storia a sé)

Quando questi 2 sono soddisfatti solo allora do una seconda occhiata e solo allora lo "leggo", ma poi è una storia molto lunga quello che può essere fatto per accedere alla qualità - credo che il processo sia molto più soggettivo che oggettivo ...

nevar:
Mladen, quando scrivi un codice o guardi nel codice di qualcuno come valuti la qualità del codice?
 
drofwarc:
Ciao,

Sto cercando di adattare un indicatore che chiama iFractals e chiamare invece un indicatore frattale personalizzato che ha una funzione di periodo regolabile. L'indicatore che sto cercando di adattare è allegato. Si chiama "closesrelativejtozpreviousofractal".

closesrelativejtozpreviousofractal.mq4

Il codice traccia una freccia verso l'alto se il prezzo rompe il precedente massimo frattale e una freccia verso il basso per il contrario.

L'indicatore che sto cercando di chiamare con iCustom è anche allegato. Si chiama "Frattali - regolabile".

frattale_-_regolabile.mq4

Di seguito il mio tentativo di modificare l'indicatore originale in modo che chiami Fractals - adjustable. Il codice traccia con successo i punti sui frattali alti e bassi e il periodo del frattale è regolabile, come volevo. Il problema è con le frecce destinate a tracciare le rotture dei livelli frattali alti e bassi precedenti. Non riesco a farle tracciare correttamente.

Qualsiasi aiuto in questo senso sarebbe molto apprezzato.

Cordiali saluti,

drofwarc

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars > 0) counted_bars--;

int limit = Bars - counted_bars;

for(int i=limit; i>0; i--)

{

UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal

if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels

HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);

if(Close>HighLevel)

UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows

DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal

if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels

LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);

if(Close<LowLevel)

DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows

}

return(0);

}

Alla fine ho risolto questo problema. Il problema era una confusione di buffer.

 

Codice per fare un indicatore che salta n barre tra i segnali

Ciao a tutti,

So che è possibile fare una pausa tra un trade e l'altro, usando Sleep() o registrando un timestamp e aspettando n secondi dopo il timestamp prima di permettere un altro segnale.

Ma è possibile fare lo stesso per un indicatore.

Per esempio, vorrei essere in grado di far sì che un indicatore che traccia delle frecce all'incrocio di due medie mobili salti n barre dopo un incrocio prima di tracciare un'altra freccia. In altre parole, se si verificasse un altro incrocio prima che siano passate n barre, l'indicatore ignorerebbe l'incrocio e non traccerebbe una freccia.

Ho cercato a lungo di trovare un indicatore che faccia questo, ma non ho avuto fortuna.

Qualcuno potrebbe postare un indicatore che ha già questa caratteristica in modo che io possa studiare il codice? O magari fornirmi un esempio di codice che funziona per questa proposta in modo che io possa provare ad implementarlo.

Molte grazie,

drofwarc

 

non può visualizzare normalmente, qualcuno può aiutarmi a risolvere il problema?

#proprietà indicator_separate_window

#proprietà indicator_buffers 1

#proprietà indicator_color1 Red

#proprietà indicatore_massimo 100

#proprietà indicatore_livello1 70

#Proprietà indicatore_livello2 50

#Proprietà indicatore_livello3 30

#proprietà indicatore_minimo 0

//---- parametri di ingresso

extern int rsiperiod = 14 ;

extern int Shortperiod = 5 ;

extern int Middleperiod = 8 ;

extern int Longperiod = 13;

extern int mamode = 2 ;

//---- buffer

double RSI[]

double ShortRSI[]

double MiddleRSI[]

double LongRSI[]

doppio SMRSI[];

int periodo ;

//+------------------------------------------------------------------+

//| Funzione di inizializzazione dell'indicatore personalizzato |

//+------------------------------------------------------------------+

int init()

{

//---- indicatori

IndicatoreBuffer(5);

SetIndexBuffer(0,SMRSI);

SetIndexBuffer(1,RSI);

SetIndexBuffer(2,ShortRSI);

SetIndexBuffer(3,MiddleRSI);

SetIndexBuffer(4,LongRSI);

//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore

IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod +", "+mamode+")");

SetIndexDrawBegin(0,rsiperiodo+Lungoperiodo);

period=Shortperiod+Middleperiod+Longperiod;

return(0);

}

//+------------------------------------------------------------------+

//|Funzione di iterazione dell'indicatore personalizzata

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limite = Bars-counted_bars;

for( i=limite; i>=0; i--) RSI=iRSI(NULL,0,rsiperiodo,0,i);

for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i);

for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i);

for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);

for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}

return(0);

}

//+------------------------------------------------------------------+

Motivazione: