Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1166

 

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.

 
MakarFX:

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

 
Vladimir Pastushak:

Guarda in kodobase, c'è un esempio in ogni consulente

Io non sono un programmatore (

È un po' complicato per me.

 
MakarFX:

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

for (i=OrdersTotal()-1; i>=0; i--)
{
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
  {
   // проверим символ ордера, проверим магикномер ордера....
  }
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
MakarFX:

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

 
Maxim Kuznetsov:

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?

 
MakarFX:

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é Alert: time3-time1 = datetime sbagliato?
datetime time1 = iTime(NULL,0,1);
datetime time3 = iTime(NULL,0,3);
datetime delta3 = (time3-time1);  Alert("time3-time1 = ",delta3); 


 
novichok2018:
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

 
Maxim Kuznetsov:

perché il numero è negativo :-)

secondo la logica data il tempo1 è __sempre __più del tempo3

Grazie! A volte il cervello si spegne.