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
Fondamentalmente ho impostato due ordini pendenti a un'ora specifica, in particolare alle 23:00 GMT+2 credo. Uno degli ordini pendenti è un sell stop e l'altro è un buy stop, entrambi gli ordini sono ad una distanza uguale dall'open della candela delle 23:00, in questo caso 14 pips. Entrambi hanno un TakeProfit di 28 pip (in questo caso) e uno StopLoss di 55 pip.
Ora quando entrambi gli ordini sono soddisfatti (essenzialmente salendo e scendendo di 14 pip dal prezzo aperto alla candela delle 23:00 prima che gli ordini scadano), voglio che entrambi gli ordini abbiano i loro take profit aumentati, per esempio, di 20 pip. Quindi il loro nuovo take profit è di 58 pip in questo caso. Lo stop loss invece dovrebbe essere mantenuto lo stesso per tutto il tempo. Essenzialmente quello che sto cercando di fare è una sorta di copertura.
Se due trade sono aperti, allora è probabile che il prezzo vada in una direzione abbastanza da annullare qualsiasi perdita se i take profit di entrambi i trade vengono aumentati. Per ottenere un qualsiasi profitto solo un trade dovrebbe aprirsi e raggiungere il take profit o entrambi i trade si aprono e colpiscono i take profit senza andare molto in una direzione.
Spero che questo sia chiaro, se non lo è fornirò un'immagine che dovrebbe essere più chiara.
Mi riferivo al tuo post direttamente precedente
Ecco il codice rivisto per l'intero EA:
Spero che questo sia chiaro, se non lo è fornirò un'immagine che dovrebbe essere più chiara.
È chiaro, grazie.
Quindi vuoi solo modificare questi ordini una volta... allora la risposta è semplice. Devi controllare la barra delle 23:00 e determinare i TP ai quali gli ordini avrebbero dovuto essere aperti. . . se gli ordini sono allo stesso TP allora devono essere modificati, se non sono allo stesso TP allora sono già stati modificati e non hanno bisogno di essere modificati di nuovo. . . semplice.
È chiaro, grazie.
Quindi vuoi solo modificare questi ordini una volta... allora la risposta è semplice. Devi controllare la barra delle 23:00 e determinare i TP a cui gli ordini avrebbero dovuto essere aperti... se gli ordini sono allo stesso TP allora devono essere modificati, se non sono allo stesso TP allora sono già stati modificati e non devono essere modificati di nuovo... semplice.
Quindi, essenzialmente, se ci sono due trade (stesso simbolo e numero magico) l'EA dovrebbe controllare i take profit dei trade aperti rispetto agli ordini pendenti precedentemente esistenti (che ora vengono eseguiti) e poi se sono uguali, dovrebbe essere modificato, e una volta in loop controllerà nuovamente e troverà che non sono uguali e quindi non modificherà ulteriormente i trade?
1. La modifica e il controllo dovrebbero avvenire solo quando ci sono due operazioni aperte, come dovrei fare? Devo aggiungere al codice che ho già o ricominciare da capo?
2. Quindi, essenzialmente, se ci sono due trade (stesso simbolo e numero magico) l'EA dovrebbe controllare i take profit dei trade aperti rispetto agli ordini pendenti precedentemente esistenti (che ora vengono eseguiti) e quindi se sono uguali, dovrebbe essere modificato, e una volta in loop controllerà nuovamente e troverà che non sono uguali e quindi non modificherà ulteriormente i trade?
1. Fate un loop tra gli ordini aperti, controllate il simbolo, il numero magico, quando avete una corrispondenza che non è un tipo di ordine pendente incrementate un contatore . . . quando avete finito di controllare gli ordini se ne avete contati 2 allora avete 2 ordini aperti per il simbolo corretto e il numero magico . . . quindi ora potete modificarli . . . vedi 2.
2. No, non puoi vedere il TP degli ordini pendenti se sono stati attivati e ora non sono più pendenti. L'EA dovrebbe controllare la barra delle 23:00 e capire quali sarebbero stati i TP originali... poi confrontarli con i TP dei 2 ordini aperti... da questa informazione si può decidere se modificare o meno.
1. Fate un loop tra gli ordini aperti, controllate il simbolo, il numero magico, quando avete una corrispondenza che non è un tipo di ordine pendente incrementate un contatore . . . quando avete finito di controllare gli ordini se ne avete contati 2 allora avete 2 ordini aperti per il simbolo corretto e il numero magico . . . quindi ora potete modificarli . . . vedi 2.
2. No, non puoi vedere il TP degli ordini pendenti se sono stati attivati e ora non sono più pendenti. L'EA dovrebbe controllare la barra delle 23:00 e capire quali sarebbero stati i TP originali... poi confrontarli con i TP dei 2 ordini aperti... da questa informazione si può decidere se modificare o meno.
Ah ho capito, credo che questo sia quello che ho cercato di fare per tutto il tempo. Finora uno degli ordini viene modificato (in particolare quello di acquisto che è l'ordine 2 nei miei test) ma continua a essere modificato, devo usare 'break' per evitare che si ripeta? Inoltre, come faccio a contare e modificare solo gli ordini aperti quando e solo quando ce ne sono due aperti? Ho provato a usare OrdersTotal() per questo, ma non funziona, non credo di dover fare due pezzi di codice separati per ogni ordine, giusto?
Solo gli ordini aperti di numero pari vengono modificati e come ho detto vengono ripetutamente modificati, ho provato varie combinazioni per OrderSelect() ma non riesco ancora a capirlo, come ho detto sono un noob totale in MQL e questo EA è quasi finito quindi vorrei solo finirlo. Ho letto questohttps://book.mql4.com/trading/ordermodify potrebbe avere qualcosa a che fare con la mia situazione? È per uno stop loss ma ne ho bisogno per un take profit essenzialmente.
Cosa sto facendo di sbagliato qui?
Come potrei verificare se il TP è lo stesso della candela delle 23:00? Sarebbe necessario in quanto tale, dato che finché gli ordini aperti vengono modificati quando ce ne sono 2 si ottiene lo stesso effetto? O questo è solo per evitare che l'ordine venga continuamente modificato e sì, ho controllato la documentazione.
Grazie,
madmax3
Il tuo return(0) ti porta fuori da start() prima che il 2° ordine sia modificato.
Tutto quello che stai facendo è selezionare l'ordine per posizione, controllare che abbia il numero Magic corretto, controllare che sia il simbolo corretto e controllare che sia OP_BUY . . . . poi lo modifichi, dove stai determinando se è già stato modificato o meno?
Il tuo EA deve essere in grado di recuperare dopo essere stato interrotto... se i tuoi ordini vengono piazzati e MT4 si blocca, deve essere in grado di riprendere da dove ha lasciato quando viene riavviato.
Questo è il motivo per cui è necessario determinare se l'ordine è già stato modificato o deve essere modificato... come?
"Ho impostato due ordini pendenti a un'ora specifica, precisamente alle 23:00 GMT+2 credo. Uno degli ordini pendenti è un sell stop e l'altro è un buy stop, entrambi gli ordini sono ad una distanza uguale dall'open della candela delle 23:00, in questo caso 14 pips. Entrambi hanno un TakeProfit di 28 pip (in questo caso) e uno StopLoss di 55 pip".
Puoi calcolare dove era il TP originale in riferimento alla candela delle 23:00, controllare l'ordine e vedere se è ancora impostato sul TP originale, se lo è allora può essere modificato... se non lo è allora è già stato modificato quindi non modificarlo di nuovo.
Ci sono altri modi di registrare che l'ordine è stato modificato, tenere traccia del numero del ticket, scrivere le informazioni in un file quando è stato modificato, quando si sta per modificarlo di nuovo aprire il file e controllare il numero del ticket, ecc ... Penso che controllare rispetto al TP originale sia molto più semplice.
Finora ho questo,
Il codice di scrittura del file come incluso in sopra è,
Sto ricevendo questi errori però,
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Versione 2: FileOpen - troppi file aperti
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Versione 2: handle -1 non valido in FileWrite
Cosa c'è di strano?
Perché mai hai scelto la più difficile delle due opzioni?
Quando hai finito di scrivere sul file devi chiuderlo... se è già aperto non hai bisogno di aprirlo di nuovo.
Il tuo ciclo for è sbagliato ... la posizione dell'ultimo ordine è 0 e non 1
Perché mai hai scelto la più difficile delle due opzioni?