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

 
Yedelkin:

Y sin "si"...

No existe tal cosa como un "si". )))
 
tol64: No existe tal cosa como un "si". )))
:)
 

Hola, no entiendo por qué no aparecen las paradas.

input int         StopLoss=499;      // Stop Loss
input int         TakeProfit=999;   // Take Profit
input int         EA_Magic=12345;   // Magic Number советника
input double      Lot=0.1;          // Количество лотов для торговли

int OnInit()
  {
//--- Для работы с брокерами, использующими 5-ти значные котировки,
//--- умножаем на 10 значения SL и TP
   STP = StopLoss;
   TKP = TakeProfit;
   if(_Digits==5 || _Digits==3)
     {
      STP = STP*10;
      TKP = TKP*10;
     }
   return(0);
  }
void OnTick()
  {
//---
  
   MqlTick         latest_price;       // Будет использоваться для текущих котировок
   SymbolInfoTick(Symbol(),latest_price); // Получаем текущие цены
   MqlTradeRequest mrequest;   // Будет использоваться для отсылки торговых запросов
   MqlTradeResult  mresult;     // Будет использоваться для получения результатов выполнения торговых запросов
  
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
         mrequest.symbol = _Symbol;                                            // символ
         mrequest.volume = Lot;                                                // количество лотов для торговли
         mrequest.magic = EA_Magic;                                            // Magic Number
         mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
         mrequest.deviation=100;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);

 
Top2n: Hola, no puedo entender por qué no se colocan paradas?

En primer lugar, es necesario realizar una inicialización:

MqlTradeRequest mrequest={0};   // Будет использоваться для отсылки торговых запросов
MqlTradeResult  mresult={0};    // Будет использоваться для получения результатов выполнения торговых запросов

En segundo lugar, la capacidad de colocar sl y tp depende del modo de ejecución de órdenes de mercado establecido por el corredor. Busca cuántos de estos modos hay en el Manual y comprueba qué modo establece el corredor.

 
Yedelkin:

En primer lugar, es necesario realizar una inicialización:

En segundo lugar, la capacidad de colocar sl y tp depende del modo de ejecución de órdenes de mercado establecido por el corredor. Busque en el Manual cuántos modos de este tipo hay y compruebe qué modo establece el corredor.

He puesto a cero mediante ZeroMemory(mrequest);

No entiendo muy bien lo de los modos de ejecución de órdenes, alpari broker, creo que todo es estándar. Maldita tontería, no quiere y ya está. Ya he intentado usar sl y tp, muestra el precio actual + sl. ¡Supongo que está bien!

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Top2n:

He puesto a cero mediante ZeroMemory(mrequest);

No entiendo muy bien los modos de ejecución de órdenes, alpari broker, creo que todo es estándar. Maldita sea, no funciona, no quiero hacerlo. Ya he intentado usar sl y tp, muestra el precio actual + sl. ¡Supongo que está bien!

¿Tiene algún mensaje en el registro?
 
Top2n No entiendo muy bien los modos de ejecución de las órdenes, soy corredor de alpari, creo que es todo estándar. No sé qué hacer con este tipo de broker, todavía no sé qué hacer con este tipo de forex. No sé qué hacer si intento volver al comentario sl y tp?

No sigo a Alpari, pero creo que todos los problemas de no fijar los niveles que mencionas estaban relacionados con Alpari. Intente colocar su orden en la cuenta demo de MQ y estará bien.

Sobre los modos de ejecución de órdenes. Usted está utilizando la función https://www.mql5.com/ru/docs/trading/ordersend. Por favor, lea atentamente esta sección de la Guía: https://www.mql5.com/ru/docs/constants/structures/mqltraderequest y responda usted mismo a la pregunta: "¿cuántos modos de ejecución están disponibles para las órdenes de mercado?". Si no puede responder a esta pregunta, por favor, pregunte.

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
tol64: ¿Hay algún mensaje en el registro?
Los desarrolladores aún no han previsto la posibilidad de reflejar en los mensajes de registro la imposibilidad de establecer los niveles sl y tp en los modos de Ejecución de Mercado y Ejecución de Bolsa. Y no hay ninguna razón para hacerlo. El programador debe determinar el modo establecido por el corredor.
 
Yedelkin:
Los desarrolladores aún no han previsto la posibilidad de reflejar en los mensajes de registro la imposibilidad de establecer los niveles sl y tp en los modos de Ejecución de Mercado y Ejecución de Bolsa. Y no es necesario. El programador debe determinar el modo establecido por el corredor.
De todos modos, no hay que adivinar, hay que analizar todos los errores y códigos de retorno. Es más fácil y rápido analizar qué hacer a continuación. ))
 
tol64: Todavía hay que analizar todos los errores y códigos de retorno para evitar conjeturas. Es más fácil y rápido saber qué hacer a continuación. ))
...Especialmente cuando se sabe que los "errores y códigos de retorno" simplemente no se proporcionan en este caso particular :) Sin duda, la pregunta en sí es correcta, pero en este caso concreto, no servirá de nada :/