Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 864

 
Taras Slobodyanik:

Faut-il donc définir un jour férié ou une interdiction de commercer ?
Le commerce a été autorisé le 27.

si c'est un week-end, vous avez besoin d'un analyseur syntaxique de nouvelles pour identifier les jours fériés et les week-ends.

Peu importe la raison pour laquelle un symbole particulier n'est pas négocié, il suffit de voir qu'il ne l'est pas. Et désolé, je ne suis pas encore assez mature pour comprendre l'analyseur syntaxique. Qu'est-ce que c'est, et comment est-ce écrit dans le code ?

 
novichok2018:

Bonjour !

Merci encore àAlexey Viktorov pour le conseil sur les citations - tout fonctionne. Ce lundi, nous sommes confrontés à une situation : les Allemands ont fait du commerce, tandis que les Anglais ont un jour de congé. Il s'est avéré qu'en condition d'ouverture de la position euro, les anciennes valeurs de la livre ont été utilisées. D'où ma demande : comment vérifier dans le code que les deux symboles sont négociés ce jour-là ?

Merci.

#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()
  {
//---

  }

Source :https://www.mql5.com/ru/articles/481

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

Source :https://www.mql5.com/ru/articles/481

Je ne sais pas quoi dire ici. Merci, mais je pense que c'est complètement hors sujet. Et pourquoi"si le score s'avère être réel, mettez fin à l'EA immédiatement !"Je suppose que je rate quelque chose.

 
novichok2018:

Je ne sais pas quoi dire ici. Merci, bien sûr, mais je pense que c'est complètement hors sujet. Et pourquoi"si le score s'avère être réel, mettez fin à l'EA immédiatement !" ?

Il s'agit d'un exemple du code de l'article. L'article couvre un code expérimental, pas pour le commerce, mais les fonctions sont les mêmes. C'est un vieil article, mais il est bon pour les débutants.

La sortie que vous recherchez ne peut pas être calculée par le code. Le commerce était ouvert, mais les Britanniques ne faisaient pas de commerce et n'avaient pas de cotations normales. Essayez de définir la "normalité" pour les citations et vérifiez si elles sont présentes. Par exemple, le spread, la volatilité du tick, la fréquence des mises à jour des prix, ou tout ce qui ne vous convient pas. Un vol de fantaisie.

 
novichok2018:

Je ne sais pas quoi dire ici. Merci bien sûr, mais je pense que cela n'a rien à voir avec le sujet.

Le moyen le plus simple de se renseigner sur la sortie est de consulter les propriétés du compte, il y aura des restrictions sur le compte, IMHO bien sûr. C'est pourquoi j'ai donné le bloc de code ci-dessus comme exemple

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

Et dans les productions nationales, il peut y avoir des limitations sur le symbole. En fait, regardez l'article, il y en a un là aussi :

#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:

Peu importe la raison pour laquelle un symbole particulier n'est pas négocié, il suffit de voir qu'il ne l'est pas. Et je suis désolé, je ne suis pas encore assez mature pour comprendre le parseur. Qu'est-ce que c'est, et comment est-ce écrit dans le code ?

Que signifie "pas de commerce" ? ?
les échanges sont autorisés - échangez autant que vous le souhaitez)

Parser signifie que vous devez télécharger un fichier contenant des actualités, puis l'analyser - et déterminer le week-end de vacances.

 
Taras Slobodyanik:

Les échanges sont autorisés - échangez autant que vous le souhaitez)

Le commerce est autorisé, mais il n'y a pas de commerce - c'est un jour férié.

Mais je crois que j'ai trouvé une solution :

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

et ensuite la position ne s'est pas ouverte le 27.

Cela me semble être une bonne solution. Si quelqu'un voit des pièges, je serais reconnaissant de le savoir. Merci à tous.

 
novichok2018:

Le commerce est autorisé mais il n'y a pas de commerce - ils sont en vacances.

je ne sais pas comment c'est si le commerce est autorisé à avoir lieu
(même un jour férié et un week-end).

J'ai regardé les nouvelles chez les courtiers - je n'ai vu personne restreindre la livre le 27.

 
Taras Slobodyanik:

Je ne vois pas comment, si le commerce est autorisé, alors le commerce a lieu...
(même un jour férié et un week-end)

J'ai regardé les nouvelles chez les courtiers - je n'ai vu personne restreindre la livre le 27.

En fait, je n'étais pas intéressé par la livre mais par l'indice FTSE100. Je l'ai simplifié ainsi : tant que l'euro, que ce soit la livre))). Il n'y a donc pas de données d'index le 27.

 
Confus. Comment obtenir le bénéfice (la perte) réel(le) sur un ordre ouvert (pas un ordre en attente) sur MT4, y compris toutes les commissions, les swaps, etc. (OrderProfit() + OrderSwap() + OrderCommission() ou seulementOrderProfit() ou autre chose ? J'aimerais gagner quelque chose après la clôture de la commande.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...