Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1647

 
EVGENII SHELIPOV #:

Hola a todos, estoy escribiendo código para un arrastre de órdenes de grupo . La lógica del código para una red de arrastre es la siguiente :

¿En qué condiciones debe iniciarse la búsqueda de pedidos de grupos?

 
EVGENII SHELIPOV #:

Hola a todos, estoy escribiendo código para un arrastre de órdenes de grupo . La lógica del código para la red de arrastre es la siguiente :



  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);}} }}} 

Cambia los valores y serás feliz

 
Aleksandr Egorov #:

Cambia los valores y serás feliz, creo que a partir de ahí lo entenderás

¿Qué es "Ro"?
DistPoint*order[j]*Po
 
MakarFX #:
¿Qué es "Ro"?

punto abreviado

 
MakarFX #:

¿En qué condiciones debe comenzar la búsqueda de pedidos de grupos?




//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
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 #:

Punto.

En este caso, cuando se abra la segunda orden, se colocará una orden de stop-loss y no habrá posibilidad de abrir la tercera orden en la parrilla...

 
EVGENII SHELIPOV #:

Me refería a bajo qué condiciones se inicia

TrailingGroupOrder()
 
MakarFX #:

Me refería a bajo qué condiciones se inicia

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

En este caso, cuando se abre la segunda orden, se coloca una orden de stop-loss y puede que no haya posibilidad de abrir la tercera orden en la parrilla...

Que yo sepa, no se puede poner un stop antes de que se abra la orden

y no hay manera de hacer la modificación del grupo sin ella

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

Por qué esta duplicación

Puedes hacerlo así.


Y también muéstrame qué parámetros

Tienes razón, Makar, pero la mayor parte de este código no es mío. Lo tomé de un libro de autoaprendizaje. Además, esta sustitución no resuelve la cuestión en cuestión.