[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 619

 
kwadrad:

Que pouvez-vous faire ?

mettre à jour les données avant l'ouverture, normaliser le prix

Vinin:

J'ai tout de suite écrit que cette fermeture n'est pas recommandée. Une fonctionnalité non documentée est utilisée. Mais toute position ouverte a une heure de clôture égale à zéro, et le prix de clôture sera égal au prix de clôture actuel.

après toutes ces expériences, c'est déjà évident)

 
kwadrad:

Que peut-on faire à ce sujet ?

Examinez attentivement les prix que vous fixez lorsque vous ouvrez une position. Il doit bien y avoir... Est-ce que Ask est confondu avec Bid?
 
artmedia70:
Examinez attentivement les prix que vous fixez lorsque vous ouvrez une position. Il doit bien y avoir... Est-ce que Ask est confondu avec Bid?

Oui, c'est vrai. Je l'ai fait.
 
kwadrad:

il l'est. Merci.
De rien - c'est la première chose sur laquelle les nouveaux venus s'embrouillent, je sais...
 
Quelqu'un a-t-il fait un simple stop suiveur pour déplacer un ordre en attente derrière le prix au lieu du niveau de stop ? Est-il possible de le faire ?
J'ai essayé et essayé, mais tout ce que j'ai obtenu, c'est que l'ordre en attente se déplace d'avant en arrière derrière le prix comme un malade...
.

Est-il possible de retravailler la fonction de suivi simple pour qu'elle traite les ordres au lieu des arrêts ? Par exemple, celui-ci :

//+----------------------------------------------------------------------------+
//|  Сопровождение позиции простым тралом                                      |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
  void TrailingPositionsSimplTR(string sy="", int op=-1, int mn=-1) {
  double p, pp;
  int    i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pp=MarketInfo(sy, MODE_BID);
            if (!ProfitTrailing || (pp-OrderOpenPrice())>TrailingStopBuy*p) {
              if (OrderStopLoss()<pp-(TrailingStopBuy+TrailingStepSimplTR-1)*p) {
                ModifyOrder(sy, -1, pp-TrailingStopBuy*p, 0, clModifyBuy);//
              }
            }
          }
          if (OrderType()==OP_SELL) {
            pp=MarketInfo(sy, MODE_ASK);
            if (!ProfitTrailing || OrderOpenPrice()-pp>TrailingStopSell*p) {
              if (OrderStopLoss()>pp+(TrailingStopSell+TrailingStepSimplTR-1)*p || OrderStopLoss()==0) {
                ModifyOrder(sy, -1, pp+TrailingStopSell*p, 0, clModifySell);
              }
            }
          }
        }
      }
    }
  }
}
 
ToLik_SRGV:

Print() arrondit à 4 chiffres pour afficher correctement sur la console le type double(qui retourne iOpen() 5 décimales, dans ce cas), vous devez utiliser la fonction DoubleToStr()

string DoubleToStr( double value, int digits)
Convertit une valeur numérique en une chaîne de texte contenant la représentation en caractères d'un nombre dans le format de précision spécifié.

Paramètres :

value - Величина с плавающей точкой.

digits - Формат точности, число цифр после десятичной точки (громное спасибо.


Merci beaucoup.
 
Roger:


Consultez cet EA, je l'ai implémenté ici.

http://www.rogersignals.com/ru/experts.php?a=Support_Resistance

OK, merci, je vais me renseigner...
 
artmedia70:
Quelqu'un a-t-il fait un simple stop suiveur pour déplacer un ordre en attente derrière le prix au lieu du niveau de stop ? Est-il possible de le faire ?
J'ai essayé et essayé, mais tout ce que j'ai obtenu c'est que l'ordre en attente se déplace d'avant en arrière derrière le prix comme une personne malade....

Est-il possible de retravailler la fonction de suivi simple pour qu'elle traite les ordres au lieu des arrêts ? Par exemple, celui-ci :

Tout est trop compliqué :))))
Voici mon code

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing)-Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && (Ask+Point*trailing)-Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid-(Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && Bid-(Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
Vous passez en méthode comme paramètres un medge retardé, et un trall souhaité.
 
      for (i =0;i<OrdersTotal();i++)
      {
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGICMA&&OrderSymbol()==Symbol())
         {
            if (MathAbs(funk-OrderOpenPrice())>Point)
            {
               if (OrderType()==OP_BUYSTOP||OrderType()==OP_BUYLIMIT&&MathAbs(Ask-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk+TakeProfiti*Point,Digits),0);
               }
               if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT&&MathAbs(Bid-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk-TakeProfiti*Point,Digits),0);
               }
            }
         }
      }
quelque chose comme ça, où la commande est parcourue en fonction de la valeur funk calculée.
 
ToLik_SRGV:

C'est un peu trop compliqué pour vous :))
Voici mon code

Passez dans la méthode comme paramètres un medjw retardé, et trall souhaité.

Merci ! Je pense que c'est ça !