Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 748

 
AlexeyVik:


Et ce code

il est préférable d'écrire dans init() et mieux encore pas comme ceci

et ensuite dans start()

J'ai besoin d'un stop d'achat suivi d'une fractale traçante derrière le prix et d'un stop de vente avec la même procédure.
 
xant:
Je retire la question, j'ai trouvé la solution moi-même.
Ce n'est pas une bonne idée de décompiler. Je conseille de retravailler complètement le code
 
Petiyashaket:
J'ai besoin d'un stop d'achat suivi (modifié) par des fractales de prix jusqu'à ce qu'il se déclenche et d'un stop de vente de la même manière.

Donc la question dans votre code, surlignée en rouge.

if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        { // К чему относится эта скобка???
        for (int pos=0;pos==OrdersTotal();pos++)
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        } // это пара к той...
     
       }  

Vous n'avez toujours pas répondu. Je ne sais pas quoi en faire, mais le résultat de l'exécution du code sera différent.

 
AlexeyVik:

Donc la question dans votre code, surlignée en rouge.

Vous n'avez toujours pas répondu. Et à partir de là, le résultat de l'exécution du code sera différent.

Pourquoi utilisez-vousVolume[0]<2 dans la condition?

Parfois, dans une tique, il y en a plusieurs. Et sur ce bar, la condition ne fonctionne plus.

 
Vinin:

Pourquoi utilisez-vousVolume[0]<2 dans la condition?

Parfois, il y en a plusieurs dans une même tique. Et sur cette barre, la condition ne fonctionnera plus.

Victor, cette question n'est pas pour moi. J'utilise cette fonction.

bool NewBar()
{
   static datetime lastbar = iTime(_Symbol, PERIOD_H1, 0); // Период можно менять по желанию
   datetime curbar = iTime(_Symbol, PERIOD_H1, 0);         // и будет отсчитывать новый бар заданного периода на любом ТФ
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

J'ai copié un morceau de code pour poser une question sur les parenthèses.

 
Vinin:

Pourquoi utilisez-vousVolume[0]<2 dans la condition?

Parfois, il y en a plusieurs dans une même tique. Et sur cette barre, la condition ne fonctionnera plus.

C'est ce qu'enseigne Oleg Remizov sur YouTube. Cette condition limite le trading sur les nouvelles et la capture des pertes :)
 
Petiyashaket:
C'est ce qu'enseigne Oleg Remizov sur YouTube, cette condition limite le trading sur les nouvelles et la capture de l'élan :)
Je n'ai rien à dire sur Remizov. Mais ne vous offusquez pas si votre code manque des barres. D'accord, si vous avez un code minute (sur quel délai, bien sûr), mais si vous comptez courir sur une heure ou plus - il n'y aura que de la pitié pour vous.
 
AlexeyVik:

Donc la question dans votre code, surlignée en rouge.

n'a jamais été répondu. Et cela rendra le résultat de l'exécution du code différent, aussi.

J'ai expérimenté les parenthèses de différentes manières, je les ai enlevées et ajoutées, le résultat est le même
 
Petiyashaket:
J'ai expérimenté les crochets de différentes manières, je les ai enlevés et ajoutés, mais le résultat est le même.

Vous n'avez pas besoin de faire des expériences, vous devez comprendre la signification de ces crochets et savoir comment les appliquer. C'est écrit dans la documentation, je ne vais pas lire une conférence à ce sujet.

if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)

        for (int pos=0;pos==OrdersTotal();pos++)
        { // наверное сюда её надо
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        } // это пара к той...
     
       }  
Mais ce n'est qu'une partie du code. Un problème similaire se pose plus loin.
 
//+------------------------------------------------------------------+
//|                                                   Strategy 3.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright ""
#property link      ""
#include <Library1.mqh>
extern int Magic=111;
extern int TP=20;
extern int SL=30;
extern int Trall_dist=10;
extern int Shag=10;
extern bool Isp_shag=false;
extern bool Isp_bezubitok=false;
extern double Lot=0.1;
double SS=0,BS=0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double tp,sl;
  if(Digits==3||Digits==5) {tp=TP*10*Point;sl=SL*10*Point;}
  else if(Digits==2||Digits==4) {tp=TP*Point;sl=SL*Point;}
  double Up=iFractals(Symbol(),0,MODE_UPPER,3);
  double Down=iFractals(Symbol(),0,MODE_LOWER,3);
//----
  if(Up>0&&Down==0&&Volume[0]<2)
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL))
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);
 //----   
    for (int pos=0;pos==OrdersTotal();pos++)
        {
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),High[3]+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        } 
    } 
  else if(Up==0&&Down>0&&Volume[0]<2)
    {
    if((Bid-Low[3]-5*Point)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL))
    OrderSend(Symbol(),OP_SELLSTOP,Lot,Low[3]-5*Point,20,Low[3]+sl,Low[3]-tp,NULL,Magic,0,Red);
    for (pos=0;pos==OrdersTotal();pos++)
        {
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_SELLSTOP)
          {
          OrderModify(OrderTicket(),Low[3]-5*Point,Low[3]+sl,Low[3]-tp,0,CLR_NONE);
          }      
        }     
    }    
   
            
    if(OrdersTotal()>0)
    Trailing_stop(Magic,Symbol(),Trall_dist,Shag,Isp_shag,Isp_bezubitok);
    return(0);
  }
//+------------------------------------------------------------------+
Si vous me l'expliquez en une ligne de code et avec des commentaires, comme dans mon code précédent, je vous en serai très reconnaissant.
Raison: