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

 
Taras Slobodyanik:

Entonces, ¿hay que definir unas vacaciones o una prohibición del comercio?
El comercio se permitió el día 27.

si es un fin de semana, entonces necesita un analizador de noticias - para identificar los días festivos/fines de semana.

No importa cuál sea el motivo por el que no se negocia con un determinado símbolo, sólo hay que ver que no se negocia. Y lo siento, aún no soy lo suficientemente maduro para entender el parser. ¿Qué es y cómo se explica en el código?

 
novichok2018:

¡Hola!

Gracias de nuevo aAlexey Viktorov por el consejo sobre las citas: todo funciona. Este lunes nos encontramos con una situación: los alemanes han comerciado, mientras que los ingleses tienen un día libre. Resultó que en la condición para la apertura de la posición del euro se utilizaron los valores antiguos de la libra. De ahí la petición: ¿aconsejar cómo establecer la comprobación en el código de que ambos símbolos se negocian en este día?

Gracias.

#include <Trade\AccountInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- объект для работы со счетом
CAccountInfo account;
//--- получим номер счета, на котором запущен советник
   long login=account.Login();
   Print("Login=",login);
//--- выясним тип счета
   ENUM_ACCOUNT_TRADE_MODE account_type=account.TradeMode();
//--- если счет оказался реальным, прекращаем работу эксперта немедленно!
   if(account_type==ACCOUNT_TRADE_MODE_REAL)
     {
      MessageBox("Работа на реальном счете запрещена, выходим","Эксперт запущен на реальном счете!");
      return(-1);
     }
//--- выведем тип счета    
   Print("Тип счета: ",EnumToString(account_type));
//--- выясним, можно ли вообще торговать на данном счете
   if(account.TradeAllowed())
      Print("Торговля на данном счете разрешена");
   else
      Print("Торговля на счете запрещена: возможно, вход был совершен по инвест-паролю");
//--- выясним, разрешено ли торговать на счете с помощью эксперта
   if(account.TradeExpert())
      Print("Автоматическая торговля на счете разрешена");
   else
      Print("Запрещена автоматическая торговля с помощью экспертов и скриптов");
//--- допустимое количество ордеров задано или нет
   int orders_limit=account.LimitOrders();
   if(orders_limit!=0)Print("Максимально допустимое количество действующих отложенных ордеров: ",orders_limit);
//--- выведем имя компании и сервера
   Print(account.Company(),": server ",account.Server());
//--- напоследок выведем баланс и текущую прибыль на счете
   Print("Balance=",account.Balance(),"  Profit=",account.Profit(),"   Equity=",account.Equity());
   Print(__FUNCTION__,"  completed"); //---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }

Fuentehttps://www.mql5.com/ru/articles/481

Торговые операции на MQL5 - это просто
Торговые операции на MQL5 - это просто
  • www.mql5.com
Почти все трейдеры приходят на рынок для того, чтобы заработать денег, хотя есть и доля тех, кому важен не сам торговый результат, а участие в процессе, драйв. Впрочем, получить удовольствие от процесса можно не только торгуя вручную, но и занимаясь разработкой автоматических торговых систем. Ведь создание торгового робота может быть таким же...
 
Sergey Voytsekhovsky:

Fuentehttps://www.mql5.com/ru/articles/481

No sé qué decir aquí. Gracias, pero creo que esto se sale del tema. Y por qué"si el resultado resulta ser real, ¡detenga el EA inmediatamente!"Supongo que me estoy perdiendo algo.

 
novichok2018:

No sé qué decir aquí. Gracias, por supuesto, pero creo que esto se sale del tema. Y por qué"si el resultado resulta ser real, ¡detenga el EA inmediatamente!"?

Este es un ejemplo del código del artículo. El artículo cubre un código experimental, no para el comercio, pero las funciones son las mismas. Es un artículo antiguo, pero es bueno para los principiantes.

La salida que buscas no puede ser calculada por el código. El comercio estaba abierto, pero los británicos no comerciaban y no tenían cotizaciones normales. Intenta establecer la "normalidad" para las citas y comprueba si están ahí. Por ejemplo, el diferencial, la volatilidad de los ticks, la frecuencia de actualización de los precios o lo que no le convenga. Un vuelo de fantasía.

 
novichok2018:

No sé qué decir aquí. Gracias, por supuesto, pero creo que esto no viene al caso.

La forma más fácil de averiguar la salida es desde las propiedades de la cuenta, habrá restricciones en la cuenta, IMHO por supuesto. Por eso he puesto el bloque de código anterior como ejemplo

//--- выясним, можно ли вообще торговать на данном счете
   if(account.TradeAllowed())
      Print("Торговля на данном счете разрешена");

Y en las salidas nacionales puede haber restricciones de carácter. De hecho, revisa el artículo, ahí también hay uno:

#include<Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- объект для получения свойств символа
CSymbolInfo symbol_info;
//--- зададим имя символа, для которого будем получать информацию
   symbol_info.Name(_Symbol);
//--- получим текущие котировки и выведем
   symbol_info.RefreshRates();
   Print(symbol_info.Name()," (",symbol_info.Description(),")",
         "  Bid=",symbol_info.Bid(),"   Ask=",symbol_info.Ask());
//--- получим значения минимальных отступов для торговых операций
   Print("StopsLevel=",symbol_info.StopsLevel()," pips, FreezeLevel=",
         symbol_info.FreezeLevel()," pips");
//--- получим количество знаков после запятой и размер пункта
   Print("Digits=",symbol_info.Digits(),
         ", Point=",DoubleToString(symbol_info.Point(),symbol_info.Digits()));
//--- информация о спреде
   Print("SpreadFloat=",symbol_info.SpreadFloat(),", Spread(текущий)=",
         symbol_info.Spread()," pips");
//--- запросим тип исполнения ордеров, нет ли ограничений
   Print("Ограничения на торговые операции: ",EnumToString(symbol_info.TradeMode()),
         " (",symbol_info.TradeModeDescription(),")");
//--- выясним режим заключения сделок
   Print("Режим исполнения сделок: ",EnumToString(symbol_info.TradeExecution()),
         " (",symbol_info.TradeExecutionDescription(),")");
//--- выясним способ вычисления стоимости контрактов
   Print("Вычисление стоимости контракта: ",EnumToString(symbol_info.TradeCalcMode()),
         " (",symbol_info.TradeCalcModeDescription(),")");
//--- размер контрактов
   Print("Размер стандартного контракта: ",symbol_info.ContractSize(),
         " (",symbol_info.CurrencyBase(),")");
//--- минимальный, максимальный размеры объема в торговых операциях
   Print("Volume info: LotsMin=",symbol_info.LotsMin(),"  LotsMax=",symbol_info.LotsMax(),
         "  LotsStep=",symbol_info.LotsStep());
//--- 
   Print(__FUNCTION__,"  completed");
//---
   return(0);
  }
 
novichok2018:

No importa cuál sea el motivo por el que no se negocia con un determinado símbolo, sólo hay que ver que no se negocia. Y lo siento, aún no soy lo suficientemente maduro para entender el parser. ¿Qué es y cómo está escrito en el código?

¿Qué significa "no comerciar"? ?
el comercio está permitido - comercia todo lo que quieras)

Parser significa que tiene que descargar un archivo con noticias, luego analizarlo - y determinar el fin de semana de vacaciones.

 
Taras Slobodyanik:

El comercio está permitido - intercambia todo lo que quieras)

El comercio está permitido, pero no hay comercio: es un día festivo.

Pero creo que he encontrado una solución:

if(SeriesInfoInteger("EURUSD",PERIOD_H1,SERIES_LASTBAR_DATE)==SeriesInfoInteger("GBPUSD",PERIOD_H1,SERIES_LASTBAR_DATE))

y luego la posición no se abrió el 27.

Me parece una buena solución. Si alguien ve algún escollo, le agradecería que lo supiera. Gracias a todos.

 
novichok2018:

El comercio está permitido, pero no hay comercio: están de vacaciones.

no sé cómo es si se permite el comercio
(incluso en un día festivo y un fin de semana).

miré las noticias en los brokers - no vi a nadie restringiendo la libra el día 27

 
Taras Slobodyanik:

No veo cómo, si se permite el comercio, entonces el comercio tiene lugar
(incluso en un día festivo y un fin de semana)

miré las noticias en los brokers - no vi a nadie restringiendo la libra el día 27

En realidad, no me interesaba la libra sino el índice FTSE100. Yo lo simplifiqué así: mientras el euro, que sea la libra)). Así que no hay datos del índice el día 27.

 
Confundido. ¿Cómo puedo obtener el beneficio real (pérdida) de una orden abierta (no una orden pendiente) en MT4, incluyendo todas las comisiones, swaps, etc.? (OrderProfit() + OrderSwap() + OrderCommission() o sóloOrderProfit() o algo más? Me gustaría ganar algo después de cerrar el pedido.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...