Si prega di creare un esempio riproducibile. Cioè, è necessario un codice già pronto che si possa compilare, inserire in un grafico e ottenere i risultati.
Senza questo, poche persone capiranno di cosa stiamo parlando.
Ho pensato di tagliare per non scoraggiare le persone per niente.
Ecco la versione completa:
#property indicator_separate_window // L'indicatore viene disegnato in una finestra separata#property indicator_buffers 1#property indicator_plots 1#property indicator_type1 DRAW_LINE#property indicator_color1 Aquainputstring InstrumentName = "EURJPY";
//-- Array di indicatoridouble ScreenBuffer[];
//-- Buffer dinamico --double ArrayBuffer[];
intOnInit() // Funzione speciale init()
{
//--------------------------------------------------------------------IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA);
return0; // Esci
}
//--------------------------------------------------------------------intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[])
{
int Counted_bars; // Numero di barre da azionare int copied;
//--------------------------------------------------------------------//1 input rates_total = 9667 / prev_calculated = 0 / Bars = 9667//-- allora rates_total = 9667 / prev_calculated = 9667 / Bars = 9667//-- in corso allora rates_total = 9668 / prev_calculated = 9667 / Bars = 9668//Stampa("rates_total: " + (stringa)rates_total);if (rates_total == prev_calculated) return (rates_total);//-- E' sempre lo stesso bar, quindi siamo fuori...//-- Ottenere il numero di barre non elaborate (al primo ingresso sono tutte, poi 1)//-- Il numero di barre di output si riferisce al grafico stesso, ma verrà emesso un altro strumento//-- il numero di barre può essere diverso, quindi prima scarichiamo tutti i dati nel buffer --
Counted_bars = rates_total-prev_calculated;
// Print("Barre contate: " + Barre contate);Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0));
//-- Allocare la memoria in base al numero di battute dello strumento principale --if (ArrayResize(ArrayBuffer, Counted_bars,0) == -1) return (rates_total);//-- Errore di allocazione della memoria --//--- inizializzare gli elementi dell'array con il valore EMPTY_VALUE ----ArrayInitialize(ArrayBuffer,EMPTY_VALUE);
//-- Ottenere il numero di barre dello strumento --
copied = (int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT);
if (copied > 0){
copied=CopyClose(InstrumentName,0,0,copied,ArrayBuffer);//-- Scrivere i dati nel buffer di memoria --if (copied <= 0) return (rates_total);//-- errore
}
else{
return (rates_total);//-- errore
}
if (Counted_bars > copied) Counted_bars = copied;//-- Prendere il valore più basso --
Counted_bars--;//-- Dal momento che il conteggio parte da 0 --//-- I dati sono stati caricati nel buffer di memoria, ora vengono scritti nel buffer dello schermo da destra a sinistra --for (int i = Counted_bars; i > 0; i--){
ScreenBuffer[i] = ArrayBuffer[i];
}
//--------------------------------------------------------------------return(rates_total);
}
voidOnDeinit(constint reason)
{
ObjectsDeleteAll(0,0,-1); // tutti gli oggetti del grafico vengono eliminati.
}
Cosa sto sbagliando, perché non posso visualizzare normalmente il grafico di un altro strumento?
In MQL4 funzionava tutto, qui funziona solo se lo si visualizza sullo stesso strumento, quindi non ci sono errori.
Non sono sicuro della correttezza dell'implementazione e dell'algoritmo in generale, ma sulla base del codice e di ciò che sono riuscito a fare con esso, presumo che:
Non sono sicuro dell'implementazione corretta e dell'algoritmo in generale, ma in base al codice e a ciò che sono riuscito a fare con esso, presumo che sia così:
La stringa
dovrebbe assomigliare a questa
PS
Forse sarebbe più corretto cambiare il periodo ovunque come "0" in PERIOD_CURRENT.
Almeno a me ha funzionato tutto dopo tali modifiche....
Modificato, non funziona ancora, il grafico non corrisponde alla realtà.
Ma poiché non ho approfondito la logica dell'induttore e la sua implementazione, non sta a me giudicare la correttezza dei risultati.
PS
Io eliminerei comunque il simbolo nel parametro e lo farei con il simbolo corrente e il TF, per poi usarlo in Expert Advisor o in un altro strumento usando il solito iCustom().
Inoltre, non capisco bene la logica del lavoro con i buffer (intendo la coda della calcolatrice e così via). Secondo me c'è molto da lavorare....
Ma poiché non ho approfondito la logica dell'induttore e la sua implementazione, non sta a me giudicare la correttezza dei risultati.
PS
Io mi sbarazzerei comunque del simbolo nel parametro e lo renderei conforme al simbolo e al TF attuali, per poi utilizzarlo in Expert Advisor o in qualsiasi altro strumento utilizzando il solito iCustom().
6.Sembra che manchi:
TradePerformer( 4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop);
in Exp_TEMA.mq5 ?
6.Sembra che manchi
in Exp_TEMA.mq5?
Si prega di creare un esempio riproducibile. Cioè, è necessario un codice già pronto che si possa compilare, inserire in un grafico e ottenere i risultati.
Senza questo, poche persone capiranno di cosa stiamo parlando.Ho pensato di tagliare per non scoraggiare le persone per niente.
Ecco la versione completa:
Cosa sto sbagliando, perché non posso visualizzare normalmente il grafico di un altro strumento?
In MQL4 funzionava tutto, qui funziona solo se lo si visualizza sullo stesso strumento, quindi non ci sono errori.
Cosa sto sbagliando, perché non posso visualizzare normalmente il grafico di un altro strumento?
In MQL4 funzionava tutto, qui funziona solo se lo si visualizza sullo stesso strumento, quindi non ci sono errori.
Non sono sicuro della correttezza dell'implementazione e dell'algoritmo in generale, ma sulla base del codice e di ciò che sono riuscito a fare con esso, presumo che:
La stringa
dovrebbe avere questo aspetto
Forse sarebbe più corretto cambiare il periodo ovunque come "0" in PERIOD_CURRENT.
Almeno a me ha funzionato tutto dopo queste modifiche.....
PS
Forse non è rilevante, ma in questo modo il compilatore conta molto meno
Non sono sicuro dell'implementazione corretta e dell'algoritmo in generale, ma in base al codice e a ciò che sono riuscito a fare con esso, presumo che sia così:
La stringa
dovrebbe assomigliare a questa
PS
Forse sarebbe più corretto cambiare il periodo ovunque come "0" in PERIOD_CURRENT.
Almeno a me ha funzionato tutto dopo tali modifiche....
Sul mio schermo appare così:

Chiaramente sbagliato.Ecco come si è rivelato per me
Ma poiché non ho approfondito la logica dell'induttore e la sua implementazione, non sta a me giudicare la correttezza dei risultati.
PS
Io eliminerei comunque il simbolo nel parametro e lo farei con il simbolo corrente e il TF, per poi usarlo in Expert Advisor o in un altro strumento usando il solito iCustom().
Inoltre, non capisco bene la logica del lavoro con i buffer (intendo la coda della calcolatrice e così via). Secondo me c'è molto da lavorare....
Ecco cosa ho ottenuto
Ma poiché non ho approfondito la logica dell'induttore e la sua implementazione, non sta a me giudicare la correttezza dei risultati.
PS
Io mi sbarazzerei comunque del simbolo nel parametro e lo renderei conforme al simbolo e al TF attuali, per poi utilizzarlo in Expert Advisor o in qualsiasi altro strumento utilizzando il solito iCustom().
Interesting:
Inoltre, non capisco bene la logica di lavoro con i buffer (intendo la coda della calcolatrice e così via). Secondo me, c'è molto da lavorare....
Se ho capito bene, un buffer è sufficiente (basta che sia calcolato e disegnato correttamente sul grafico).
PS
E con la variante attuale ho l'impressione che l'induttore visualizzi i dati "a sinistra" (l'inizio della storia) invece che "a destra" (corrente)....
Oppure non capisco proprio nulla della logica di questo indicatore....