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

 

Ciao a tutti!

Qual è il modo più semplice per scrivere (modificare) un ordine nel mio semplice Expert Advisor per eliminare Take Profit e Stop Loss in esso quando si verifica una certa condizione, il massimo dovrebbe essere non più di tre ordini in una direzione (se questo è importante), il conteggio degli ordini, come ho capito è usato, dovrei scriverne uno nuovo? Sto aspettando qualcuno che si preoccupi.

 
Порт-моне тв #:

Ciao a tutti!

Qual è il modo più semplice per scrivere (modificare) un ordine nel mio semplice Expert Advisor per eliminare Take Profit e Stop Loss in esso quando si verifica una certa condizione, fino a un massimo di tre ordini in una direzione (se questo è importante), presumo che il conteggio degli ordini sia usato, dovrei scriverne uno nuovo? Sto aspettando qualcuno che si preoccupi.

OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0);
 
Ivan Butko #:

Sfortunatamente, è difficile capire come usare tale codice.


Ho provato a mettere un flag in 1 quando si apre un ordine di acquisto, e un flag in 0 quando lo si chiude, e ho aggiunto quest'ultimo alla condizione di apertura. Non ha funzionato)
È strano, infatti la regola è rotta: aprire se il flag==0. E ha comunque aperto a 1 sulla stessa candela.

Mostrami come hai fatto.
 
Alexey Viktorov #:

Perché così complicato?

Non fare il furbo. La domanda non riguardava questo.

 
MakarFX #:
Mostrami come hai fatto.

Sembra funzionare, l'ho rifatto così. Ora lo proverò sulla vendita e vedrò se possono essere indipendenti l'uno dall'altro

int Buy=0,
    Sell=0;

void OnTick(void)
  {
    double 
    ma=iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0),
    ma2=iMA(NULL,0,80,0,MODE_SMA,PRICE_CLOSE,0);

    if (ma>ma2 && Buy==0) 
      { 
        OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - SL * Point, 0, NULL, 888, 0, Blue);
        Buy=1; 
      }
      
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=888 || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(perceptron_B() < Porog_B)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
            Buy=1;
           }
           
         break;
        }

UPD
Phew, ha funzionato) Ho fatto lo stesso per vendere, ora possono aprirsi indipendentemente l'uno dall'altro e hanno una logica diversa.

 
Ivan Butko #:

Sembra funzionare, l'ho rifatto così. Ora lo proverò sulla vendita e vedrò se possono essere indipendenti l'uno dall'altro

UPD
Phew, il design ha funzionato) Ho fatto lo stesso per vendere, ora possono aprirsi indipendentemente ed essere accompagnati da una logica diversa.

Probabilmente viene cancellato durante la compilazione))))

 
MakarFX #:

Probabilmente viene imprecato alla compilazione))))

Giusto! Un po',"il valore di ritorno di 'OrderSend' dovrebbe essere controllato AI (2).mq4 34 9"

Ma sembra funzionare)
 
Ivan Butko #:

Giusto! Un po',"il valore di ritorno di 'OrderSend' dovrebbe essere controllato AI (2).mq4 34 9"

Ma sembra funzionare)

Fallo così

    if (ma>ma2 && Buy==0) 
      { 
        if(OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - SL * Point, 0, NULL, 888, 0, Blue))
        Buy=1; 
      }
 
MakarFX #:

Fallo!

Grazie!

 
MakarFX #:

Grazie!