Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1208
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
Non fa differenza. Ho il sospetto di una differenza, perché quando ho impostato ordini e posizioni, ho dato loro "commenti" per le posizioni mie, per gli ordini miei. Di conseguenza, quando un ordine si sposta in una posizione, eredita il commento dell'ordine.
Poi, quando abbiamo controllato le posizioni attraverso i commenti, c'era un casino... i commenti erano diversi. L'ho sistemato.
Nel tuo codice, non ho trovato o capito affatto come vengono chiuse le posizioni per la condizione SELL_LIMIT è scattata. Equità.
Sembra che abbiamo controllato se tutte le posizioni possono essere chiuse, e il flag è impostato per questo
ma inCloseAllPositions();
c'è qualcosa che manca.
Non c'è un controllo per la chiusura di tutte le posizioni per il caso - SELL_LIMIT è scattato.
Forse questo stessom_account.Equity()>= m_account.Balance()+15è implementato in qualche altro modo?
O forse è perché ho spiegato male cosa significa fare la media nel mio contesto.
Ho già detto sopra - gli ordini pendenti non hanno nulla a che fare con questo. Un ordine pendente non può avere un profitto. Dalla parola "a tutti". Finché non lo si chiarisce, non si può andare avanti.
Aggiunto: ho mostrato una soluzione di esempio per due casi:
L'ho già sottolineato sopra - gli ordini pendenti non c'entrano affatto. Un ordine pendente non può avere un profitto. Dalla parola "a tutti". Finché non si chiarisce questo, non si può andare avanti.
Vladimir. Beh, ovviamente, un ordine pendente non può avere un profitto. Stiamo parlando del profitto ovviamente di posizioni aperte.
L'unica differenza è nel modo in cui queste posizioni sono state aperte. Abbiamo bisogno di un metodo di chiusura diverso per loro.
Se la seconda posizione è aperta da un ordine SELL_STOP intelligente, allora uno di essi deve essere chiuso, quello che ha un profitto maggiore della posizione. Questo ha funzionato per te e funziona.
Se la seconda posizione è stata aperta da un ordine SELL_LIMIT, allora dovrebbero essere entrambe chiuse da Equity(m_account.Equity()>= m_account.Balance()+15) A meno che lo SL di una delle due non scatti per primo.
Aggiunto.
Ho mostrato una soluzione di esempio per due casi:
Tutto sembra essere a posto con la seconda condizione. Ma per qualche motivo ho la seconda condizione apre la seconda posizione e la chiude immediatamente vicino a 0 -1,2.
Forse ho specificato il profitto totale in un posto sbagliato?
InpProfitTarget = 15; Se qui, non funziona.
Vladimir. Ovviamente un ordine pendente non può avere un profitto. Stiamo parlando di profitti, naturalmente di posizioni aperte.
Solo che c'è una differenza nel modo in cui queste posizioni sono state aperte. Abbiamo bisogno di un metodo di chiusura diverso per loro.
Se la seconda posizione è aperta da un ordine SELL_STOP intelligente, allora uno di essi deve essere chiuso, quello che ha un profitto maggiore della posizione. Questo ha funzionato per te e funziona.
Se la seconda posizione è stata aperta da un ordine SELL_LIMIT, allora dovrebbero essere entrambe chiuse da Equity(m_account.Equity()>= m_account.Balance()+15) A meno che lo SL di una delle due non scatti per primo.
Mi dispiace:
Ho mostrato una soluzione di esempio per due casi:
Poi, per favore, fate qualcosa voi stessi.
Mi dispiace:
Ho mostrato una soluzione di esempio per due casi:
Da qui, per favore, fate qualcosa voi stessi.
Grazie per il tuo aiuto Vladimir, ci sto provando.
2. abbiamo più di due posizioni - se il loro profitto totale è maggiore di quello specificato, chiudiamo tutte le posizioni.
Ma non ne avevo bisogno, avevo bisogno di due o più posizioni in cui la seconda fosse aperta con l'attivazione diSELL_LIMIT.
Grazie comunque per la vostra pazienza e i vostri sforzi. Certo, lo risolverò a modo mio, soffrirò e lo risolverò)))
Buona sera ragazzi, per non moltiplicare i thread, ecco una domanda - lo script ha messo un ordine di stop pendente con un take e stop abbastanza specifico, non viene eseguito, e nei commenti è scritto [illiquidità] - come gestirlo - mandare in loop lo script prima dell'esecuzione, impostare uno slippage più alto, o specificare il numero di retake o cosa ? O dammi un suggerimento su dove scavare.
Si dovrebbe sempre guardare nella documentazione
ORDINE_TIME_GTC
L'ordine rimarrà in coda fino a quando non sarà ritirato
Si dovrebbe sempre guardare nella documentazione
ORDINE_TIME_GTC
L'ordine rimarrà in coda fino a quando non sarà ritirato
Grazie, deve essere così
Buona sera!
C'è 1 posizione aperta.
L'Expert Advisor chiude una posizione usando il metodo PositionClose();
Il risultato viene stampato ResultRetcode= 10009. Descrizione del codice: fatto a 0,00
Sotto il codice, c'è un controllo if(PositionSelect(_Symbol)), che ha successo.
Cioè, passa del tempo tra l'esecuzione di PositionClose() e la scomparsa della posizione aperta, durante il quale il programma riesce a fare un'uscita sbagliata.
Come risolvere correttamente questa situazione?
Perché devo riavviare il terminale ogni volta dopo un test per eseguire un nuovo test?
Cancello tutti gli oggetti. Chiudo i file. Ecco il log quando smetto di testare:
Ma la prossima volta non parte - devo chiudere il terminale e riaprirlo. Costruire 2361.