新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 864

 
Taras Slobodyanik:

那么,你是否需要定义一个假期或禁止交易?
27日允许交易。

如果是周末,那么你需要一个新闻分析器--来识别假期/周末。

某一符号不交易的原因并不重要,你只需要看到它不交易。而且对不起,我还没有成熟到可以理解解析器的程度。它是什么,它在代码中是怎么写的?

 
novichok2018:

你好!

再次感谢Alexey Viktorov 提供的关于报价的提示--一切顺利。本周一我们有一个情况--德国人有交易,而英国人有一天休息。事实证明,在欧元开仓 的条件下,使用了英镑的旧值。因此请求:建议如何在代码中设置检查这两个符号在这一天的交易?

谢谢你。

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

  }

来源https://www.mql5.com/ru/articles/481

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

来源https://www.mql5.com/ru/articles/481

我不知道在这里该说些什么。谢谢你,但我认为这完全偏离了主题。以及为什么"如果分数被证明是真实的,立即终止EA!"? 我想我错过了什么。

 
novichok2018:

我不知道在这里该说些什么。当然,谢谢你,但我认为这完全偏离了主题。以及为什么"如果分数被证明是真实的,立即终止EA!"?

这是文章中的一个代码例子。 文章涉及的是一个实验性的代码,不是用于交易的,但功能是一样的。这是一篇旧文章,但对初学者来说是一篇好文章。

你所寻找的输出不能由代码计算出来。交易是开放的,但英国人没有交易,没有正常的报价。尝试为报价设置 "正常",并检查它们是否存在。例如,价差、跳动率、价格更新频率,或任何不适合你的东西。幻想中的飞行。

 
novichok2018:

我不知道在这里该说些什么。当然,谢谢,但我认为这完全是题外话。

最简单的方法是从账户的属性 中找到输出的信息,对账户会有限制,当然是IMHO。这就是为什么我把上面的代码块作为一个例子

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

而在国家产出中,可能对该符号有限制。事实上,看看这篇文章,那里也有一个。

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

某一符号不交易的原因并不重要,你只需要看到它不交易。而且很抱歉,我还没有成熟到可以理解解析器的程度。它是什么,它在代码中是如何写的?

什么是 "无交易"??
允许交易 - 随意交易)

解析器是指下载一个包含新闻的文件,然后对其进行解析(parsing)--并确定假日-周末。

 
Taras Slobodyanik:

允许交易--想怎么交易就怎么交易)

允许贸易,但没有交易--这是一个假期。

但我想我已经找到了一个解决方案。

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

然后在27日没有开仓。

对我来说,这似乎是一个很好的解决方案。如果有人认为有什么隐患,我很想知道。谢谢大家。

 
novichok2018:

允许交易,但没有交易--他们在度假。

如果允许交易,我不知道是怎么回事
(即使是在节假日和周末)。

看了一下经纪人的新闻--没有看到有人在27日限制英镑。

 
Taras Slobodyanik:

我不明白,如果允许交易,那么交易是如何发生的
(即使是在假日和周末)

看了一下经纪人的新闻--没有看到有人在27日限制英镑。

事实上,我对英镑不感兴趣,而是对富时100指数感兴趣。我是这样简化的:只要是欧元,就让它成为英镑))。所以27日没有指数数据。

 
困惑。我如何获得MT4上未平仓订单(非挂单)的真实利润(亏损),包括所有佣金、掉期等?(OrderProfit() + OrderSwap() + OrderCommission() 或只是OrderProfit() 或其他?我希望在订单结束后能赚到一些钱。
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...