Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 412
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Accidenti... Sono certamente contento che hai iniziato a risolvere il problema, ma il mio messaggio che in qualche modo non hai notato, dove ho detto la stessa cosa, un po 'di parole diverse, e subito detto le carenze, tranne che per la chiusura del file, non subito visto dove hai succede:)
Hai scritto una risposta in tre punti. Nel primo hai fatto un errore (la mia voce è abbastanza corretta), nel secondo hai anche fatto un errore (anche se questo messaggio l'ha livellato :) Il terzo punto suonava come se tu suggerissi di spostare il cursore alla fine dopo la voce, non prima (che è stato preso di nuovo come un errore). Di fronte a una tale immagine, ho preferito fare un chiarimento da un moderatore molto esperto che mi ha risposto.
Tuttavia, grazie davvero per il vostro feedback. E un felice anno nuovo! :)
Salve. Di fronte a una situazione spiacevole. Aiutami.
Ho un Expert Advisor. Funziona bene nello Strategy Tester, non ho reclami. Quando lo eseguo su una demo, l'Expert Advisor non può piazzare stop su certi ordini. C'è un errore che appare non sempre, ma a volte. Sono disperato di trovarlo da solo e spero di ricevere il vostro aiuto. Va notato che l'EA funziona perfettamente in tutti gli altri aspetti, proprio come nel tester, nessuna lamentela, tranne che il problema è che gli stop non sono sempre impostati. L'errore appare in diversi broker su diversi conti. Ecco la parte del codice responsabile delle operazioni commerciali
Ecco il codice della funzione Error(int er)
Così, quando l'EA non riesce a impostare gli stop, appare un messaggio che mostra le informazioni sull'errore e i parametri dell'ordine che ha cercato di modificare. Quello che scrive è il vero mistero per me. Come potete vedere dalle immagini qui sotto, scrive costantemente che il volume è sbagliato. Questo è strano. Dovrei aggiungere che tutti i parametri dell'ordine sono calcolati correttamente prima della modifica, si può vedere nei messaggi. Altrimenti l'errore sarebbe diverso. Il programma è stato testato con uno spread superiore a quello della demo.
Salve. Di fronte a una situazione spiacevole. Aiutami.
Ho un Expert Advisor. Funziona bene nello Strategy Tester, non ho reclami. Tuttavia, quando lo eseguo su una demo, vedo che l'EA non può piazzare stop su certi ordini. C'è un errore che appare non sempre, ma a volte. Sono disperato di trovarlo da solo e spero di ricevere il vostro aiuto. Va notato che l'EA funziona perfettamente in tutti gli altri aspetti, proprio come nel tester, nessuna lamentela, tranne che il problema è che gli stop non sono sempre impostati. L'errore appare in diversi broker su diversi conti. Ecco la parte del codice responsabile delle operazioni commerciali
Ecco il codice della funzione Error(int er)
Così, quando l'EA non riesce a impostare gli stop, appare un messaggio che mostra le informazioni sull'errore e i parametri dell'ordine che ha cercato di modificare. Quello che scrive è il vero mistero per me. Come potete vedere dalle immagini qui sotto, scrive costantemente che il volume è sbagliato. Questo è strano. Dovrei aggiungere che tutti i parametri dell'ordine sono calcolati correttamente prima della modifica, si può vedere nei messaggi. Altrimenti l'errore sarebbe diverso. Il programma è stato testato con uno spread superiore a quello della demo.
Dovreste stare molto attenti ai valori delle vostre variabili globali. Posso suggerire che ord_ticket è una variabile globale e quindi può memorizzare il valore precedente. E prima di chiamare GetLastError() per catturare l'errore, si dovrebbe resettare il valore precedente chiamandolo all'inizio del codice.
ord_ticket è dichiarato a livello locale. E poi anche se è dichiarato globalmente nella prima riga
il suo valore cambierà certamente. Sarà o il numero d'ordine in caso di transazione riuscita, o -1 altrimenti. Quindi, se l'ordine non viene aperto, non arriviamo al blocco di impostazione degli stop.
Bisogna anche notare che la funzione OrderSend() cambia sempre il valore dell'ultimo errore(secondo la documentazione e la logica), quindi resettare la lettura precedente in questo caso non è necessario e risulterebbe in una semplice perdita di tempo. Cioè, l'errore 131 appare dopo essere entrati nel blocco di impostazione dell'arresto e prima che venga visualizzato il messaggio di errore. Dato che gli stop non sono realmente posizionati, la funzione OrderModify() deve essere l'ultima funzione ad essere chiamata, la quale, così come la precedente, cambia sempre il valore dell'ultimo errore. Ma non riesco a capire perché non cambia il valore dell'ultimo errore. Da dove viene? Ancora una volta dirò che non ci sono stati problemi nel tester.
Ho avuto l'idea che il broker stesse imbrogliando perché il server inviava i numeri di errore al terminale e quest'ultimo a sua volta li inviava all'Expert Advisor. Ho abbandonato questa idea perché solo gli ordini di un EA hanno errori, altri EA che lavorano in parallelo non hanno tali errori.
ord_ticket è dichiarato a livello locale. E poi anche se è dichiarato globalmente nella prima riga
il suo valore cambierà certamente. Sarà o il numero d'ordine in caso di transazione riuscita, o -1 altrimenti. Quindi, se l'ordine non viene aperto, non arriviamo al blocco di impostazione degli stop.
Bisogna anche notare che la funzione OrderSend() cambia sempre il valore dell'ultimo errore (secondo la documentazione e la logica), quindi resettare la lettura precedente in questo caso non è necessario e risulterebbe in una semplice perdita di tempo. Cioè, l'errore 131 appare dopo essere entrati nel blocco di impostazione dell'arresto e prima che venga visualizzato il messaggio di errore. Dato che gli stop non sono realmente posizionati, la funzione OrderModify() deve essere l'ultima funzione ad essere chiamata, la quale, così come la precedente, cambia sempre il valore dell'ultimo errore. Ma non riesco a capire perché non cambia il valore dell'ultimo errore. Da dove viene? Ancora una volta dirò che non ci sono stati problemi nel tester.
Ho avuto l'idea che il broker stesse imbrogliando perché il server inviava i numeri di errore al terminale e quest'ultimo a sua volta li inviava all'Expert Advisor. Ho rapidamente abbandonato questa idea perché solo gli ordini di un EA hanno errori, altri EA che lavorano in parallelo non hanno tali errori.
Aggiungo. Il codice dell'EA che lavora in parallelo è esattamente lo stesso, è responsabile dell'impostazione degli stop. Questo EA non ha mai avuto una situazione in cui gli stop non sono stati impostati per gli ordini.
Sembra che ci sia un errore nel calcolo dei parametri da qualche parte sopra, ma se solo un parametro è sbagliato, dovrebbe apparire un altro errore. Per esempio, il noto 130
ord_ticket è dichiarato a livello locale. E poi anche se è dichiarato globalmente nella prima riga
il suo valore cambierà certamente. Sarà o il numero d'ordine in caso di transazione riuscita, o -1 altrimenti. Quindi, se l'ordine non viene aperto, non arriviamo al blocco di impostazione degli stop.
Bisogna anche notare che la funzione OrderSend() cambia sempre il valore dell'ultimo errore (secondo la documentazione e la logica), quindi resettare la lettura precedente in questo caso non è necessario e risulterebbe in una semplice perdita di tempo. Cioè, l'errore 131 appare dopo essere entrati nel blocco di impostazione dell'arresto e prima che venga visualizzato il messaggio di errore. Dato che gli stop non sono realmente posizionati, la funzione OrderModify() deve essere l'ultima funzione ad essere chiamata, la quale, così come la precedente, cambia sempre il valore dell'ultimo errore. Ma non riesco a capire perché non cambia il valore dell'ultimo errore. Da dove viene? Ancora una volta dirò che non ci sono stati problemi nel tester.
Ho avuto l'idea che il broker stesse imbrogliando perché il server inviava i numeri di errore al terminale e quest'ultimo a sua volta li inviava all'Expert Advisor. Ho rapidamente abbandonato questa idea perché solo gli ordini di un EA hanno questi problemi, altri EA che lavorano in parallelo non hanno errori.
Hai scritto una risposta in tre punti. Nel primo hai commesso un errore (la mia voce è abbastanza corretta), nel secondo hai anche commesso un errore (anche se l'hai livellato con questo post :) Il terzo punto suonava come se tu suggerissi di spostare il cursore alla fine dopo la voce, non prima (che è stato preso di nuovo come un errore). Di fronte a un quadro del genere, ho preferito fare una precisazione al moderatore multiforme che risponde.
Tuttavia, grazie davvero per la sua risposta. E felice anno nuovo! :)
:D ok, felice anno nuovo anche a te :)
Tornando a quanto scritto a pagina 411 ... qualcuno ha un'idea di come combinare questo codice e le condizioni di entrata/uscita per attraversare due MA? o gli ordini pendenti sono l'unica opzione?
Dopo aver aperto un affare su un segnale di mooving, iniziare a monitorare il numero di ordini o questo ordine in particolare, se il numero di ordini a diminuire o come la seconda opzione è chiusa in particolare questo ordine, quindi scoprire come è stato chiuso, se un arresto, poi apre solo l'ordine opposto al prezzo corrente, questo è tutto
Dopo aver aperto un affare su un segnale in movimento iniziare a monitorare il numero di ordini o questo ordine in particolare, se il numero di ordini a diminuire o come la seconda opzione è chiusa in particolare questo ordine, quindi scoprire come è chiuso, se la fermata, poi basta aprire l'ordine opposto al prezzo corrente, questo è tutto
Lo capisco, ma non posso scriverlo. L'Expert Advisor o fa trading solo sui segnali di muwings e non apre una posizione inversa in caso di perdita, o semplicemente blocca il terminale quando inizia il test. Così ho scritto qualcosa che non può essere elaborato affatto. Non sono molto bravo a scrivere. Ho bisogno di aiuto sotto forma di codice scritto.
Se OrderProfit()<0, aprirà l'ordineopposto. Ma non funziona insieme ai segnali degli ausili in movimento. Potete scrivere un unico codice per fornire sia i segnali di muwings che le condizioni per aprire una posizione opposta?