[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 39

 
artem86:

Potete per favore aiutarmi? Come chiudere 5 ordini pendenti con la stessa magia.

Grazie in anticipo!


if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderClose(OrderTicket(),LOT,price,3)==true)
            {  Print("Error = ",GetLastError()); return(0);
}  }  }  }  }
Se tutti questi ordini sono stati aperti per vendere allora prezzo=Ask, se per comprare allora prezzo=Bid.
 
paladin80:
Se l'ordine è stato aperto per vendere allora prezzo=Ask, se per comprare allora prezzo=Bid.


Sbagliato, dovresti

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderDelete(OrderTicket())==true)
              {  
              Print("Error = ",GetLastError()); return(0);
              } 
         } 
      }  
   }  
}
 
r772ra:


Sbagliato, devi

Merda, non ho notato che avrei dovuto chiudere gli ordini pendenti, stavo pensando di chiudere le posizioni.
 

Ragazzi - ditemi, nel tester, e poi quando si fa trading sul conto di trading, anche manualmente, risulta che è possibile NON NORMALIZZARE il volume della posizione aperta, mentre questa verrà aperta del volume richiesto. Per esempio, se apro un ordine con 0,1210 lotti, il terminale aprirà con 0,12, cioè la parte frazionaria "extra" viene scartata per default.

Si prega di avvisare se questo è un altro "aggiornamento" del terminale o se era possibile in origine.

Ho usato questo metodo di normalizzazione del volume prima, ma ho perso questo punto in una delle mie operazioni e gli ordini continuano ad aprirsi e la scheda Expert Advisors mi dà il volume preliminare da aprire prima di aprire la posizione, in particolare 0,121 lotti - lo sto testando su un conto demo.

Funzione di normalizzazione del lotto:

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotStep, 0) * lotStep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}

Chiamata dall'inizio di EA:

// ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (lastType == OP_SELL) WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask, 0, 0, "итерация" , MagicNumber);
                    if (lastType == OP_BUY)  WmOrderSend(Symbol(), OP_SELL,Lots_New, Bid, 0, 0, "итерация" , MagicNumber);

Chi ne è a conoscenza - commenta, plz...

P.S. Controllato di nuovo - apparentemente c'è una situazione che quando si tenta di aprire un volume di 0,1466 - apre 0,14, cioè, rifiuta tutto a destra del 2 ° segno dopo il punto decimale.

Se effettuiamo la normalizzazione, sembra che ci sarà un'apertura di 0,15 lotti - cioè con arrotondamento.

Dovrò controllare...

P.P.S. Tutto lo stesso: chi lo sa - commenta, per favore...

 

Ignora, cazzo.

 
AIUTO...PER FAVORE...Sto eseguendo l'Expert Advisor su una demo e un conto reale, dice: sarà avviato con il prossimo tick...Il tick arriva ma non parte anche se l'opzione "allow the EA to trade" è selezionata, l'EA è abilitato, nessun errore nel log, Internet funziona e anche altri EA funzionano.Questo adviser funziona bene nel tester.Se aiuta: l'EA ha smesso di funzionare dopo che ho aggiunto la funzione filtro in esso da questo articolo
 
sellena:
Se può aiutare: l'EA ha smesso di accendersi dopo che ho aggiunto la funzione di filtro da questo articolo

Se ti aiuta, parla con uno dei lavoratori qui.
 
sergeev:

Se ti aiuta, parla con uno dei lavoratori qui.
Alex, dai un'occhiata alla mia domanda se hai tempo... Grazie.
 
Roman.:
Alex, dai un'occhiata alla mia domanda se hai tempo... Grazie.

Posso dirvi una cosa - ho già contattato il servizio (in un'altra occasione) e mi hanno detto: "affidarsi ai default è dannoso, usate i vostri filtri e trattamenti se volete essere sicuri". Quindi sta a voi...
 
Roman.:
Alex, dai un'occhiata alla mia domanda se hai tempo... Grazie.

Le FAQ lo dicono bene. Non si può fare affidamento sui "default". Perché mi ricordo che l'errore 131 (lotto sbagliato) veniva spesso fuori, se non si fa una normalizzazione prima di inviare un ordine.
Forse ora gli MMO hanno fatto il loro controllo dei lotti di default sui server quando inviano un ordine per l'esecuzione.

Quindi dovresti sempre fare la tua normalizzazione dei prezzi e dei lotti prima dell'invio.

Queste sono per voi le regole di una buona codifica e la promessa di meno seccature con potenziali problemi in futuro.

Motivazione: