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 - gliordini 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:
Se abbiamo solo due posizioni, allora dovremmo cercare quella che ha più profitto e chiuderla.
Se abbiamo più di due posizioni, se il loro profitto totale è superiore a quello specificato, allora chiudiamo tutte le posizioni.
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
L'ho già sottolineato sopra - gliordini 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 loSL di una delle due non scatti per primo.
Aggiunto.
Ho mostrato una soluzione di esempio per due casi:
Abbiamo solo due posizioni - quindi cerchiamo quella con più profitto e la chiudiamo.
Avere più di due posizioni - se il loro profitto totale è superiore a quello specificato - chiudere tutte le posizioni
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?
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 loSL di una delle due non scatti per primo.
Mi dispiace:
Ho mostrato una soluzione di esempio per due casi:
Abbiamo solo due posizioni - quindi cerchiamo quella con il profitto maggiore e la chiudiamo.
Se abbiamo più di due posizioni, se il loro profitto totale è maggiore di quello specificato, chiudiamo tutte le posizioni.
Buona sera ragazzi, non per moltiplicare gli argomenti - la mia domanda è questa - lo script ha impostato un ordine di stop pendente con un take e stop ben definito, non viene eseguito, e nei commenti è prescritto [illiquidità] - come combattere - per mettere in loop lo script prima dell'esecuzione, impostare uno slippage più alto, o prescrivere il numero di tentativi o cosa ? O dammi un suggerimento su dove scavare.
neitrino22: 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
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
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.
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.