[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 166
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Signori professionisti, ho bisogno di nuovo del vostro aiuto!
Qui sotto c'è un frammento di codice responsabile della chiusura dei trade, ma il fatto è che quando gli ordini pendenti non vengono eseguiti non li cancella, non riesco a capire perché. Ma quando ho bisogno di chiudere un ordine pendente che è già stato eseguito, tutto va correttamente e se l'ordine non è stato eseguito allora si blocca lì finché non viene eseguito...
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();
orderticket = OrderTicket();
if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0) {
if (H1_BUY_5 == 0 || H1_BUY_1 == 0) {
OrderClose(orderticket, lots, Bid, 5, Yellow);
if (OrdersTotal() == 1) OrderDelete(orderticket, Brown);
}
}
Questa è la condizione che seleziona solo l'ordine di acquisto,
if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
quindi non c'è modo di rimuovere l'ordine pendente
Probabilmente perché si calcola prima il lotto e poi
Grazie, ho cambiato il calcolo del lotto, ma ancora non funziona.
Come non funziona, cosa dice nei log?
Controlla quali valori assume np, qui
Non ci sono messaggi di errore nel registro. Puoi guardare l'intero codice EA? Dovrebbe chiudere 1/3 del lotto se lo stoploss è già stato spostato a breakeven dal trawl.
Oooooooo com'è incasinato tutto. In generale, tutto è sbagliato, più facile da buttare e scriverne uno nuovo. I parametri sono definiti in modo errato, le funzioni sono chiamate in modo errato, un sacco di calcoli inutili. Buono per un tutorial su come non scrivere codice.
Ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo disordinato. Tutto sommato, è tutto sbagliato, è più facile buttarlo via e scriverne uno nuovo. I parametri sono definiti in modo errato, le funzioni sono chiamate in modo errato, un sacco di calcoli inutili. Sarà buono per un tutorial su come non scrivere codice.
...Dovrebbe chiudere 1/3 del lotto se scatta uno stop loss già spostato a pareggio dal trawl.
Guardo tutto questo e penso tra me e me - perché assumersi questi compiti se non si è sicuri delle basi? Questo tipo di studio autonomo fa più bene che male. La scintilla del pensiero annega in un mucchio di errori.
Probabilmente ha fatto più male che bene.
Per favore, consigliateci, signori!
Immaginate la situazione: viene attivato uno stop, a causa dell'innesco della N-esima condizione. Ma dopo un paio di candele, la condizione N-esima è caduta. Con l'aiuto di quale funzione si può riaprire l'affare dopo che la N-esima condizione cade. Cioè, devi determinare che ha innescato uno stop un certo numero di barre fa, e poiché la condizione N-esima è caduta, ripeti il trade!