Salve,
Sto cercando di sviluppare un esperto che scavi i dati storici (picco e fondo) da utilizzare per il mio esperto principale. Ho deciso di usare l'indicatore zigzag perché è semplice e trova facilmente i massimi e i minimi.
Il mio problema è che quando chiamo il ZigZag.ex4 usando la funzione iCustom() non riesco ad ottenere i valori alti e bassi corretti. Al fine di evitare la ripresentazione, ho usato l'indice 20 dell'indicatore iCustom() come protezione di base per la ripresentazione.
Ci sono due buffer nel codice di ZigZag (usando la versione di metaquote https://www.mql5.com/en/code/7796 ). Potrei prendere i valori alti e bassi opposti ma non ha molta importanza al momento.
Alcuni dei valori corrispondono al codice altri no e nel Journal, posso vedere entrambi i valori alti e bassi nella stessa colonna, il che non può essere possibile.
Il mio codice è qui sotto:
Mi chiedo se sto usando male l'indicatore zig zag o se ho fatto un errore nel codice? Non sono riuscito a trovare il problema quindi chiedo gentilmente il vostro aiuto per identificare il mio problema.
Grazie
Puoi dire leggendo il codice MACD Sample come funziona quell'EA?
Mi sembra che non hai mai provato ....
quello che hai scritto è come se facessi qualcosa ..... non so cosa succede Puoi dirmi cosa ho fatto?
Ogni tick loop che cosa è il tuo ogni tick loop ??
Questo?
if (tmp!= Time[0]) { tmp = Time[0]; double zh=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,1,20); double zl=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,0,20); Zig_high[cnt]=zh; Zig_low[cnt]=zl; cnt=cnt+1; Alert(" Zig zh=",zh," zl=",zl," cnt=",cnt-1); } // Every tick loop
Si', allora dov'e' il ciclo?
no allora spiega linea per linea cosa significa il tuo codice...
Sì, so che non riempirà ogni elemento del buffer. Voglio mettere tutti i dati in un array compresi gli zeri (se non ci sono alti e bassi) e anche i valori alti e bassi. Il motivo è che vorrei avere un altro processo all'interno di deinit() per calcolare la differenza di tick tra alti e bassi usando gli array. Voglio dire, per esempio, quanti tick sono passati tra 2 massimi e la differenza tra alti e bassi. Ma non posso ancora arrivare a questo stadio.
Perché restituisce contemporaneamente alti e bassi come immagino nell'immagine (parte del giornale con il segno ??? accanto?) E questi valori non corrispondono a nessun alto o basso... Questo è il mio problema principale...
Grazie
Puoi dire leggendo il codice MACD Sample come funziona questo EA?
Mi sembra che tu non abbia mai provato ....
quello che hai scritto è come se facessi qualcosa ..... non so cosa succede Puoi dirmi cosa ho fatto?
Ogni tick loop che cosa è il tuo ogni tick loop ??
Questo?
Si', allora dov'e' il ciclo?
no allora spiega linea per linea cosa significa il tuo codice...
Non credo di avere problemi con il loop, il loop funziona e stampa i risultati. Controlla il timeframe (15M nel mio caso) e calcola i valori a zig zag e stampa. Si prega di controllare il rettangolo verde come funziona ogni 15 minuti. La funzione Start() stessa è un loop, vero?
Non credo di avere problemi con il ciclo, il ciclo funziona e stampa i risultati. Controlla il timeframe (15M nel mio caso) e calcola i valori a zig zag e stampa. Si prega di controllare il rettangolo verde come funziona ogni 15 minuti. La funzione Start() stessa è un ciclo, vero?
Hai ragione che la funzione Start() stessa è un ciclo
ma dove inizia questo ciclo e dove finisce la funzione Start()?
è da qualche altra parte ...
i messaggi che hai stampato non si ripetono ogni tick ....
Quindi cosa stai facendo ......??
Prova a spiegare le linee del tuo codice ..... il più possibile
Hai ragione che la funzione Start() stessa è un ciclo
ma dove inizia questo ciclo e dove finisce la funzione Start()?
è da qualche altra parte ...
i messaggi che hai stampato non sono ripetuti ogni tick ....
Quindi cosa stai facendo ......??
Cerca di spiegare le linee del tuo codice ..... più che puoi
Le mie scuse se non sono riuscito a spiegarmi bene.
Questo esperto deve essere usato per il backtest e il mio scopo è quello di trovare i massimi e i minimi storici nel grafico 15M. Poi rielaborerò i dati dei massimi e dei minimi per calcolare la fase e l'ampiezza del grafico.
Cosa ho fatto: ho usato due array per memorizzare il valore alto e basso e un contatore per contare i tick. La dimensione dell'array 1000 è più che sufficiente dato che lo sto facendo funzionare per 2 giorni al massimo (1440/15=96 tick al giorno)
int cnt=0; double Zig_high[1000]; double Zig_low[1000];
nella funzione init() riempio gli array con zero.
nella funzione start() sto controllando se è scattato un nuovo tick con il seguente codice
if (tmp!= Time[0]) { tmp = Time[0]; // the code here runs every 15M. }
Quindi la funzione start() ha un ciclo continuo fino al backtest (2 giorni) finalizzato.
Il mio problema principale è chiamare lo ZigZag credo. Sotto sto chiamando l'indicatore zigzag. Normalmente se c'è un massimo o un minimo dovrebbe ritornare con un valore diverso da zero. Ma nel mio caso a volte ritorna sia basso che alto con lo stesso valore, il che è impossibile.
double zh=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,1,20); double zl=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,0,20); Zig_high[cnt]=zh; Zig_low[cnt]=zl; cnt=cnt+1;
Forse non ho capito gli array usati nell'indicatore zigzag Metaquotes originale (vedi sotto). La mia comprensione è che questi sono utilizzati per memorizzare i valori alti e bassi.
//---- indicator buffers double ExtMapBuffer[]; double ExtMapBuffer2[];
Grazie
Prenditi un po' di tempo per leggere e imparare
Questo potrebbe aiutarvi anche un po
Cosa sta visualizzando Data Window?
Il grafico qui sotto mostra il valore minimo (sia il valore del punto del cursore, sia il valore della finestra dei dati e l'uscita è lo stesso)
Quello sotto è 6 tick dopo la parte più alta del grafico. Sia la finestra dei dati che i punti del cursore sono gli stessi, tuttavia l'uscita non è la stessa e inoltre restituisce sia il valore basso che quello alto.
Ho controllato che iCustom() carichi correttamente l'indicatore. Il valore basso è lo stesso ma il valore alto no. Potrebbe essere legato all'indicatore ZigZag?
Non riesco proprio a capire cosa sto facendo di sbagliato.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Salve,
Sto cercando di sviluppare un esperto che scavi i dati storici (picco e fondo) da utilizzare per il mio esperto principale. Ho deciso di usare l'indicatore zigzag perché è semplice e trova facilmente i massimi e i minimi.
Il mio problema è che quando chiamo il ZigZag.ex4 usando la funzione iCustom() non riesco ad ottenere i valori alti e bassi corretti. Al fine di evitare la ripresentazione, ho usato l'indice 20 dell'indicatore iCustom() come protezione di base per la ripresentazione.
Ci sono due buffer nel codice di ZigZag (usando la versione di metaquote https://www.mql5.com/en/code/7796 ). Potrei prendere i valori alti e bassi opposti ma non ha molta importanza al momento.
Alcuni dei valori corrispondono al codice altri no e nel Journal, posso vedere entrambi i valori alti e bassi nella stessa colonna, il che non può essere possibile.
Il mio codice è qui sotto:
Mi chiedo se sto usando male l'indicatore zig zag o se ho fatto un errore nel codice? Non sono riuscito a trovare il problema quindi chiedo gentilmente il vostro aiuto per identificare il mio problema.
Grazie