向各技术强人求指示:关于MT4的【 EA-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表示感谢。。。



自动交易和策略测试
自动交易和策略测试
  • www.mql5.com
MQL5:MetaTrader 5客户端内置的交易策略语言。语言允许编写您自己的自动交易系统,技术指标,脚本和函数程序库
附加的文件:
001.png  5 kb
002.png  5 kb
png.png  25 kb
 

不懂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:

不懂C#.

一个基本的原则是两端数据类型要匹配。

C#中的string 与 MQL中的string一样么?

我查了下,C++ 中的uchar*与 C#中的string 匹配。

如果是这样,试试如下调用:

我用MT4运行的时候是这样提示:
2017.04.27 15:52:25.669 'ReDLLtes2' is not expert and cannot be executed

 
玛格尔:
我用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的内容,而是直接过了,我再看看其他有没有细节的问题,

自动交易和策略测试
自动交易和策略测试
  • www.mql5.com
MQL5:MetaTrader 5客户端内置的交易策略语言。语言允许编写您自己的自动交易系统,技术指标,脚本和函数程序库
 
遇到这种问题就要增加调试信息,例如在if中的第一行增加Print("into if"),在DLL中的关键逻辑之前也增加printf输出。这样就知道程序的运行路径了。
 
系统设置 可以加载dll没有?