不懂C#.
一个基本的原则是两端数据类型要匹配。
C#中的string 与 MQL中的string一样么?
我查了下,C++ 中的uchar*与 C#中的string 匹配。
如果是这样,试试如下调用:
//+------------------------------------------------------------------+ //| test.mq4 | //| Copyright 2017, fxMeter. | //| http://www.fxMeter.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017,fxMeter." #property link "https://www.mql5.com/zh/users/fxmeter" #property version "1.00" #property strict #import "Testme.dll" string ReOPE();//获取今天的最高点和最低点区间 string AC_user_info(uchar &name[],double my);//用户信息 #import //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- string n = AccountName(); uchar name[64]; StringToCharArray(n,name); AC_user_info(name,Bid); } //+------------------------------------------------------------------+
Ziheng Zhuang:
我用MT4运行的时候是这样提示:不懂C#.
一个基本的原则是两端数据类型要匹配。
C#中的string 与 MQL中的string一样么?
我查了下,C++ 中的uchar*与 C#中的string 匹配。
如果是这样,试试如下调用:
2017.04.27 15:52:25.669 'ReDLLtes2' is not expert and cannot be executed
玛格尔:
我用MT4运行的时候是这样提示:
我用MT4运行的时候是这样提示:
2017.04.27 15:52:25.669 'ReDLLtes2' is not expert and cannot be executed
额。。。怪了, ReDLLtes2 不是EA,无法执行。
你写的ReDLLtes2是脚本,不是EA,你放错位置了。
我贴的也是脚本,不是EA.
Ziheng Zhuang:
额。。。怪了, ReDLLtes2 不是EA,无法执行。
你写的ReDLLtes2是脚本,不是EA,你放错位置了。
我贴的也是脚本,不是EA.
我是新建EA的啊,很多朋友也帮我试了,还是没看到可行,如果你觉得我放错了,是不是你的可能运行?
Ziheng Zhuang:
额。。。怪了, ReDLLtes2 不是EA,无法执行。
你写的ReDLLtes2是脚本,不是EA,你放错位置了。
我贴的也是脚本,不是EA.
//+------------------------------------------------------------------+
//| dlltest.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#import "Testme.dll"
string Rehl();//获取今天的最高点和最低点区间
string AC_user_info(string name ,string pn , double my ,string txt);//用户信息
int Add(int left,int right);
#import
extern string U_name = ""; //用户名
extern string U_pn=""; // 标志密码
extern double U_my=0.00; //可用金额
extern string U_txt=""; //账户认别码
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
int start()
{
//这方法为以后的用户信息进行与服务器同步认证
if(U_name==""&&U_pn==""&&U_my==0.00&&U_txt=="")
{
U_name = "-张明哗-"; //用户名
U_pn="tcdt1234ok"; // 标志密码
U_my=6584784.35; //可用金额
U_txt="fdsak-feifkg-1234655-fkfk987"; //账户认别码
Print (Rehl());
Print (Add(15,25));
Print( AC_user_info(U_name ,U_pn , U_my ,U_txt));
}
else
{
Print("系统获取不到你的用户信息,请在系统参考里输入,谢谢!");
}
return(0);
}
//+------------------------------------------------------------------+
我修改为这样的,但还是有点显示不出来,但不会报错,总感觉没有调 DLL的内容,而是直接过了,我再看看其他有没有细节的问题,
![自动交易和策略测试 自动交易和策略测试](/i/community/logo_mql5_small.png)
遇到这种问题就要增加调试信息,例如在if中的第一行增加Print("into if"),在DLL中的关键逻辑之前也增加printf输出。这样就知道程序的运行路径了。
系统设置 可以加载dll没有?
进来的各位,在此向你的到来表现感谢,本人现在开发一套关于多模式+算法+区间等交易的EA管理系统,现在所面对的就是如何通过EA终端与DLL中间动态库进行互联、互交换的信息(如EA向DLL发送用户基本信息,DLL再与数据库进行返回内容),我向在在这方面是一个学手,也是正在学习EA开发。我找了很多相关的网站和本网站的资料找不到能解决我的问题,我现在向各位请示一下如何实现一个例子(EA 负责向DLL上传用户 这个功能。)
我本人现在主要是用C#写的DLL ,也问了很多群友都给不了我的回复或技术问题。希望在此得到各位的指点,再次谢谢!
我现在写的EA例子:
//+------------------------------------------------------------------+
//| dlltest.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#import "Testme.dll"
string Rehl();//获取今天的最高点和最低点区间
string AC_user_info(string name ,string pn , double my ,string txt);//用户信息
int Add(int left,int right);
#import
extern string U_name = ""; //用户名
extern string U_pn=""; // 标志密码
extern double U_my=0.00; //可用金额
extern string U_txt=""; //账户认别码
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
int start()
{
//这方法为以后的用户信息进行与服务器同步认证
if(U_name==""&&U_pn==""&&U_my==0.00&&U_txt=="")
{
U_name = "-张明哗-"; //用户名
U_pn="tcdt1234ok"; // 标志密码
U_my=6584784.35; //可用金额
U_txt="fdsak-feifkg-1234655-fkfk987"; //账户认别码
Print (Rehl());
Print ( Add(15,25));
Print( AC_user_info(U_name ,U_pn , U_my ,U_txt));
}
else
{
Print("系统获取不到你的用户信息,请在系统参考里输入,谢谢!");
}
return(0);
}
//+------------------------------------------------------------------+
经过网友Ziheng Zhuang的提示,我再修改了一下,但还是不能调 用DLL的信息,以下第三个图是运行效果。。。请各位指点一下
在此向Ziheng Zhuang表示感谢。。。