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

 
0Aleksandr0:

它是什么?我对MQL4不是很了解,如果你告诉我需要得到什么,我就能用MQL5来写。
我认为这与历史盈亏计算有关。


问题就在这里,我自己也不明白--这段代码是按照我的命令写的,是从一个班级里拉出来的。我也倾向于认为这段代码是为了平衡计算。但是,根据这个想法,随着新订单的打开和关闭,平衡的变化应该在阵列中被重置,但我没有看到......

 
Aleksey Vyazmikin:

请帮助我在MT5上重写代码 - 我对订单一无所知 :(

#include <MT4Orders.mqh>
 
fxsaber:

谢谢你,有这个类的EA编译了--我不知道是否会冲突...


现在在运行测试时得到一个错误

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 DLL加载不被允许

2017.08.23 11:22:59.929 Core 3 全局初始化失败

2017.08.23 11:22:59.929 Core 3 全局初始化关键错误

2017.08.23 11:22:59.929 Core 3 测试仪因专家初始化失败而停止。


使用库调用 - 在MT4中一切都正确。

#import "Kernel32.dll"
bool CopyFileW(string lpExistingFileName,string lpNewFileName,bool bFailIfExists);
#import 

原因是什么呢?

 
Aleksey Vyazmikin:

谢谢你,EA编译了这个类 - 但我不知道它是否会冲突...

不会的。

现在在运行测试时得到一个错误

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 DLL加载不被允许

2017.08.23 11:22:59.929 Core 3 全局初始化失败

2017.08.23 11:22:59.929 Core 3 全局初始化关键错误

2017.08.23 11:22:59.929 Core 3 测试仪因专家初始化失败而停止。


使用库调用 - 在MT4中一切都正确。

可能的原因是什么?

在终端允许使用DLL。

 
fxsaber:

它不会。

在终端,允许使用DLL。


你不会相信的--我做了,但没有效果--显然,缓存在那里,一段时间后会被清除--现在已经开始工作。谢谢你。

 

如何教代理写到同一个文件?现在,每个人都在自己的文件夹中创建自己的文件,这并不理想。

 
Aleksey Vyazmikin:

如何教代理写到同一个文件?现在,每个人都在自己的文件夹中创建自己的文件,这并不理想。

阿列克谢,至少打开一次文档...那里准确地描述了哪个标志指向一般的文件夹,它打开了对文件的一般访问。等待答案是否比阅读文件更容易?

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin:

如何教代理写到同一个文件?现在,每个人都在自己的文件夹中创建自己的文件,这并不理想。


首先(第1步),你需要克服。

...在它自己的文件夹中,...


这是用FILE_COMMON标志完成的--所有代理现在将写到一个共同的文件夹(但每个代理仍将写到自己的文件)。


例如EA。

//+------------------------------------------------------------------+
//|                                           Agents FILE_COMMON.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//---
input int s=0;
//---
string InpFileName="";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initialize the generator of random numbers 
   MathSrand(GetTickCount());
   InpFileName=IntegerToString(MathRand())+".txt";
//--- open the file 
   ResetLastError();
   int file_handle=FileOpen(InpFileName,FILE_WRITE|FILE_TXT|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- the string is formed, write it to the file 
      FileWriteString(file_handle,InpFileName);
      //--- close the file 
      FileClose(file_handle);
      PrintFormat("Data is written, %s file is closed",InpFileName);
      PrintFormat("Common path for all of the terminals installed on a computer: %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
     }
   else
     {
      PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

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

  }
//+------------------------------------------------------------------+


要快速打开这个公共文件夹,请执行以下操作:在MetaEditor中,选择文件菜单中的 "打开公共数据文件夹"。


现在运行这个EA进行优化,并观察随着测试的进行在公共数据文件夹中创建的新文件。

附加的文件:
 
Vladimir Karputov:

首先(第1步)需要被打败。


这是用FILE_COMMON标志完成的--所有代理现在将写到一个共同的文件夹(但每个代理仍将写到自己的文件)。


例如EA。


要快速打开这个共享文件夹,请执行以下操作:在MetaEditor代码编辑器中,从文件菜单中选择 "打开公共数据文件夹"。


现在运行这个EA进行优化,并观察随着测试的进行,在公共数据文件夹中如何创建新文件。


我不想把它放到Common里,因为终端在自己的目录里运行,反正会有很多你说的文件,这也解决不了问题。

 
Aleksey Vyazmikin:

我不想进入Common,因为终端在自己的目录中运行,仍然会有很多文件,如你所说,这并不能解决问题。


它说:"......。步骤1......"

关于第2步--现在自己想一想,即多个没有冲突的线程如何能写到一个文件。