Wizard #: Il codice ha bisogno della linea PositionSelectByTicket... Se è così, come faccio a scrivere correttamente il biglietto al suo interno, usando PositionGetTicket(i) o lasciando ilPositionGetInteger(POSITION_TICKET) ? Grazie in anticipo!
Non essere scortese... La documentazione non dice chiaramente
La funzione restituisce un ticket di posizione per l'indice nella lista delle posizioni aperte e seleziona automaticamente questa posizione per lavorare ulteriormente con essa
Se la posizione è già selezionata, perché riselezionarla con la funzione PositionSelectByTicket
Non per essere scortese... La documentazione non dice chiaramente
Se la posizione è già selezionata, perché riselezionarla con la funzione PositionSelectByTicket
Grazie per la vostra risposta! Me lo chiedevo, perché avendo guardato nella libreria <Trade/Trade.mqh>, la funzione PositionClose(const ulong ticket,const ulong deviation) usa anche PositionSelectByTicket. E la stessa funzione PositionClose( const ulong ticket,const ulong deviation ) è spesso usata dai codificatori in combinazione con il ciclo for(int i = PositionsTotal()-1; i >= 0; i--) , che si estende su tutte le posizioni. E mi sto chiedendo se ne sto usando uno in più da qualche parte.
Wizard #: Ciao, la linea PositionSelectByTicket è necessaria nel codice... Se sì, come scrivere correttamente un biglietto al suo interno, attraverso PositionGetTicket(i) o lasciarePositionGetInteger(POSITION_TICKET)? Grazie in anticipo!
int IsPositions()
{
int pos = 0;
int total = PositionsTotal();
for(int i = total-1; i >= 0; i--)
{
if(!PositionGetTicket(i))
continue;
if(PositionGetString(POSITION_SYMBOL) == Symbol_T && PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC)
pos = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? 1 : (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) ? -1 : 0;
}
return(pos);
}
Wizard #: Grazie per la vostra risposta! Ho iniziato a chiedermelo, perché avendo guardato nella libreria <Trade/Trade.mqh>, la funzione PositionClose(const ulong ticket,const ulong deviation) usa anche PositionSelectByTicket. E la stessa funzione PositionClose( const ulong ticket,const ulong deviation ) è spesso usata dai codificatori in combinazione con il ciclo for(int i = PositionsTotal()-1; i >= 0; i--) , che si estende su tutte le posizioni. E mi sto chiedendo se ne sto usando uno in più da qualche parte.
La funzione PositionClose(const ulong ticket,const ulong deviation) della libreria riceve un ticket della posizione da chiudere, ma nessuno sa come il ticket è stato ricevuto e se la posizione esiste.
Quindi, PositionSelectByTicket controlla soprattutto se c'è qualcosa da chiudere. E perché avete deciso che tutte le posizioni sono spesso chiuse nel ciclo? Non necessariamente...
La funzione PositionClose(const ulong ticket,const ulong deviation) della libreria riceve un ticket della posizione da chiudere, ma nessuno sa come il ticket è stato ricevuto e se la posizione esiste.
Quindi PositionSelectByTicket controlla soprattutto se c'è qualcosa da chiudere. E perché avete deciso che tutte le posizioni sono spesso chiuse nel ciclo? Non necessariamente...
Sì, ora ho capito tutto. Recentemente ho avuto un EA, l'ho scritto seguendo il tuo esempio (con le medie) da un forum, combinandolo con il codice di Timur Mashnin. Ora ho deciso di cambiare le condizioni lì e riscriverle un po', sostituendo tutto con funzioni di sistema, senza librerie. Se con un semplice PositionSelect tutto era molto semplice, una posizione - una scelta, allora con il ciclo qui ovviamente ho bisogno di più considerazioni e logica.
2022.02.0110:11:28.002 Test bag (EURUSD,H1) 2.252022.02.0110:11:28.108 Test bag (EURUSD,H1) 4.5
Mentre non ci sono posizioni aperte nel conto my_check_result.margin è uguale al margine per la posizione aperta con lotto 0,01, e quando c'è già 0,01 nel conto il margine per il lotto 0,02
Il codice ha bisogno della linea PositionSelectByTicket... Se è così, come faccio a scrivere correttamente il biglietto al suo interno, usando PositionGetTicket(i) o lasciando ilPositionGetInteger(POSITION_TICKET) ? Grazie in anticipo!
Non essere scortese... La documentazione non dice chiaramente
Se la posizione è già selezionata, perché riselezionarla con la funzione PositionSelectByTicket
Non per essere scortese... La documentazione non dice chiaramente
Se la posizione è già selezionata, perché riselezionarla con la funzione PositionSelectByTicket
Ciao, la linea PositionSelectByTicket è necessaria nel codice... Se sì, come scrivere correttamente un biglietto al suo interno, attraverso PositionGetTicket(i) o lasciarePositionGetInteger(POSITION_TICKET)? Grazie in anticipo!
Grazie per la vostra risposta! Ho iniziato a chiedermelo, perché avendo guardato nella libreria <Trade/Trade.mqh>, la funzione PositionClose(const ulong ticket,const ulong deviation) usa anche PositionSelectByTicket. E la stessa funzione PositionClose( const ulong ticket,const ulong deviation ) è spesso usata dai codificatori in combinazione con il ciclo for(int i = PositionsTotal()-1; i >= 0; i--) , che si estende su tutte le posizioni. E mi sto chiedendo se ne sto usando uno in più da qualche parte.
La funzione PositionClose(const ulong ticket,const ulong deviation) della libreria riceve un ticket della posizione da chiudere, ma nessuno sa come il ticket è stato ricevuto e se la posizione esiste.
Quindi, PositionSelectByTicket controlla soprattutto se c'è qualcosa da chiudere. E perché avete deciso che tutte le posizioni sono spesso chiuse nel ciclo? Non necessariamente...
La funzione PositionClose(const ulong ticket,const ulong deviation) della libreria riceve un ticket della posizione da chiudere, ma nessuno sa come il ticket è stato ricevuto e se la posizione esiste.
Quindi PositionSelectByTicket controlla soprattutto se c'è qualcosa da chiudere. E perché avete deciso che tutte le posizioni sono spesso chiuse nel ciclo? Non necessariamente...
Ciao
Potete per favore aiutarmi
con il codice.
Fatto un indicatore nel tester funziona correttamente
Quando lo metto sul grafico non viene visualizzato correttamente
Non riesco a capire perché sia sbagliato.
Cosa viene restituito alla struttura MqlTradeCheckResult?
È scritto nella documentazione che"L'importo del margine richiesto per l' operazione commerciale richiesta".
Campo
Descrizione
retcode
Codice di ritorno
equilibrio
Valore del saldo che sarà dopo l'esecuzione dell'operazione
equity
Valore delpatrimonio netto, che sarà dopo l'esecuzione della negoziazione
profitto
Valore del profitto fluttuante che sarà dopo l'esecuzione dell'operazione
margine
L'importo del margine richiesto per l'operazione commerciale richiesta
margine_libero
La quantità di capitale che rimarrà dopo l'esecuzione dell'operazione richiesta
livello del margine
Il livello di margine da impostare dopo l'esecuzione della compravendita richiesta
commento
Commento al codice di risposta, descrizione dell'errore
Ma ciò che si ottiene effettivamente è la dimensione del margine totale, attuale e più quello che sarà preso dopo l'esecuzione di questa operazione.
Ecco lo script
e il risultato dell'esecuzione
Mentre non ci sono posizioni aperte nel conto my_check_result.margin è uguale al margine per la posizione aperta con lotto 0,01, e quando c'è già 0,01 nel conto il margine per il lotto 0,02
Ma quello che si ottiene in realtà è la dimensione del margine totale, attuale e più quello che si prenderà dopo aver fatto questa operazione.
Giusto.
Giusto.
Che sia così, ma allora dovrebbe essere lo stesso nella documentazione.
Se balans è il valore del saldo che sarà dopo che lo scambio è fatto
poi margine - dovrebbe essere. Valore del margine, che sarà dopo l'esecuzione dell'operazione commerciale