Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1494

 

Hola, Sergey.

Cuando calculas el stop, pasas de la distancia en precio a la distancia en pips. Luego, multiplicando por 3, obtienes la distancia al takeout también en pips. Y luego sumas el número de pips al precio ask.

Intenta no dividir por el tamaño de un pip o entonces recuerda multiplicar por él otra vez.

//---Устанавливаем стоп
   double stoploss = iLow(_Symbol,PERIOD_CURRENT,1);
      Print("Цена стопа ", stoploss);

//---Опредеяем размер стопа
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double low = iLow(_Symbol, 0, 1);
   double points = NormalizeDouble((ask - low) / _Point, _Digits);
   double points = NormalizeDouble((ask - low), _Digits);
      
//--- ...

O así

//---Устанавливаем стоп
   double stoploss = iLow(_Symbol,PERIOD_CURRENT,1);
   Print("Цена стопа ", stoploss);

//---Опредеяем размер стопа в пунктах (это целое число)
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double low = iLow(_Symbol, 0, 1);
   int points = (ask - low) / _Point;
   Print("Размер стопа ", points);

//---Считаем тейкпрофит
   int TP = points * 3;
   Print("Размер тейка ", TP);

//---Открываем сделку на покупку
         if(Close > maHandle && Close > Open)
            {
               if(trade.Buy(Lot,_Symbol,SYMBOL_ASK,stoploss, NormalizeDouble(ask + TP * _Point, _Digits),"Это я, твой робот") == true)
                  {
                     Print("Открыта покупка");
                  }
 
Yuriy Bykov #:

Hola, Sergei.


Muchas gracias. Realmente se perdió en los precios / artículos. Voy a probarlo ahora)))

 
Ahora todo se cuenta y se establece correctamente, pero sólo en USDJPY, XAUUSD y cualquier índice. Pero en divisas como USDCAD, EURUSD el búho no opera y envía el error 4756. Busqué el valor en la ayuda, pero no ayudó)
 
Sergey Izhutov #:
Ahora todo se cuenta y se establece correctamente, pero sólo en USDJPY, XAUUSD y cualquier índice. Pero en divisas como USDCAD, EURUSD el búho no opera y envía el error 4756. Busqué el valor en la ayuda, pero no hizo nada)

Haz como en el post anterior: proporciona el código que te abre posiciones. Entonces, quizás, podrás dar algún consejo. No debería haber ninguna diferencia fundamental entre USDJPY y USDCAD, lo más probable es que haya algún error trivial.

 
Yuriy Bykov #:

Haz como en el último post:

Aquí está el código

//---Открываем сделку на покупку
         if(Close > maHandle && Close > Open)
            {
               if(trade.Buy(Lot,_Symbol,SYMBOL_ASK,stoploss, ask + BuyTP,"Это я, твой робот") == true)
                  {
                     Print("Открыта покупка");
                  }
                 else
                     {
                         // Получение кода ошибки
                         int error_code = GetLastError();
                         Print("Ошибка отправки заявки: ", GetLastError());
                     }
                  
                     return;
            }
            
    //---Открываем сделку на продажу
         if(Close < maHandle && Close < Open)
            {
               if(trade.Sell(Lot,_Symbol,SYMBOL_ASK,stoploss,ask - SellTP,"Это я, твой робот") == true)
                  {
                     Print("Открыта продажа");
                  }
                 else
                     {
                         // Получение кода ошибки
                         int error_code = GetLastError();
                         Print("Ошибка отправки заявки: ", GetLastError());
                     }
                  
                     return;
            }
 

Lo más probable es que el error esté aquí:

if(Close > maHandle && Close > Open)

De acuerdo con su lógica maHandle debe ser el precio, y esto es más probable una manija, es decir, un número entero - el número de serie del indicador entre todos los indicadores cargados. Busque en la Ayuda MQL5 la forma correcta de obtener los valores de los indicadores.

 
Yuriy Bykov #:

Probablemente haya un error aquí:

De acuerdo con su lógica maHandle debe ser el precio, y esto es más probable una manija, es decir, un número entero - el número de serie del indicador entre todos los indicadores cargados. Busque en la Ayuda MQL5 la forma correcta de obtener los valores de los indicadores.

Pensé lo mismo por la noche, que debería quitarlo. Todavía no me he hecho amigo de los índices. Sólo recuerdo vagamente que en el 4 sólo escribía que Close > MA y ahí funcionaba todo. Probaré a comentar lo del asa a ver qué resultados da

 
Sergey Izhutov #:

Eso mismo estaba pensando yo esta noche, que debería guardarlo. Todavía no me he hecho amigo de los índices. Sólo recuerdo vagamente que en el 4 sólo escribía que Close > MA y ahí funcionaba. Probaré a comentar lo del asa a ver qué resultado da

Una vez me recomendaron "hacerme amigo" del depurador MetaEditor. Después de que me familiaricé más o menos con el depurador, el 99,9% de las preguntas desaparecieron solas. Pones cualquier variable en la observación y ves sus valores, luego los comparas y entiendes en qué parte del código hay un problema. Es una herramienta muy conveniente. La recomiendo.

Saludos, Vladimir.

 
MrBrooklin #:


Gracias, le echaré un vistazo)

 
Si minimizas el comprobador durante un rato, el trabajo se acelera.
Razón de la queja: