Per favore, aiutatemi a capire il problema di trovare correttamente la divergenza sugli oscillatori. In questo caso, che sia MACD. Ho abbozzato il seguente algoritmo:
1) Conta le barre dall'inizio e cerca i picchi sull'oscillatore:
2) Creare delle matrici contenenti i tempi di picco:
e inserirvi il valore di MACD[i] se la condizione è soddisfatta. L'ultimo nuovo picco deve avere l'indice [n] e il penultimo [n+1];
3) Consideriamo un'altra soluzione nella situazione (1):
In realtà, il problema del punto 2: come organizzare un tale array come in una serie temporale in modo che i valori fossero spostati ad ogni nuovo picco?
Vi sono molto grato per aver analizzato il mio codice. Grazie per aver trovato il tempo di farlo.
Sto appena iniziando a imparare la programmazione, quindi questi commenti sono molto importanti e saranno utili in futuro.
Ora veniamo al punto:
if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ if(OrderSymbol() != Symb) continue;
if(OrderMagicNumber() != 777) continue;
return;
}
}
}
In realtà, la ricerca completa degli ordini viene eseguita in questo modulo, e l'ulteriore analisi viene eseguita utilizzando gli ordini aperti (tutto è chiaro qui)
Anche questa parte del codice è cambiata, ma i partecipanti al forum scrivono che l'ambiente di mercato non è sempre disponibile per la funzione init().
Alcune variabili potrebbero non essere definite o ho sbagliato qualcosa?
Non capisco la logica di questo post - (sto spiegando la mia visione di questo operatore)
while(true)
...
Ho un blocco di gestione degli errori.
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попытка
Se l'errore è corretto, proviamo di nuovo a verificare le condizioni e ad aprire l'ordine.
E l'operatore while funziona quando il suo valore è vero, cioè risulta che non accetta il falso.
Buon giorno si prega di aiutare, non riesco a regolare il mio Expert Advisor (apertura e chiusura degli ordini non funzionano come previsto (attraversando stocastico ogni volta), aperto a stocastico molto raramente e non riesco a capire perché ((((), anche tutti gli ordini sono chiusi solo a stoploss o takeprofit (numero di biglietto di errore, anche non può capire dove l'errore). grazie per eventuali risposte:
Vinin: Basta non dimenticare che l'ambiente di mercato non è sempre disponibile in init()
Francamente parlando, ero molto incuriosito da questa notizia. Ho provato a immaginare in quali condizioni l'ambiente di mercato potrebbe non essere disponibile: forse un errore di connessione al momento dell'abilitazione dell'EA o se si esegue l'EA di sabato o domenica. Non ho notato questi problemi con il mio. Da un lato, dicono che è possibile fare un loop in init() per trovare un valore, ma ho imparato che init() è limitato nel tempo. Forse all'inizio di start() all'apparizione di una nuova barra (almeno a M1) per trovare valori dall'ambiente di mercato, è meglio che su ogni tick.
Vi sono molto grato per aver analizzato il mio codice. Grazie per aver trovato il tempo di farlo.
...
E l'istruzione while funziona quando il suo valore è vero, cioè risulta che non prende false.
In while si dovrebbe mettere una condizione che può prendere almeno due valori, per esempio, flag (vero o falso). Se il codice deve contenere una costante (true) invece di una condizione, while è inutile. Togliete while (true) e le parentesi e otterrete lo stesso risultato.
Domanda per gli intenditori. Nell'aiuto di OrderSend(), lo slippage è 3. È per le quotazioni a 4 cifre, per esempio? Per le citazioni a 5 cifre possiamo lasciarne 3 o abbiamo bisogno di 30?
paladin80: Domanda per i consulenti esperti. L'OrderSend() al posto dello slippage è 3. È per esempio per le quotazioni a 4 cifre? Per le citazioni a 5 cifre posso lasciare 3 o ho bisogno di 30?
Per favore, aiutatemi a capire il problema di trovare correttamente la divergenza sugli oscillatori. In questo caso, che sia MACD. Ho abbozzato il seguente algoritmo:
1) Conta le barre dall'inizio e cerca i picchi sull'oscillatore:
2) Creare delle matrici contenenti i tempi di picco:
e inserirvi il valore di MACD[i] se la condizione è soddisfatta. L'ultimo nuovo picco deve avere l'indice [n] e il penultimo [n+1];
3) Consideriamo un'altra soluzione nella situazione (1):
In realtà, il problema del punto 2: come organizzare un tale array come in una serie temporale in modo che i valori fossero spostati ad ogni nuovo picco?
Per favore, aiutatemi!
Ho deciso di curiosare un po' nel tuo codice...
Vi sono molto grato per aver analizzato il mio codice. Grazie per aver trovato il tempo di farlo.
Sto appena iniziando a imparare la programmazione, quindi questi commenti sono molto importanti e saranno utili in futuro.
Ora veniamo al punto:
In realtà, la ricerca completa degli ordini viene eseguita in questo modulo, e l'ulteriore analisi viene eseguita utilizzando gli ordini aperti (tutto è chiaro qui)
Anche questa parte del codice è cambiata, ma i partecipanti al forum scrivono che l'ambiente di mercato non è sempre disponibile per la funzione init().
Alcune variabili potrebbero non essere definite o ho sbagliato qualcosa?
Non capisco la logica di questo post - (sto spiegando la mia visione di questo operatore)
while(true) ...Ho un blocco di gestione degli errori.
Se l'errore è corretto, proviamo di nuovo a verificare le condizioni e ad aprire l'ordine.
E l'operatore while funziona quando il suo valore è vero, cioè risulta che non accetta il falso.
Grazie ragazzi per il vostro aiuto.
Per favore, aiutatemi!
Leggi qui:https://www.mql5.com/ru/articles/1357 È semplice e diretto
Leggi qui:https://www.mql5.com/ru/articles/1357 È semplice e diretto
Basta non dimenticare che l'ambiente di mercato non è sempre disponibile in init()
...Vi sono molto grato per aver analizzato il mio codice. Grazie per aver trovato il tempo di farlo.
E l'istruzione while funziona quando il suo valore è vero, cioè risulta che non prende false.
Domanda per i consulenti esperti. L'OrderSend() al posto dello slippage è 3. È per esempio per le quotazioni a 4 cifre? Per le citazioni a 5 cifre posso lasciare 3 o ho bisogno di 30?
Per quelli a 5 cifre ne servono 30.
Inserisco una tale costruzione in init() di ogni EA, poi non fa differenza per 4 o 5 cifre DT, lo consiglio: