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

 
Izdesbyll:

Per favore, aiutatemi!

Errore 0 e l'ordine non si chiude! Cosa c'è che non va?

E perché normalizzare il prezzo a due? A Cifre è necessario. È più facile scrivere OrderClosePrice() invece di Bid
 

Può essere che abbia chiuso parte dell'ordine?

E se provi in questo modo, cosa dice?

double bylo = OrderLots();
if (OrderClose( OrderTicket(), 0.1, NormalizeDouble(Bid,2), 1 ))    Alert ("  Закрито частину лоту в розмірі 0.1 від ",bylo);
else Alert("Маємо помилку ",GetLastError());
 

artmedia70:
А почему нормализуете цену до двух? До Digits нужно. А проще писать OrderClosePrice() вместо Bid


 OrderClose( OrderTicket(), 0.1, OrderClosePrice(), 1 );  
      Alert("Маємо помилку ",GetLastError());

Ora dà errore 4051

 
ALXIMIKS:

È possibile che abbia chiuso parte dell'ordine?

E se provasse in questo modo, cosa dice?



bylo = 0,1 e non chiude il mio ordine.
 
Ora è tutto un guasto, scrivo:
 double p[100];
 p[i+1] = OrderProfit();
 if (p[i+1]>0) 
    {
      Alert("Є прибуток ордер ",i+1);
      OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES); 
      Alert("Маємо помилку ",GetLastError());
      Alert("Вибрали ордер ",i+1);
      OrderClose( OrderTicket(), 0.1,  NormalizeDouble(Bid,Digits), 1 );  
      Alert("Маємо помилку ",GetLastError());
      Alert("Закрили ордер ",i+1); 

I+1 = 2 e ovunque, ma il terzo ordine ha cominciato a chiudersi.

 
Izdesbyll:

Per favore, aiutatemi!

Errore 0 e l'ordine non si chiude! Cosa c'è che non va?

Che ne dite di provare in questo modo:

    double ld_Price;
    if (OrderType() == 0) ld_Price = NormalizeDouble (Bid, Digits);
    else ld_Price = NormalizeDouble (Ask, Digits);
    OrderClose (OrderTicket(), OrderLots(), ld_Price, 2);

E non dimenticate di SUPERARE il relativo ordine prima della procedura di cancellazione!!!

 
Izdesbyll:
Ora è un problema totale, sto scrivendo:

i+1 = 2 e ovunque, ma il terzo ordine ha iniziato a chiudere.

Se raccogliete i biglietti in un array, l'ordine dovrebbe essere SELEZIONATO per TICKET, e non per la propria lista (ordine).
 
TarasBY:

Che ne dite di provare in questo modo:

E non dimenticate di ESCLUDERE il relativo ordine prima della procedura di cancellazione!!!


if (p[i+1]>0) 
    {
      Alert("Є прибуток ордер ",i+1);
      OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES); 
      Alert("Маємо помилку ",GetLastError());
      Alert("Вибрали ордер ",i+1);
      double ld_Price;
      if (OrderType() == 0) ld_Price = NormalizeDouble (Bid, Digits);
      else ld_Price = NormalizeDouble (Ask, Digits);
      OrderClose (OrderTicket(), OrderLots(), ld_Price, 2);  
      Alert("Маємо помилку ",GetLastError());
      Alert("Закрили ордер ",i+1); 

Il TERZO ordine chiude GetLastError = 0, i+1=2, OrderProfit() risponde al nulla del SECONDO ordine. help.... Vorrei scrivere (OrderTicket()-1) ma ho paura che non servirà a niente

 
Izdesbyll:

Il TERZO ordine si chiude GetLastError = 0, i+1=2, OrderProfit() risponde al nulla del SECONDO ordine. help.... Vorrei scrivere (OrderTicket()-1) ma temo che non servirà a niente

non sanno leggere (a meno che, naturalmente, non ci siano numeri di biglietti nell'array p[])!

    OrderSelect (p[i+1], SELECT_BY_TICKET, MODE_TRADES); 

...In generale, è molto difficile cogliere la "stupidità" da un pezzo di codice... :)

 
Ciao, qualcuno potrebbe dirmi se c'è un tipo di blocco per chiudere tutti gli ordini (compresa la cancellazione degli ordini in sospeso) se tutti con numeri magici diversi, nell'intervallo di 1-60. Se ce n'è uno, per favore pubblicatelo. E se non è così difficile con l'istruzione dove dovrebbe essere inserito (perché è completamente verde in mql). Grazie in anticipo.

Ho dimenticato di dirvi che vorrei chiudere sulla percentuale di profitto del deposito.