[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 262
![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, potete dirmi dove ho sbagliato quando ho inserito questa funzione di temporizzazione nel mio codice EA?
Il compilatore mi ha inondato di errori.
Nel luogo in cui avete dichiarato una funzione all'interno di un'altra funzione:
Vedere il decimo parametro della funzione specificata. Impostare su 0.
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue);
ha trovato questa linea e cosa cambiare lì?
L'uso è semplice - eseguo lo script...
Potete trovare esempi di funzioni simili qui: Funzioni utili di KimIV.
Se quelli di serie non vanno bene, puoi costruirne uno tuo per analogia con quelli esistenti.
Qui il calcolo si basa sull'inerzia dei prezzi. Cioè lo stop loss del primo ordine è scattato, il secondo ordine è in profitto con un valore un po' inferiore alla perdita. Se il prezzo si muove ancora nella stessa direzione, allora sì, potremmo essere nel profitto totale.
Ma, imho, questa strategia non vale un morso.
Questo è esattamente ciò che dobbiamo dimostrare. In altre parole, avete bisogno di un codice che trovi l'ordine necessario. Ci sono dozzine di queste situazioni, e non possiamo fornire una funzione speciale per ciascuna di esse per semplificare il codice. Deve essere scritto per ogni caso.
Potete trovare esempi di funzioni simili qui: Funzioni utili di KimIV.
Se quelli di serie non vanno bene, puoi costruirne uno tuo per analogia con quelli esistenti.
Credo di non aver capito bene il punto.
Asserzione 1. Ogni codice, dopo l'attivazione dell'ordine pendente, quando accede alla data di apertura di questo ordine (che è diventato negoziabile al momento di tale attivazione), otterrà la data di apertura uguale alla data di immissione dell'ordine pendente - è così che funziona la funzione OrderOpenTime().
Asserzione 2: Non si può ricordare l'ora esatta dell'attivazione dell'ordine pendente, senza un Expert Advisor che monitorizza costantemente lo stato degli ordini sul conto.
Possibile soluzione 1. Possiamo provare a correre dalla data di impostazione dell'ordine pendente alla data attuale e notare il tempo del primo incrocio del prezzo aperto e il livello di trigger.
Questo sarà più o meno il tempo esatto, ma c'è un grande meno: lo spread. Dato che non registriamo lo spread nella storia (non sto prendendo la storia dei tick con lo spread preso da Dukas, per esempio, dato che non faccio trading in Dukas e dobbiamo raccoglierlo e registrarlo), l'ordine potrebbe essere scattato molto prima, quando il prezzo ha quasi toccato il livello aperto ma non lo ha attraversato, e l'ordine è stato aperto a causa dell'espansione dello spread, non dopo, quando abbiamo effettivamente visto il prezzo attraversare la linea di impostazione dell'ordine pendente.
La soluzione più probabile è creare un Expert Advisor, metterlo sul grafico e monitorare gli ordini nel conto. Non voglio farlo per alcune ragioni e ci sono anche svantaggi associati a possibili problemi durante le pause nell'operazione EA.
Le funzioni a cui avete fatto riferimento. Hai fornito un link alla funzione OrderOpenTime(). Per gli ordini ritardati sarà la data della loro creazione, e non della loro attivazione. Pertanto, le funzioni esistenti non sono adatte. E non c'è modo di combinarli, poiché fanno ancora riferimento a OrderOpenTime() per la data di apertura dell'ordine.
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue);
ha trovato questa linea e cosa cambiare lì?
OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue);
ha trovato questa linea e cosa cambiare lì?
Ecco l'intera linea
Ecco l'intera linea
Di nuovo:
Documentazione:
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Il tuo decimo parametro nella stringa "Newest" non è un numero. Ecco perché c'è un errore
PapaYozh:
Dove avete dichiarato una funzione all'interno di un'altra funzione:
Alla fine il compilatore mi ha mostrato questi errori, e penso che si riferisca alla definizione della variabile sbagliata?Grazie per il tuo feedback, caro PapaYozh,ma ho inserito questa funzione in int start(), ma il risultato del compilatore non cambia comunque.
Mi scuso per qualsiasi inconveniente, incomprensione, dopo tutto, solo cominciando a guadagnare esperienza in una materia non facile, e penso che grazie a questo forum e le persone che hanno risposto qui, continuano a sviluppare e migliorare le loro competenze, grazie.