初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1050

 

我如何在顾问的小时块中增加分钟?

//input parametrs
input uchar                InpStartHour            = 1;           // Start hour
input uchar                InpEndHour              = 23;           // End hour

//---------------------------

void OnTick()
  { 
   MqlDateTime STimeCurrent;
   TimeToStruct(TimeCurrent(),STimeCurrent);
  
   if(STimeCurrent.hour<InpStartHour || STimeCurrent.hour>InpEndHour)
      return;
   }

 
Vladimir Baskakov:

如何在EA的小时块中添加分钟?

高 低 策略 准时 2:

bool TimeControl()是一个负责检查时间的函数。它可以在两种状态下工作:既是一天内的日期,也是超过一天的日期。

//--- input parameters
***
input bool     InpTimeControl       = true;        // Use time control
input uchar    InpStartHour         = 10;          // Start Hour 
input uchar    InpStartMinute       = 01;          // Start Minute 
input uchar    InpEndHour           = 15;          // End Hour 
input uchar    InpEndMinute         = 02;          // End Minute 
***
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!TimeControl())
      return;
  }
//+------------------------------------------------------------------+
//| TimeControl                                                      |
//+------------------------------------------------------------------+
bool TimeControl(void)
  {
   if(!InpTimeControl)
      return(true);
   MqlDateTime STimeCurrent;
   datetime time_current=TimeCurrent();
   if(time_current==D'1970.01.01 00:00')
      return(false);
   TimeToStruct(time_current,STimeCurrent);
   if((InpStartHour*60*60+InpStartMinute*60)<(InpEndHour*60*60+InpEndMinute*60)) // intraday time interval
     {
/*
Example:
input uchar    InpStartHour      = 5;        // Start hour
input uchar    InpEndHour        = 10;       // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _
*/
      if((STimeCurrent.hour*60*60+STimeCurrent.min*60>=InpStartHour*60*60+InpStartMinute*60) && 
         (STimeCurrent.hour*60*60+STimeCurrent.min*60<InpEndHour*60*60+InpEndMinute*60))
         return(true);
     }
   else if((InpStartHour*60*60+InpStartMinute*60)>(InpEndHour*60*60+InpEndMinute*60)) // time interval with the transition in a day
     {
/*
Example:
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 5;        // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  _  _  _  _  _  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  _  _  _  _  _  +  +  +  +  +  +
*/
      if(STimeCurrent.hour*60*60+STimeCurrent.min*60>=InpStartHour*60*60+InpStartMinute*60 || 
         STimeCurrent.hour*60*60+STimeCurrent.min*60<InpEndHour*60*60+InpEndMinute*60)
         return(true);
     }
   else
      return(false);
//---
   return(false);
  }
 

请告知。

在MQL5中,我需要关闭一半的头寸,但我需要检查一半的头寸是否小于最小手数,然后再关闭整个量,这样做对吗?

double volume=MathMax(PositionGetDouble(POSITION_VOLUME)/2,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN)/AccountInfoInteger(ACCOUNT_LEVERAGE));
 
Evgeny Dyuka:

请告知。

在MQL5中,我需要关闭一半的头寸,但我需要检查一半的头寸是否小于最小手数,然后关闭整个量,这样做对吗?

也许在划分之前检查一下比较容易,如果地段小于最低限度的2倍,那么就没有必要去打扰终端?

 

不能通过对市场的测试,它返回一个错误,但报告中没有错误

该怎么做?


 
Evgeny Dyuka:

我不能通过对市场的测试,它返回一个错误,但报告中没有错误

该怎么做?


请稍后再试。
 

我怎样才能得到一个订单(交易、头寸--任何东西)的收盘价?

对于订单,只有ORDER_PRICE_OPEN是可用的,但ORDER_PRICE_CLOSE不是。

这些职位只有POSITION_PRICE_OPEN

这些行业根本就没有什么抽象的东西。DEAL_PRICE。

用谷歌搜索了论坛,没有找到。

 
secret:

我怎样才能得到一个订单(交易、头寸--任何东西)的收盘价?

对于订单,只有ORDER_PRICE_OPEN是可用的,但ORDER_PRICE_CLOSE不是。

这些职位只有POSITION_PRICE_OPEN

这些行业根本就没有什么抽象的东西。DEAL_PRICE。

我在论坛里搜索了一下,没有找到。

为了使对MQL5的理解和工作更加容易。

1.***

2.如果你需要一个收盘价,你不能不访问交易历史。历史选择 负责申请交易历史

3.处理历史的例子是在历史交易和订单 代码中,将信息输出到文件或 "专家 "选项卡中。

要了解这是什么交易,你需要知道

ENUM_DEAL_ENTRY-交易的方向 - 入市、出市或反转

enum_deal_entry

识别器

描述

帐户

进入市场

拒绝接受

市场退出

交易_进入_退出

U-turn

交易_进入_退出_by

近距离反击位置


ENUM_DEAL_TYPE-交易的类型

ENUM_DEAL_TYPE

识别器

描述

购货类型

购买

交易类型_销售出售

***



这些是基本的。

 
Vladimir Karputov:

谢谢你的回答,我看了文档和你的例子,但还是没有找到如何在MT4中获得类似于OrderClosePrice()的参数。

 
secret:

谢谢你的回答,我看了文档和你的例子,但仍然找不到如何在MT4中获得类似于OrderClosePrice()的参数。

或者打开https://www.mql5.com/ru/code/16006

再看看@fxsaber的 实现

或者只需连接上述库,并将代码从MT4转移到MT5,在99%的情况下,你不需要调整任何东西,一切都会和MT4一样工作。

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...