mql5语言的特点、微妙之处以及技巧 - 页 125

 
Nikita Chernyshov:

谢谢你!

这是一个较早的代码,但在图片中:TrailingStop

 
测试器中OnInit的EventSetTimer 不是从第一个勾的那天开始倒计时,而是从测试区间的开始日期--余额交易开始。
 
fxsaber:
测试仪中OnInit的EventSetTimer不是从第一次打勾的那天开始倒计时,而是从测试间隔的初始日期开始倒计时--平衡交易。
EventSetTimer总是调用EventSetTimer的 时刻开始倒计时。在测试器和终端中都有
 

关于交易、自动交易系统和交易策略测试的论坛

mql4语言的特点、技巧和窍门

fxsaber, 2019.02.12 13:12

用于多维数 组的ArrayResize的特点
void OnStart()
{
  int Array[][2];
  
  Print(ArrayResize(Array, 7)); // MQL5 - 7, MQL4 - 14
  Print(ArraySize(Array));      // 14
}
 

如果能看到金正恩对五人的职能,那该有多好。请给我一个提示,好吗?在金正日的作品中,有一个这样的函数

//+------------------------------------------------------------------+
//|  Проверяет был ли открыт последний ордер на этой же свече        |
//|  Checks whether the opened last the order on the same candle     |
//+------------------------------------------------------------------+
bool IfOrdOpClSelfBar(int magik = 0, int bar = 0, int typ = -1,string sy = "",int per = 0){
   if(sy == ""){sy = Symbol();}
   if(per==0){per=Period();}
   for(int i = OrdersTotal(); i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()!=sy){continue;}
         if(OrderType()==typ||typ==-1){
            if(OrderMagicNumber()==magik||magik==0){
               if(OrderOpenTime()>=iTime(sy,per,bar)){return(true);}
            }
         }
      }
   }
   for(i = OrdersHistoryTotal(); i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
         if(OrderSymbol()!=sy){continue;}
         if(OrderType()==typ||typ==-1){
            if(OrderMagicNumber()==magik||magik==0){
               if(OrderOpenTime()>=iTime(sy,per,bar)){return(true);}
            }
         }
      }
   }   
   return(false);
}

我正试图在mql5上重写它。但它并不想工作。如何强迫它?:)

//+------------------------------------------------------------------+
//|  Проверяет был ли открыт последний ордер на этой же свече        |
//|  Checks whether the opened last the order on the same candle     |
//+------------------------------------------------------------------+
bool IfOrdOpClSelfBar(ENUM_ORDER_TYPE type)
{

   for(int i = OrdersTotal(); i>=0; i--){
      if(OrderSelect(OrderGetTicket(i)) >0)
        {
         if(OrderGetString(ORDER_SYMBOL)!=_Symbol){continue;}
         if(OrderGetInteger(ORDER_TYPE)==type)
           {
            if(OrderGetInteger(ORDER_MAGIC) == magicN)
             {
               if(OrderGetInteger(ORDER_TIME_SETUP) >= iTime(NULL,Period(),0)){return(true);}
             }
           }
        }
      }
      
   for(int i = HistoryOrdersTotal(); i>=0; i--){
     if(HistoryOrderSelect(OrderGetTicket(i)) >0)
          {
         if(OrderGetString(ORDER_SYMBOL)!=_Symbol){continue;}
         if(OrderGetInteger(ORDER_TYPE)==type)
           {
            if(OrderGetInteger(ORDER_MAGIC) == magicN)
             {
               if(OrderGetInteger(ORDER_TIME_SETUP) >= iTime(NULL,Period(),0)){return(true);}
             }
           }
          }
    }
   
   return(false);
}
 
Nikita Chernyshov:

如果能看到金正恩对五人的职能,那该有多好。请给我一个提示,好吗?在金正日的作品中,有一个这样的函数

我正试图在mql5上重写它。但它并不想工作。如何强迫它?:)

关于交易、自动交易系统和策略测试器的论坛

图书馆: MT4Orders

fxsaber, 2019.01.13 17:23

Kim在MT4下的功能相当受欢迎,所以从他的网站上下载了所有的资源,并在MT5下为它们写了一个简单的 "转换器"。
#include <KimIVToMT5.mqh> // https://c.mql5.com/3/263/KimIVToMT5.mqh

#include "e-Trailing.mq4" // http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=14

void OnTick() { start(); }
 
fxsaber:

谢谢你的拐杖,非常好 :)但我在学习五分钱的理解,进入它,所以用手处理很重要,从根本上整理指关节。

 

在解析数以百万计的ticks时,我决定定期查看内存消耗。

我注意到,在进行修改后,执行速度下降了很多倍。


原因:使用TerminalInfoInteger 的一些变体需要很长的时间来执行。

#define  BENCH(A)                                                              \
{                                                                             \
  const ulong StartTime = GetMicrosecondCount();                              \
  A;                                                                          \
  Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}  

void OnStart()
{
  BENCH(TerminalInfoInteger(TERMINAL_MEMORY_USED)); // 28220
}
要小心。
 
TerminalInfoInteger(TERMINAL_MEMORY_USED)

一个非常昂贵的功能。

也是 TERMINAL_MEMORY_AVAILABLE

TERMINAL_MEMORY_PHYSICAL和TERMINAL_MEMORY_TOTAL在第一次请求后被缓存。随后的查询将返回缓存的值

 
有些(*.bat,等等)文件没有被 FileIsExists 看到,但FileFindNext 却能找到它们。