Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 691

 

Bonjour, j'ai besoin d'aide avec le code, je suis un débutant.

Le problème est le suivant : le suivi ne fonctionne que dans le sens de l'achat, et dans le sens de la vente, il ne fonctionne pas et le code donne l'erreur"Error of ordermodification. Code d'erreur=4051".

Voici la partie du code responsable du suivi :

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:

Bonjour, j'ai besoin d'aide avec le code, je suis un débutant, je pense qu'il ne serait pas approprié d'insérer le code entier ici.

Le problème est que le trailing ne fonctionne que dans le sens de l'achat et ne fonctionne pas dans le sens de la vente et le code donne l'erreur"Error in ordermodification. Code d'erreur=4051".

Si vous pouvez m'aider à résoudre ce problème, veuillez envoyer un message à l'adresse suivante

Ce fil est pour la discussion, pas pour les couloirs.
 
Artyom Trishkin:
Le sujet est à discuter, pas les couloirs.

S'il vous plaît pardonnez-moi ^_^

J'ai collé une partie du code, veuillez indiquer où se trouve l'erreur.

 
Ivan Rozhkov:

S'il vous plaît pardonnez-moi ^_^

J'ai inséré une partie du code, veuillez me dire où se trouve l'erreur.

Regardez dans ce fil - j'ai posté un modèle de chalut. Quelque part au milieu.
 
Ivan Rozhkov:

Bonjour, j'ai besoin d'aide avec le code, je suis un débutant.

Le problème est le suivant : le suivi ne fonctionne que dans le sens de l'achat, et dans le sens de la vente, il ne fonctionne pas et le code donne l'erreur"Error of ordermodification. Code d'erreur=4051".

Voici la partie du code responsable du suivi :

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

//|                      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 ордера успешно модифицирована.");
       }
     }
}          
et je n'aime pas l'ensemble du design, voici une simple magik traînante, presque la même que la vôtre :

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);
  }
 
comment écrire correctement un iCustom pour ZigZag, afin qu'il produise les valeurs des extrema ?
 
02031986dima:
comment écrire correctement un iCustom pour ZigZag, afin qu'il produise les valeurs des extrema ?

Vous n'avez pas besoin d'écrire quoi que ce soit, vous devez juste venir et prendre...

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

Je n'aime pas l'ensemble de la construction, voici une simple magik de queue, presque identique à la vôtre :

.

Merci beaucoup pour votre aide, l'ajout de votre code de suivi ne fonctionne pas pour une raison quelconque, je dois faire quelque chose de mal(((

if((OrderStopLoss()==0.0)

Je l'ai ajouté et cela a fonctionné, mais il continue à recevoir des messages d'erreur #1 et #4051.

#1-Aucune erreur, mais le résultat est inconnu.

#4051-Valeur invalidedu paramètre de fonction

 

Bonjour, il y a un tableau de données de type datatime,

comment le transformer en un fichier lisible ?

Code :

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

Il n'écrit que s'il y a le drapeau FILE_BIN, mais il écrit de manière illisible.

Si l'indicateur FILE_BIN n'est pas présent, le fichier reste vide.

 
Karlinvain:

Bonjour, il y a un tableau de données de type datatime,

comment le transformer en un fichier lisible ?

Code :

Il n'écrit que s'il y a le drapeau FILE_BIN, mais il écrit de manière illisible.

Si l'indicateur FILE_BIN n'est pas présent, le fichier reste vide.

FileWriteArray

Note .

Un tableau de chaînes de caractères ne peut être écrit que dans un fichier de type TXT. Dans ce cas, les chaînes de caractères se terminent automatiquement par "\r\n". En fonction du type de fichier ANSI ou UNICODE, les chaînes de caractères sont converties en codage ansi, ou non.

Raison: