从外部文件读指令并下单的EA ...

Discussion in 'MetaTrader' started by espresso, Jun 5, 2011.

  1. 各位MT4/EA大虾,有没有听说或用过这样的EA:

    能够定时从一个外部文件中读交易指令,然后在MT里面执行指令的EA
    最好再能够把执行订单情况写在另外一个文件中(虽然MT4自己的日志里面也有)

    这个可以自己写的,但是想问问有没有类似的,成熟好用的,就不用自己造车轮了。

    如果有的话,请推荐一个啊。多谢! :)
     
  2. 多谢konit的推荐,关于这个链接:
    Alternative Log File with the Use of HTML and CSS
    http://articles.mql4.com/385
    让EA生成高亮的日志会把EA代码搞得有点复杂吧,不过这也说明mql还是很强大滴 :D

    我一直都是用 baretailpro 去显示日志文件,可以自定义高亮显示重要的内容。
    http://www.baremetalsoft.com/baretail/

    我后来找到一个基本符合我要求的:
    A crude "API" for MetaTrader 4
    http://paulsfxrandomwalk.blogspot.com/2009/12/crude-api-for-metatrader-4.html
     
  3. 给你来点干货吧 汗附件不知道放哪里直接贴源码
    接收端
    [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]
     
  4. 多谢楼上兄弟,你这个更全!呵呵 :)
     
  5. 不错,正好是想要的