请教DxdCn老师自从MT4 600更新后,我的EA不能正常运行了,里面附有源码,请指点!

 

DxdCn老师,您好,下面是我的源码,在MT4 509版本的时候还行,升级到600后,就不行了,在图标的左上角显示“Error Write to Clones”,我修改了很久,查不出问题所在,求老师帮忙!

#include <stdlib.mqh>


#import "kernel32.dll"

bool CopyFileA(string a0,string a1,bool a2);

bool CreateDirectoryA(string a0,int a1);

#import



extern int 主账户GMT时间差=2;

string CommentToExclude="!";

bool gi_304=FALSE;

string gsa_308[50][10];

int g_ord_total_312=0;

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

double iif(bool ai_0,double ad_4,double ad_12)

{

if(ai_0) return (ad_4);

return (ad_12);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

string stdSymbol(string as_0)

{

return (StringSubstr(as_0, 0, 6));

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

int l_file_32;

string lsa_36[50][10];

string lsa_40[50][10];

int l_pos_0=0;

CreateDirectoryA("C:\\hkfy168.com",0);

while(!IsStopped() && IsExpertEnabled())

{

gi_304=TRUE;

Sleep(500);

ArrayInit(lsa_36);

Comment(TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

for(l_pos_0=0; l_pos_0<OrdersTotal(); l_pos_0++)

{

OrderSelect(l_pos_0,SELECT_BY_POS);

if(StringFind(OrderComment(),CommentToExclude)<0)

{

lsa_36[l_pos_0][0] = OrderTicket();

lsa_36[l_pos_0][1] = stdSymbol(OrderSymbol());

lsa_36[l_pos_0][2] = OrderType();

lsa_36[l_pos_0][3] = OrderLots();

lsa_36[l_pos_0][4] = OrderOpenPrice();

lsa_36[l_pos_0][5] = OrderStopLoss();

lsa_36[l_pos_0][6] = OrderTakeProfit();

lsa_36[l_pos_0][7] = iif(OrderExpiration() == 0, 0, OrderExpiration() - 60 * (60 * 主账户GMT时间差 ));

lsa_36[l_pos_0][8] = AccountBalance();

lsa_36[l_pos_0][9] = OrderOpenTime() - 60 * (60 * 主账户GMT时间差 );

}

}

if(OrdersTotal()==0)

{

lsa_36[0][0] = -1;

lsa_36[0][1] = "Conect";

lsa_36[0][2] = 0;

lsa_36[0][3] = 0;

lsa_36[0][4] = 0;

lsa_36[0][5] = 0;

lsa_36[0][6] = 0;

lsa_36[0][7] = 0;

lsa_36[0][8] = 0;

lsa_36[0][9] = 0;

}

if(ArrayEqual(lsa_36,gsa_308)) g_ord_total_312=OrdersTotal();

else

{

l_file_32=FileOpen(AccountNumber()+".dat",FILE_BIN|FILE_WRITE);

if(l_file_32>0)

{

FileWriteArray(l_file_32,lsa_36,0,500);

FileClose(l_file_32);

if(!CopyFiles())

{

Comment("Error Write to Clones");

Sleep(5000);

continue;

}

ArrayCopy(gsa_308,lsa_36);

Print("Orders Updated: "+TimeToStr(TimeCurrent()));

Comment("Orders Updated: "+TimeToStr(TimeCurrent()));

}

}

}

gi_304=FALSE;

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

if(!gi_304 && !IsStopped() && IsExpertEnabled()) init();

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

bool CopyFiles()

{

bool li_ret_0=TRUE;

string l_str_concat_4=StringConcatenate(TerminalPath(),"\\MQL4\\Files\\",AccountNumber(),".dat");

//Print(l_str_concat_4);

string l_str_concat_12=StringConcatenate("C:\\hkfy168.com\\",AccountNumber(),".dat");

li_ret_0=CopyFileA(l_str_concat_4,l_str_concat_12,false);

return (li_ret_0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void ArrayInit(string &asa_0[50][10])

{

for(int l_index_4=0; l_index_4<ArrayRange(asa_0,0); l_index_4++) for(int l_count_8=0; l_count_8<10; l_count_8++) asa_0[l_index_4][l_count_8]="";

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

bool ArrayEqual(string &asa_0[50][10],string &asa_4[50][10])

{

for(int l_index_8=0; l_index_8<ArrayRange(asa_0,0); l_index_8++)

{

for(int l_count_12=0; l_count_12<10; l_count_12++)

{

if(l_count_12 != 8)

if(asa_0[l_index_8][l_count_12] != asa_4[l_index_8][l_count_12]) return (FALSE);

}

}

return (TRUE);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int deinit()

{

Comment("Expert OFF\n");

return (0);

}

//+------------------------------------------------------------------+

 

DxdCn老师,在吗?

 

\\MQL4\\Files\\ 新的只允许在这个目录读写文件。

C:\\hkfy168.com\\ 不能用了。 你检查调试一下

 

专业破解各种外汇智能分析系统/EA
专业破解黄金甲EA 美国汇神EA
专业破解趋向建仓智能分析系统
专业破解曹操外汇智能分析系统/EA
专业破解曹操水木外汇智能分析系统/EA
专业破解老船长外汇智能分析系统
专业破解灵灵狗009黄金外汇交易系统(EA)
专业破解金嘉亿外汇智能分析系统
专业破解大浪淘沙MT4智能操盘手
专业破解大鱼外汇黄金智能分析系统
专业破解汇市导航系统
专业破解海阔外汇智能软件(EA)
专业破解富盈外汇智能分析系统
专业破解傻瓜外汇智能分析系统
本地同步跟单EA

专业破解水木外汇智能分析系统

专业破解淘金者智能分析系统(EA)

专业加密ex4文件防止反编译。
。。。。。。。。。。。。。。。。。。。。。。。。。
需要的汇友加本人QQ:452337597

 

专业破解各种外汇智能分析系统/EA
专业破解黄金甲EA 美国汇神EA
专业破解趋向建仓智能分析系统
专业破解曹操外汇智能分析系统/EA
专业破解曹操水木外汇智能分析系统/EA
专业破解老船长外汇智能分析系统
专业破解灵灵狗009黄金外汇交易系统(EA)
专业破解金嘉亿外汇智能分析系统
专业破解大浪淘沙MT4智能操盘手
专业破解大鱼外汇黄金智能分析系统
专业破解汇市导航系统
专业破解海阔外汇智能软件(EA)
专业破解富盈外汇智能分析系统
专业破解傻瓜外汇智能分析系统
本地同步跟单EA

专业破解水木外汇智能分析系统

专业破解淘金者智能分析系统(EA)

专业加密ex4文件防止反编译。
。。。。。。。。。。。。。。。。。。。。。。。。。
需要的汇友加本人QQ:452337597

 
DxdCn:

\\MQL4\\Files\\ 新的只允许在这个目录读写文件。

C:\\hkfy168.com\\ 不能用了。 你检查调试一下


确定是 CreateDirectoryA("C:\\hkfy168.com",0);这里出了问题,这个函数没有被调用,请问老师MT4新的版本自有函数能实现这个功能吗?请老师指点!

新升级的MT4好像有个客户端共享文件夹吧,不知道在哪里啊?因为我这个文件想被本地电脑其他的客户端 使用。

 

老师,我改写成如下还是出现同样的结果:左上角显示:Error Write to Clones

#include <stdlib.mqh>


#import "kernel32.dll"

bool CopyFileA(string a0,string a1,bool a2);

#import



extern int 主账户GMT时间差=2;

string CommentToExclude="!";

bool gi_304=FALSE;

string gsa_308[50][10];

int g_ord_total_312=0;

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

double iif(bool ai_0,double ad_4,double ad_12)

{

if(ai_0) return (ad_4);

return (ad_12);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

string stdSymbol(string as_0)

{

return (StringSubstr(as_0, 0, 6));

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

int l_file_32;

string lsa_36[50][10];

string lsa_40[50][10];

int l_pos_0=0;

while(!IsStopped() && IsExpertEnabled())

{

gi_304=TRUE;

Sleep(500);

ArrayInit(lsa_36);

Comment(TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

for(l_pos_0=0; l_pos_0<OrdersTotal(); l_pos_0++)

{

OrderSelect(l_pos_0,SELECT_BY_POS);

if(StringFind(OrderComment(),CommentToExclude)<0)

{

lsa_36[l_pos_0][0] = OrderTicket();

lsa_36[l_pos_0][1] = stdSymbol(OrderSymbol());

lsa_36[l_pos_0][2] = OrderType();

lsa_36[l_pos_0][3] = OrderLots();

lsa_36[l_pos_0][4] = OrderOpenPrice();

lsa_36[l_pos_0][5] = OrderStopLoss();

lsa_36[l_pos_0][6] = OrderTakeProfit();

lsa_36[l_pos_0][7] = iif(OrderExpiration() == 0, 0, OrderExpiration() - 60 * (60 * 主账户GMT时间差 ));

lsa_36[l_pos_0][8] = AccountBalance();

lsa_36[l_pos_0][9] = OrderOpenTime() - 60 * (60 * 主账户GMT时间差 );

}

}

if(OrdersTotal()==0)

{

lsa_36[0][0] = -1;

lsa_36[0][1] = "Conect";

lsa_36[0][2] = 0;

lsa_36[0][3] = 0;

lsa_36[0][4] = 0;

lsa_36[0][5] = 0;

lsa_36[0][6] = 0;

lsa_36[0][7] = 0;

lsa_36[0][8] = 0;

lsa_36[0][9] = 0;

}

if(ArrayEqual(lsa_36,gsa_308)) g_ord_total_312=OrdersTotal();

else

{

l_file_32=FileOpen(AccountNumber()+".dat",FILE_BIN|FILE_WRITE);

if(l_file_32>0)

{

FileWriteArray(l_file_32,lsa_36,0,500);

FileClose(l_file_32);

if(!CopyFiles())

{

Comment("Error Write to Clones");

Sleep(5000);

continue;

}

ArrayCopy(gsa_308,lsa_36);

Print("Orders Updated: "+TimeToStr(TimeCurrent()));

Comment("Orders Updated: "+TimeToStr(TimeCurrent()));

}

}

}

gi_304=FALSE;

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

if(!gi_304 && !IsStopped() && IsExpertEnabled()) init();

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

bool CopyFiles()

{

bool li_ret_0=TRUE;

string l_str_concat_4=StringConcatenate(TerminalPath(),"\\MQL4\\Files\\",AccountNumber(),".dat");

//Print(l_str_concat_4);

string l_str_concat_12=StringConcatenate(TerminalInfoString(TERMINAL_COMMONDATA_PATH),"\\",AccountNumber(),".dat");

li_ret_0=CopyFileA(l_str_concat_4,l_str_concat_12,false);

return (li_ret_0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void ArrayInit(string &asa_0[50][10])

{

for(int l_index_4=0; l_index_4<ArrayRange(asa_0,0); l_index_4++) for(int l_count_8=0; l_count_8<10; l_count_8++) asa_0[l_index_4][l_count_8]="";

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

bool ArrayEqual(string &asa_0[50][10],string &asa_4[50][10])

{

for(int l_index_8=0; l_index_8<ArrayRange(asa_0,0); l_index_8++)

{

for(int l_count_12=0; l_count_12<10; l_count_12++)

{

if(l_count_12 != 8)

if(asa_0[l_index_8][l_count_12] != asa_4[l_index_8][l_count_12]) return (FALSE);

}

}

return (TRUE);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int deinit()

{

Comment("Expert OFF\n");

return (0);

}

//+------------------------------------------------------------------+

 

你的操作系统是什么?TERMINAL_COMMONDATA_PATH在不同系统下不同,读写权限可能有问题。

调试检查l_str_concat_4和l_str_concat_12 的内容!

建议开发方改程序,去\\MQL4\\Files\\ 目录读文件,不要在copy 到其他地方了。

客户端共享文件夹TERMINAL_COMMONDATA_PATH 一般大概是在 doucument....\all users\application\meta...... 普通用户根本不知道怎么用它,还是不要用了

 
DxdCn:

你的操作系统是什么?TERMINAL_COMMONDATA_PATH在不同系统下不同,读写权限可能有问题。

调试检查l_str_concat_4和l_str_concat_12 的内容!

建议开发方改程序,去\\MQL4\\Files\\ 目录读文件,不要在copy 到其他地方了。

客户端共享文件夹TERMINAL_COMMONDATA_PATH 一般大概是在 doucument....\all users\application\meta...... 普通用户根本不知道怎么用它,还是不要用了


DxdCn老师:

我的操作系统的window XP的,我的程序就是想从一个客户端的\\MQL4\\Files\\ 文件复制到另外一个客户端的\\MQL4\\Files\\ 文件里面,而客户端共享文件夹只是一个过度。如果不使用这个过度的共享文件夹,那么怎么让MT4软件里面的文件从一个客户端转移到另一个客户端呢?难道从这个客户端能读到另外客户端的文件吗?

 

出售MT4本地跟单,兼容600+版本。QQ278118436

 

一个客户端、另一个客户端是在同一个计算机上还是不同计算机?

mt之外,用C语言编写监控文件变化的程序 或其他进程间通讯办法 来完成, 设计这EA的人应该有能力解决。

仅靠配置设置可能不行了。

原因: