Potete dirmi per favore come impostare la selezione degli ordini per simbolo per OrdersTotal()?
int total=OrdersTotal();
if(total==0&&Bid>=OrderBuy&&Bid<=OrderBuy+10*Point)
{
if(OrderSend(Symbol(),OP_BUY,Lot,Ask,5,0,0,NULL,0,0,clrNONE)){::Alert(" Order Open ");}
}
In questo momento, se c'è un ordine aperto su una coppia, non si aprirà su altre.
Per i vostri scopi OrdersTotal() è il numero totale di ordini aperti (numerati a partire da 0) nel terminale, quindi è necessario selezionarli uno per uno (passare attraverso il ciclo) utilizzando OrderSelect() e manipolare gli ordini necessari
for (i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
// проверим символ ордера, проверим магикномер ордера....
}
}
Potete dirmi come impostare la selezione degli ordini per simbolo per OrdersTotal()?
In questo momento, se c'è un ordine aperto su una coppia, non si apre sugli altri.
Ho bisogno di controllare periodicamente (contarmi) i miei ordini come necessario. Ho in ogni EA un ciclo (un metodo enorme) che viene chiamato prima delle azioni importanti:
for(int pos=OrdersTotal()-1; pos>=0;pos--) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */ continue;
}
if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }
if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue; else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }
if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }
/// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)
/// проверяются несработки, считается кол-во, статистика, позиции и прочее
periodicamente, come necessario, per controllare (autocontrollare) i loro ordini. Ho un ciclo (un metodo enorme) in ogni EA, che viene chiamato prima delle azioni importanti:
for(int pos=OrdersTotal()-1; pos>=0;pos--) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */ continue;
}
if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }
if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue; else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }
if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }
/// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)
/// проверяются несработки, считается кол-во, статистика, позиции и прочее
}
controllare l'ordine in base al simbolo è evidenziato
Come nota a margine, capisco che i ticker degli ordini storici possono perdersi. La domanda è se i ticker degli ordini(SELECT_BY_TICKET) in MT4 e i ticker delle operazioni e delle posizioni in MT5 possono cambiare.
E inoltre, l'ordine può essere cambiato dopo l'OrderSelect sul biglietto. Per esempio il giorno dopo. L'EA non è disattivato.
Se l'ordine in sospeso è diventato un ordine a mercato, puoi visualizzarlo in base al suo tipo. Se l'ordine a mercato ha chiuso, allora guardiamo il tempo di chiusura dell'ordine, non uguale a zero OrderCloseTime()!=0
Se l'ordine in sospeso è stato chiuso dalla sua durata, allora come facciamo a rintracciarlo dal ticket dell'ordine.
E una domanda, la durata di vita è anche in ordini di mercato (MT4), funziona?
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Potete dirmi per favore come impostare la selezione degli ordini per simbolo per OrdersTotal()?
In questo momento, se c'è un ordine aperto su una coppia, non si aprirà su altre.
Potete dirmi per favore come impostare la selezione degli ordini per simbolo per OrdersTotal()?
Ora, se c'è un ordine aperto su una coppia, non si apre su altre.
Guarda su kodobase, c'è un esempio in ogni EA
Guarda in kodobase, c'è un esempio in ogni consulente
Io non sono un programmatore (
È un po' complicato per me.
Non sono un programmatore(
È un po' complicato per me.
non è complicato.
per scrivere un EA di base, ecco tutte le funzionalitàhttps://www.mql5.com/ru/forum/131859
Per i vostri scopi OrdersTotal() è il numero totale di ordini aperti (numerati a partire da 0) nel terminale, quindi è necessario selezionarli uno per uno (passare attraverso il ciclo) utilizzando OrderSelect() e manipolare gli ordini necessari
Potete dirmi come impostare la selezione degli ordini per simbolo per OrdersTotal()?
In questo momento, se c'è un ordine aperto su una coppia, non si apre sugli altri.
Ho bisogno di controllare periodicamente (contarmi) i miei ordini come necessario.
Ho in ogni EA un ciclo (un metodo enorme) che viene chiamato prima delle azioni importanti:
for(int pos=OrdersTotal()-1; pos>=0;pos--) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
continue;
}
if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }
if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }
if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }
/// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)
/// проверяются несработки, считается кол-во, статистика, позиции и прочее
}
controllare un ordine sul simbolo è evidenziato
periodicamente, come necessario, per controllare (autocontrollare) i loro ordini.
Ho un ciclo (un metodo enorme) in ogni EA, che viene chiamato prima delle azioni importanti:
for(int pos=OrdersTotal()-1; pos>=0;pos--) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
continue;
}
if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }
if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }
if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }
/// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)
/// проверяются несработки, считается кол-во, статистика, позиции и прочее
}
controllare l'ordine in base al simbolo è evidenziato
Come nota a margine, capisco che i ticker degli ordini storici possono perdersi. La domanda è se i ticker degli ordini(SELECT_BY_TICKET) in MT4 e i ticker delle operazioni e delle posizioni in MT5 possono cambiare.
E inoltre, l'ordine può essere cambiato dopo l'OrderSelect sul biglietto. Per esempio il giorno dopo. L'EA non è disattivato.
Se l'ordine in sospeso è diventato un ordine a mercato, puoi visualizzarlo in base al suo tipo. Se l'ordine a mercato ha chiuso, allora guardiamo il tempo di chiusura dell'ordine, non uguale a zero OrderCloseTime()!=0
Se l'ordine in sospeso è stato chiuso dalla sua durata, allora come facciamo a rintracciarlo dal ticket dell'ordine.
E una domanda, la durata di vita è anche in ordini di mercato (MT4), funziona?
Potete dirmi per favore come impostare la selezione degli ordini per simbolo per OrdersTotal()?
Ora, se c'è un ordine aperto su una coppia, non si apre su altre.
La questione è già risolta. Grazie a tutti.
Ciao cari signori! Non capisco cosa c'è di sbagliato, perché scrive Alert: time3-time1 = datetime sbagliato?
perché il numero è negativo :-)
secondo questa logica il tempo1 è __sempre __più del tempo3
perché il numero è negativo :-)
secondo la logica data il tempo1 è __sempre __più del tempo3
Grazie! A volte il cervello si spegne.