各位MT4/EA大虾,有没有听说或用过这样的EA: 能够定时从一个外部文件中读交易指令,然后在MT里面执行指令的EA 最好再能够把执行订单情况写在另外一个文件中(虽然MT4自己的日志里面也有) 这个可以自己写的,但是想问问有没有类似的,成熟好用的,就不用自己造车轮了。 如果有的话,请推荐一个啊。多谢!
多谢konit的推荐,关于这个链接: Alternative Log File with the Use of HTML and CSS http://articles.mql4.com/385 让EA生成高亮的日志会把EA代码搞得有点复杂吧,不过这也说明mql还是很强大滴 我一直都是用 baretailpro 去显示日志文件,可以自定义高亮显示重要的内容。 (http://www.baremetalsoft.com/baretail/ 我后来找到一个基本符合我要求的: A crude "API" for MetaTrader 4 http://paulsfxrandomwalk.blogspot.com/2009/12/crude-api-for-metatrader-4.html
给你来点干货吧 汗附件不知道放哪里直接贴源码 接收端 [i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i] 发送端 [QUOTE]//+----------------------------------------------------------------------------+ //| stSender.mq4 | //| 疏?茹铕?? aka KimIV | //| [url]http://www.kimiv.ru[/url] | //| 湾 镱潆彐栩 疋钺钿眍祗 疣耧痤耱疣礤龛? | //| | //| 25.05.2006 谚耱屐?耔眭痤眄铋 蝾疸钼腓 磬 礤耜铍桴 聍弪圊. | //| 蓐耧屦? 镥疱溧栝 皲咫觇. 玉蜞磬怆桠噱蝰 磬 钿眢 忮潴? | //| 觐镨?桃4. | //| 29.09.2006 念徉怆屙 镟疣戾蝠 OpenDuringTime (镳邃腩骅?Torher). | //| 01.03.2007 杨钺龛 镥疱溧蝼桕?皲咫囗?犷脲?桧纛痨囹桠睇扈. | //| 10.04.2007 拟?琨黜 桧蝈痿彘? English, 畜耨觇? | //| 14.06.2007 念徉怆屙 镟疣戾蝠 PrintEnable. | //| 15.06.2007 念徉怆屙?玎镨顸 ?羿殡 珥圜屙? 趔黻鲨?TimeCurrent(). | //+----------------------------------------------------------------------------+ #property copyright "疏?茹铕?? aka KimIV" #property link "http://www.kimiv.ru" //------- 马屮龛?镟疣戾蝠?耦忮蝽桕?-----------------------------------------+ extern string _P_Expert = "---------- 相疣戾蝠?耦忮蝽桕?v.0.7"; extern int Language = 1; // 哏: 0-English, 1-畜耨觇? extern int NumberAccount = 0; // 皖戾?蝾疸钼钽?聍蛤? extern string stFileName = "stDeals.csv"; extern bool PrintEnable = True; // 朽琊屮栩?镥鬣螯 ?骟痦嚯 extern double IntUpdate = 0; // 软蝈疴嚯 钺眍怆屙? ?皴牦礓圊 (0-镱 蜩赅? extern int OpenDuringTime = 75; // 软蝈疴嚯 潆 铗牮? 镱玷鲨??皴牦礓圊 // (0 - 徨耜铐鬻眍耱? //------- 秒钺嚯 镥疱戾眄 耦忮蝽桕?-------------------------------------+ string msg[6][2]; //+----------------------------------------------------------------------------+ //| expert initialization function | //+----------------------------------------------------------------------------+ void init() { msg[0][0]="Adviser will is started by next teak"; msg[0][1]="杨忮蝽桕 狍溴?玎矬?耠邃簋?蜩觐?; msg[1][0]="Button is not pressed \"Enable experts for running\""; msg[1][1]="悟驵蜞 觏铒赅 \"朽琊屮栩?玎矬耜 耦忮蝽桕钼\""; msg[2][0]="IMPOSSIBLE work with account "+AccountNumber(); msg[2][1]="抢闲刨磐?疣犷蜞 耦 聍蛤铎 "+AccountNumber(); msg[3][0]="IS ABSENT relationship with trade server\n"+ "Transmission of trade commands is STOPPED"; msg[3][1]="我延已衣优?疋琰 ?蝾疸钼 皴疴屦铎\n"+ "襄疱溧鬣 蝾疸钼 觐爨礓 窝依臀滤磐?; msg[4][0]="Button is not pressed \"Enable experts for running\"\n"+ "Expert Adviser is STOPPED"; msg[4][1]="悟驵蜞 觏铒赅 \"朽琊屮栩?玎矬耜 耦忮蝽桕钼\"\n"+ "杨忮蝽桕 窝依臀滤磐"; msg[5][0]="Last transmission of commands: "; msg[5][1]="项耠邃? 镥疱溧鬣 觐爨礓: "; if (Language<0 || Language>1) Message("Language is invalid"); if (IsExpertEnabled()) Message(msg[0][Language]); else Message(msg[1][Language]); } //+----------------------------------------------------------------------------+ //| expert deinitialization function | //+----------------------------------------------------------------------------+ void deinit() { Comment(""); } //+----------------------------------------------------------------------------+ //| expert start function | //+----------------------------------------------------------------------------+ void start() { if (NumberAccount>0 && NumberAccount!=AccountNumber()) { Message(msg[2][Language]); return; } if (IntUpdate<=0) MainBody(); else { while (IsExpertEnabled() && !IsStopped()) { if (IsConnected()) { MainBody(); Sleep(1000*IntUpdate); } else Comment(msg[3][Language]); } Message(msg[4][Language]); } } //+----------------------------------------------------------------------------+ //| 务眍忭铄 蝈腩 耧屦蜞 | //+----------------------------------------------------------------------------+ void MainBody() { int i; string st; FileDelete(stFileName); WritingLineInFile(stFileName, "=begin="); st=DoubleToStr(OrdersTotal(), 0)+";" +DoubleToStr(AccountBalance(), 2)+";" +DoubleToStr(TimeCurrent(), 0)+";" +DoubleToStr(OpenDuringTime, 0) ; WritingLineInFile(stFileName, st); for (i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) ExportDeals(); } WritingLineInFile(stFileName, "=end="); st=msg[5][Language]+TimeToStr(LocalTime(), TIME_DATE|TIME_SECONDS); Comment(st); } //+----------------------------------------------------------------------------+ //| 蓐耧铕?皲咫铌 | //+----------------------------------------------------------------------------+ void ExportDeals() { int dg; string st=""; dg=MarketInfo(OrderSymbol(), MODE_DIGITS); if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2; st=st+DoubleToStr(OrderTicket(), 0)+";"; st=st+DoubleToStr(OrderOpenTime(), 0)+";"; st=st+DoubleToStr(OrderType(), 0)+";"; st=st+DoubleToStr(OrderLots(), 1)+";"; st=st+OrderSymbol()+";"; st=st+DoubleToStr(OrderOpenPrice(), dg)+";"; st=st+DoubleToStr(OrderStopLoss(), dg)+";"; st=st+DoubleToStr(OrderTakeProfit(), dg)+";"; st=st+OrderComment(); WritingLineInFile(stFileName, st); } //+----------------------------------------------------------------------------+ //| 青镨顸 耱痤觇 ?羿殡 | //+----------------------------------------------------------------------------+ void WritingLineInFile(string FileName, string text) { int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " "); if (file_handle>0) { FileSeek(file_handle, 0, SEEK_END); FileWrite(file_handle, text); FileClose(file_handle); } } //+----------------------------------------------------------------------------+ //| 蔓忸?耦钺龛 ?觐祆屙???骟痦嚯 | //| 相疣戾蝠? | //| m - 蝈犟?耦钺龛 | //+----------------------------------------------------------------------------+ void Message(string m) { Comment(m); if (StringLen(m)>0 && PrintEnable) Print(m); } //+----------------------------------------------------------------------------+ [/QUOTE][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]