[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 451

 
Vinin:

Perché il proverbio inglese "le grandi menti pensano allo stesso modo" in russo
corrisponde alla frase "gli sciocchi pensano allo stesso modo"?

 
Vinin >>:

Наверно надо предварительно выбрать ордер.

Lo so, l'ho già scritto a pagina 445, ma ho ancora un problema.


Il mio problema è arrivare a un punto ridicolo. Errore nella funzione di chiusura dell'ordine.

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

Ho un errore (in diversi terminali)

EURCHF,M5: errore OrderClose 4107

EURCHF,M5: prezzo non valido 1.48566000 per la funzione OrderClose


se lo faccio

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

Ma quando scrivo OrderClose(...) non in una funzione separata, ma in int start(), questo errore non si verifica.

Qual è il problema e come risolverlo?



 
Urain писал(а) >>

Perché il proverbio inglese "le grandi menti pensano allo stesso modo" in russo
corrispondono a "gli sciocchi pensano allo stesso modo"?

Allora siamo fortunati.

 
T-G писал(а) >>

Lo so, l'ho già scritto a pagina 445, ma ho ancora un problema.

Il mio problema è arrivare a un punto ridicolo. Errore nella funzione di chiusura dell'ordine.

Ho un errore (in diversi terminali)

EURCHF,M5: errore OrderClose 4107

EURCHF,M5: prezzo non valido 1.48566000 per la funzione OrderClose

se lo faccio

Ma quando scrivo OrderClose(...) non in una funzione separata, ma in int start(), questo errore non si verifica.

Qual è il problema e come risolverlo?

Non lo so, non lo so. Uso sempre la mia funzione per chiudere l'ordine.

Come esempio, questo.

//+------------------------------------------------------------------+
//|                                         Функция закрытия ордеров |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| void Order_Close(int lMagic, int lOP=-1);                        |
//+------------------------------------------------------------------+
void Order_Close(int lMagic, int lOP=-1){
   bool res;
   GetLastError();
   for(int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))   continue;
      if (OrderSymbol() != Symbol())                     continue;
      if (OrderMagicNumber() != lMagic)                   continue;
      if (OrderType()!= lOP && lOP!=-1)                     continue;
      
      RefreshRates();
      double _ask      =MarketInfo(Symbol(),MODE_ASK);
      double  _bid     =MarketInfo(Symbol(),MODE_BID);
      double  _point   =MarketInfo(Symbol(),MODE_POINT);
      double  _digits  =MarketInfo(Symbol(),MODE_DIGITS);

      double ClosePrice=NormalizeDouble( iif(OrderType()==OP_BUY,_bid, _ask),_digits);
      res=OrderClose(OrderTicket(), OrderLots(), ClosePrice, 3, iif(OrderType()==OP_BUY, clCloseBuy, clCloseSell));
      if (! res) {
         int err=GetLastError();
         Print("Error(", err,") delete order ", NameOP[ lOP],": ", ErrorDescription( err));
      }
   }
}

Per usarlo avete bisogno di più funzioni

//+------------------------------------------------------------------+
//|                                    Функция логического сравнения |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| double iif(bool A, double B, double C);                          |
//+------------------------------------------------------------------+
double iif(bool A, double B, double C) {if( A) return( B); return( C); }
 

Aiuta il problema del controllo dei buchi della storia. Per favore consigliatemi un meccanismo realmente funzionante per l'Expert Advisor per catturare l'errore 4066.

Se non c'è un controllo univoco sulla procedura di caricamento dei dati storici, il trading con Expert Advisors non ha senso.

Il rischio di questo tipo di trading tende semplicemente all'infinito, qualsiasi strategia di trading si usi.


Sono stato molto sorpreso che la soluzione a questo problema l'utente deve pensare da solo e attraverso un posto.

Penso che la mancanza di un chiaro supporto da parte dello sviluppatore su questo tema sia una pura montatura.

Penso che MetaQuotes potrebbe pubblicare una serie di soluzioni raccomandate e testate per domande e problemi comuni.

 
MoneyJinn писал(а) >>

Penso che MetaQuotes potrebbe pubblicare una serie di soluzioni raccomandate e testate per domande e compiti comuni standard.

L'articolo "Grafici senza buchi" potrebbe aiutare... https://www.mql5.com/ru/articles/1407

 

L'argomento è "qualsiasi domanda" e non solo sul codice, giusto?

Ho una domanda, o meglio voglio un'opinione, dove pensate che andrà il prezzo?



 
T-G >>:

Тема же называется "любой вопрос" а не только по коду?

У меня вопрос, а точнее хочется узнать мнение, куда по вашему мнению двинется цена?

questa non è una domanda da principiante :)

 
Aiuta a risolvere questo problema.
Se c'è una funzione che divide un lotto sovradimensionato in più ordini, per favore condividila.

Grazie.




Motivazione: