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

 
Alexander Avksentyev #:

Arreglado, ahora funciona. Por supuesto que no está bien, pero funciona.

Se fija mal las paradas, ¿cómo puedo arreglarlo?

OrderOpenPrice()*Point
OrderStopLoss()* Point

1,12500*Point=0.0000112500

 
Tretyakov Rostyslav #:

1,12500*Point=0.0000112500

Print(/*((*/NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits) 

2021.12.15 00:26:55.086 2021.01.04 00:00:00 test1 EURUSD,M1: 1.22373


Pero si se cuenta por separado
Print(/*((NormalizeDouble((Bid - */OrderOpenPrice()*Point/*),Digits)/*

2021.12.15 00:30:09.557 2021.01.04 00:00:00 test1 EURUSD,M1: 1.2238e-05

Print(/*((NormalizeDouble((*/Bid - OrderOpenPrice()*Point/*
2021.12.15 00:34:05.979 2021.01.04 00:00:00 test1 EURUSD,M1: 1.223727762

 
secret del procesamiento de la orden por parte del servidor comercial.
¿En mql5 esa función tiene que ser escrita por usted mismo?

OnTradeTransaction

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Avksentyev #:

2021.12.15 00:26:55.086 2021.01.04 00:00:00 test1 EURUSD,M1: 1.22373


Pero si se cuenta por separado

2021.12.15 00:30:09.557 2021.01.04 00:00:00 test1 EURUSD,M1: 1.2238e-05

2021.12.15 00:34:05.979 2021.01.04 00:00:00 test1 EURUSD,M1: 1.223727762

Leer 3 ó 4 puestos

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.12.14
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Vitaly Muzichenko #:

OnTradeTransaction

Gracias. Sólo el infierno) Lo siento por los algotraders en MT5.
 
secret #:
Gracias. Sólo el infierno) me compadezco de los algotraders en mt5.

Vale la pena, en mt5 las órdenes se procesan muchas veces más rápido. Y las pruebas son más plausibles, casi no hay griales de probadores.

 
Vitaly Muzichenko #:

Lee tres o cuatro puestos.

Sí, lo hice. Ya lo tengo.

Gracias, pensé que era un error, pero es lo normal.
 
Tretyakov Rostyslav #:

1,12500*Point=0.0000112500

Arreglado todo, el resultado no ha cambiado.

¿Tal vez esté en la lógica?

Bueno, de alguna manera abre el TSL pero como una parada

 
Alexander Avksentyev #:

Lo arreglé, pero el resultado no cambió.

¿Podría ser una cuestión de lógica?

Bueno, de alguna manera abre el TSL, pero como una parada.

Su función tiene el siguiente aspecto:

NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits)

NormalizarDoble((1,12700 - 1,12500/100000),5)

Tienes que entender lo que hace"Point".

Haz una impresión.

Print(DoubleToString(NormalizeDouble(Point,Digits),Digits));
 
Tretyakov Rostyslav #:

Su función tiene el siguiente aspecto:

NormalizarDoble((1,12700 - 1,12500/100000),5)

Tienes que entender lo que hace"Point".

Hacer una impresión

antes de

void TrailSL()
{
 if(iTrailStart <= 0.0)return; 
 double tp,sl_lev;
 for(int i=OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       {
        if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
           if(OrderType() == OP_BUY) 
             {
              if(iTrailTakeProfit > 0.0)
                {
                tp=OrderTakeProfit() + NormalizeDouble(iTrailTakeProfit * Point(),_Digits);
                if(NormalizeDouble(((tp - OrderTakeProfit())) < 0.0,Digits))return;
                tp = OrderTakeProfit();
                }else tp = 0.0;
                if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) <= iTrailStart * MarketInfo(Symbol(),MODE_POINT) );//true
                   {
                    if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0 && NormalizeDouble(Bid - OrderStopLoss(),Digits) <= iTrailDist * MarketInfo(Symbol(),MODE_POINT));//true
                      {
                      if(iTrailStep > 0.0 && OrderStopLoss() != 0.0 && NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT));//true
                        {
                         sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT);
                         if(NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL));//false
                           {
                            if(!OrderModify(Forder,OrderOpenPrice(),sl_lev,tp,0,Red))return;
                            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
                           }
                        }
                      }
                   }
                }
             }

después de

void TrailSL()
{
   if (iTrailStart <= 0.0 || iTrailStep <= 0.0)
      return; 
      
   double sl_lev;
         
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(!OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         continue;
      
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)
         continue;  
         
      if(OrderType() == OP_BUY) 
      {
         if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) < iTrailStart * MarketInfo(Symbol(),MODE_POINT) )
            continue;

         if (OrderStopLoss() >= OrderOpenPrice() || NormalizeDouble(Bid - OrderStopLoss(), Digits()) < iTrailDist * MarketInfo(Symbol(),MODE_POINT))
            continue;

         if (OrderStopLoss() == 0.0 || NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT))
            continue;

         sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT);
         if (NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL))
            continue;
            
         if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed))
            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
      }}}

Pero ahora no quiere encenderse en absoluto.

No hay errores en el compilador ni en el terminal, simplemente no se enciende.

¿Cuál es el problema mágico?

¿Qué es?

Perdón por la intromisión.