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

 

Buon pomeriggio, ho bisogno di aiuto con il codice, sono un principiante.

Il problema è il seguente - il trailing funziona solo nella direzione di acquisto, e nella direzione di vendita non funziona e il codice dà errore"Errore di modifica dell' ordine. Codice di errore=4051".

Ecco la parte del codice responsabile del trailing:

void Trailing(int tral)
{ 
  int Mag=OrderMagicNumber();  

  OrderSelect(Mag,MODE_TRADES);

//+------------------------------------------------------------------+

//|                      tral buy                                    |

//+------------------------------------------------------------------+

  if (OrderType()==OP_BUY)

  if(Bid-OrderOpenPrice()>Point*tral)
    {
    if(OrderStopLoss()<Bid-Point*tral) 
       { 
       bool ress= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*tral,Digits),0,0,Blue); 
       if(!ress) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if(OrderStopLoss()>Ask+Point*tral) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          

 
Ivan Rozhkov:

Buon pomeriggio, ho bisogno di aiuto con il codice, sono un principiante, penso che non sarebbe opportuno inserire l'intero codice qui.

Il problema è che il trailing funziona solo nella direzione di acquisto e non funziona nella direzione di vendita e il codice dà errore"Error in ordermodification ". Codice di errore=4051".

Chi può aiutarmi a capire questo, per favore mandi un messaggio a

Questo thread è per la discussione, non per i couloir.
 
Artyom Trishkin:
L'argomento è per la discussione, non per i couloir.

Per favore, perdonami ^_^

Ho incollato una parte del codice, per favore consiglia dove si trova l'errore

 
Ivan Rozhkov:

Per favore, perdonami ^_^

Inserito parte del codice, per favore dimmi dov'è l'errore

Guarda in questo thread - ho postato un modello di trawl. Da qualche parte nel mezzo.
 
Ivan Rozhkov:

Buon pomeriggio, ho bisogno di aiuto con il codice, sono un principiante.

Il problema è il seguente: il trailing funziona solo in direzione di acquisto, e in direzione di vendita non funziona e il codice dà errore"Errore di modifica dell' ordine. Codice di errore=4051".

Ecco la parte del codice responsabile del trailing:

//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if((OrderStopLoss()==0.0) || (OrderStopLoss()>Ask+Point*tral)) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          
e non mi piace l'intero design, ecco un semplice magik trailing, quasi uguale al tuo:

bool trailingpos(int magic_,int trail_p)
  {
   bool res=true; double sl,slnew,tpips=trail_p*Point; int i,k=OrdersTotal();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic_)
           {
            switch(OrderType())
              {
               case OP_BUY:
                  slnew=NormalizeDouble(Ask-tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()<slnew)
                     if((sl<slnew) || (sl==0.0))
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
               case OP_SELL:
                  slnew=NormalizeDouble(Bid+tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()>slnew)
                     if((sl>slnew) || sl==0.0)
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
              }
           }
        }
     }
   return(res);
  }
 
come scrivere correttamente un iCustom per ZigZag, in modo che emetta i valori degli estremi?
 
02031986dima:
come scrivere correttamente un iCustom per ZigZag, in modo che produca i valori degli estremi?

Non c'è bisogno di scrivere nulla, basta venire e prendere

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Igor Makanu:

Non mi piace l'intera costruzione, ecco un semplice trailing magik, quasi uguale al tuo:

Grazie mille per il tuo aiuto, aggiungendo il tuo codice trailing non funziona per qualche motivo, devo fare qualcosa di sbagliato((

if((OrderStopLoss()==0.0)

L'ho aggiunto e ha funzionato, ma continua ad essere spammato con gli errori #1 e #4051

#1-Nessun errore, ma il risultato è sconosciuto.

#4051-Valore non validodel parametro della funzione

 

Ciao, c'è un array di dati di tipo datatime,

come posso trasformarlo in un file leggibile?

Codice:

int h=FileOpen("test",FILE_WRITE|FILE_CSV|FILE_UNICODE);
      FileWriteArray(h,timeHistory,0,WHOLE_ARRAY);
      FileClose(h);

Scrive solo se c'è il flag FILE_BIN, ma scrive illeggibile.

Se il flag FILE_BIN non è presente, il file rimane vuoto.

 
Karlinvain:

Ciao, c'è un array di dati di tipo datatime,

come posso trasformarlo in un file leggibile?

Codice:

Scrive solo se c'è il flag FILE_BIN, ma scrive illeggibile.

Se il flag FILE_BIN non è presente, il file rimane vuoto.

FileWriteArray

Nota.

Un array di stringhe può essere scritto solo in un file di tipo TXT. In questo caso le stringhe sono terminate automaticamente con "\r\n". A seconda del tipo di file ANSI o UNICODE, le stringhe sono convertite in codifica ansi, oppure no.