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

 
EVGENII SHELIPOV #:

Bonjour à tous, Je suis en train d'écrire du code pour une recherche de commandes groupées. La logique du code pour un chalut est la suivante :

Dans quelles conditions le chalutage des commandes groupées doit-il commencer ?

 
EVGENII SHELIPOV #:

Bonjour à tous, Je suis en train d'écrire du code pour une recherche de commandes groupées. La logique du code pour le chalut est la suivante :



  int order[]={1,2,3,4,5,6,7,8,9,10};



void Tral_BU_Stop() {
 
  int j;
  for (int i=OrdersTotal()-1; i>=0; i--) {
  if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==True){
  if (OrderMagicNumber()==Mg&&OrderSymbol()==Symbol()&&OrderType() ==OP_BUYSTOP){
  j++;
  if ( Bid<=OrderOpenPrice()-DistPoint*order[j]*Po){
  bool modb=OrderModify(OrderTicket(),Bid+(DistPoint*order[j])*Po,OrderStopLoss(),OrderTakeProfit(),0,clrGreen);}} }}}
//================
  void Tral_SEL_Stop() {
  
  int j;
  for (int i=OrdersTotal()-1; i>=0; i--) {
  if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==True){
  if (OrderMagicNumber()==Mg&&OrderSymbol()==Symbol()&&OrderType() ==OP_SELLSTOP){
  j++;
  if (Ask>OrderOpenPrice()+DistPoint*order[j]*Po){
  bool mods=OrderModify(OrderTicket(),Ask-(DistPoint*order[j])*Po,OrderStopLoss(),OrderTakeProfit(),0,clrRed);}} }}} 

Changez les valeurs et vous serez heureux

 
Aleksandr Egorov #:

Changez les valeurs et vous serez heureux, je pense que vous trouverez la solution à partir de là.

Qu'est-ce que "Ro" ?
DistPoint*order[j]*Po
 
MakarFX #:
Qu'est-ce que "Ro" ?

point abrégé

 
MakarFX #:

Dans quelles conditions le chalutage des commandes groupées doit-il commencer ?




//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
  {
   for(int i = OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(Or derType() == OP_BUY && Bid - GetAveragePrice() > TrailingStopGroupOrder*Point)
              {
               if(Bid - GetAveragePrice() > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
                 {
                  if(OrderStopLoss() < Bid - (TrailingStep + TrailingStopGroupOrder)*Point || OrderStopLoss() == 0)
                    {
                     if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - TrailingStopGroupOrder*Point, Digits), tp, 0))
                        Print("Ошибка модификации групповых ордеров на покупку!");
                    }
                 }
              }
            if(OrderType() == OP_SELL && GetAveragePrice() - Ask > TrailingStopGroupOrder*Point)
              {
               if(GetAveragePrice() - Ask > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
                 {
                  if(OrderStopLoss() > Ask + (TrailingStep + TrailingStopGroupOrder)*Point || OrderStopLoss() == 0)
                    {
                     if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + TrailingStopGroupOrder*Point, Digits), tp, 0))
                        Print("Ошибка модификации групповых ордеров на продажу!");
                    }
                 }
              }
           }
        }
     }
  }

int                         TrailingStep                   = 1;       // Шаг для TrailingStop
extern int                  TakeProfitGroupOrder           = 30;      // Тейкпрофит групповых ордеров
extern int                  TrailingStopGroupOrder         = 10;      // Трейлинг стоп груповых ордеров
 
Aleksandr Egorov #:

Point.

Dans ce cas, lorsque le deuxième ordre est ouvert, un ordre stop-loss sera placé et il n'y aura peut-être aucune possibilité d'ouvrir le troisième ordre dans la grille...

 
EVGENII SHELIPOV #:

Je voulais dire dans quelles conditions il démarre

TrailingGroupOrder()
 
MakarFX #:

Je voulais dire dans quelles conditions il démarre

 if(CountTrade()>1)
     {
      TrailingGroupOrder();
     }
 
MakarFX #:

Dans ce cas, lorsque le deuxième ordre est ouvert, un ordre stop-loss est placé et il n'y a peut-être aucune possibilité d'ouvrir le troisième ordre dans la grille...

Pour autant que je sache, vous ne pouvez pas placer un stop avant l'ouverture de l'ordre.

et il n'y a aucun moyen de faire une modification de groupe sans lui

j++;
  if (Ask>OrderOpenPrice()+DistPoint*order[j]*Po){
  bool mods=OrderModify(OrderTicket(),Ask-(DistPoint*order[j])*Po,OrderStopLoss(),OrderTakeProfit(),0,clrRed);}
 
MakarFX #:

Pourquoi cette duplication

Vous pouvez le faire comme ça.


Et aussi me montrer quels paramètres

Tu as raison, Makar, mais la plupart de ce code n'est pas le mien. Je l'ai pris dans un livre d'auto-apprentissage. D'autant plus que cette substitution ne résout pas la question qui nous occupe.

Raison: