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

 
Artyom Trishkin:

没有必要猜测。你必须思考并了解正在做的事情和目的是什么。什么时候需要写什么东西,什么时候不需要。

它认为print应该包含一个字符串,任何数字值都应该被转换为一个字符串。
但这个例子表明,编译器变得迟钝了。我们怎么能不猜测编译器何时跳过,何时不跳过呢?

 
Roman:

似乎应该将打印的内容转换为字符串,所以任何数字值都必须被转换为字符串。
但这个例子表明,编译器会变得愚钝。如何不猜测编译器何时跳过,何时不跳过。

同样--这里的代码--有什么不清楚的?

ZS.如果是关于这个。

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

...我没有检查--只是在帖子里重新打了一遍。

进行功能 转换为字符串。

Print(string((uint)PeriodSeconds(PERIOD_MN1)*1000));
 

朋友们!

我正在努力解决将一个DLL连接到MQL的问题。我正在描述我的问题。

1.起初我试图用C#编写一个.dll库。我发现MQL4并不 "吃 "这样的库,因为如果用C#编写,dll里面的所有方法都是封闭的。我开始积极寻找解决问题的办法。我在互联网上发现了几个变种,比如从NuGet下载的 "DLL导出"库的连接。试过不同的方法,都没有用。我真的不希望有一个 "脆弱 "的解决方案来解决这个问题,其原则是 "今天有效,明天不行"。这样试了一下,其实有很多其他方面的工作方式。

using System.Runtime.InteropServices;
using RGiesecke.DllExport;

[DllExport("Good", CallingConvention.Cdecl)] // + заменял на просто [DllExport] - не помогает
public static string Good() {

   return "GHBBBGGDDDD !!!!! РУССКИЙ! :) " + 5.ToString();
}


2.我想,我很可能要写一个稳定工作的C++库。第一次就把它插上了,测试查询顺利进行,没有任何问题。但是当我开始尝试用一个方法(从DLL)返回一个文本信息(到MQL)时,我遇到了一个新问题--我在MQL中得到了"?????‡?-"的回应。我试着破译信息,但没有成功!"。我试图通过一个函数参数来返回数值--我得到了"?".我搜索了很多东西,仍然没有找到解决办法。这是我确定的变体,但它返回了问号。

extern "C" __declspec(dllexport) char* __stdcall ToString(char* &str)
{
        str = " - 889 - dsa - просто!";
        return "--- Привет! ---";
}


我得到的答案是:。

解码并没有帮助...


基本上需要什么。

1)是否有一个真正的解决方案,通过C#来解决这个问题?我需要一个稳定的漂亮的解决方案!一半的措施,即使现在有效,但可能随着新的建设而脱落,也不是一种选择。

2)如果没有C#的解决方案,就通过C++。如何在不损失质量的情况下正确地双向发送信息?(mql - dll - mql)。我需要同样适用于MT4和MT5的变体。

 
Artyom Trishkin:

再次--这里的代码--什么不清楚?

不清楚为什么H1及以上的常数会被返回,而这些常数与H1之前的周期不对应。

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H1=16385
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H4=16388

同样的情况由_Period变量返回。

 
Roman:

不清楚为什么H1及以上的常数会被返回,而这些常数与H1之前的周期不对应。

同样的情况由_Period变量返回。

 
Artyom Trishkin:

阿尔乔姆不要惊慌失措 ))
为什么对M30来说,显示的正是TF的值
1
5
30

而在H1,它以16385开始
那么,先把值返回给分钟,然后再返回给地狱,这是不符合逻辑的。
而且它不符合帮助中关于_Period作为时间框架返回值 的描述。

 
Roman:

阿尔乔姆不要惊慌失措 ))
为什么对M30来说,显示的正是TF的值
1
5
30

而在H1,它以16385开始
那么,先把数值返回到分钟,再返回到地狱,这是不符合逻辑的。
而且它不符合帮助中关于_Period作为时间框架返回值 的描述。

时间框架。而不是分钟数。不是秒数,不是巴巴尼拉的鹅的数量,而是时间框架的价值

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

时间框架的值。而不是分钟数。不是秒数,不是巴巴尼拉的鹅的数量,而是时间框架的价值

这就是我们所讨论的,常数必须等于时间框架值!这就是我们所讨论的。
并进行逻辑和数学意义上的对应。
因为这些数值是用于计算的。

M1 = 1
M5 = 5
M30 = 30
H1 =60
H4 =240
D1
=1440

否则,返回值的意义就会消失。
因此,在我看来,这是个错误。

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 
Artyom Trishkin:

我很惊讶你有耐心重复这么长的时间,而且在早上...虽然你已经在另一个不眠之夜后的早晨了))。

至少要把他隔离24小时,仔细阅读文件。这是一个耻辱...这是第一次有这样一个C语言品种的王牌说这样的胡话。而这是第一次对这一切进行解释...

试想一下,这是在服务台中想出来的。他们那里可能没有那种平衡,所以他们才关闭了。

原因: