mql4自动化交易,购买+全部平仓


配置文件内容:volume=0.05;currencyCode=USDJPYm2;slipPoint=10

配置文件名称:tradeConf.txt    位置:C:\Program Files (x86)\MetaTrader - EXNESS\mql4\Files


购买:


//+------------------------------------------------------------------+
//|                                                      buyFund.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() { // 买
    datetime time=TimeCurrent();
    string timeStr=IntegerToString(Year())+"-"+IntegerToString(Month())+"-"+IntegerToString(Day())
    +" "+IntegerToString(Hour())+":"+IntegerToString(Minute())+":"+IntegerToString(Seconds());
    string timeNum = Seconds()+Minute()*100+Hour()*10000+Day()*1000000+Month()*100000000+Year()*10000000000;
    
    int handle = FileOpen("tradeConf.txt", FILE_READ|FILE_TXT);
    if(handle<0){
        return;
    }
    int size= FileSize(handle) ;
    string value=FileReadString(handle,size);
    FileClose(handle);
    string buff[30];
    int leng=explode(";", value, buff);
    // 读取配置
    string volume="0.01",currencyCode="USDJPYm",slipPoint="10";
    for(int i=0;i<leng;++i){
        string conf[2];
        explode("=",buff[i],conf);
        if(conf[0]=="volume"){
            volume=conf[1];
        }
        if(conf[0]=="currencyCode"){
            currencyCode=conf[1];
        }
        if(conf[0]=="slipPoint"){
            slipPoint=conf[1];
        }
    }
    int slipPointInt=StringToInteger(slipPoint);
    double volumeDouble=StringToDouble(volume);
    int ticket=OrderSend(Symbol(),OP_BUY,volumeDouble,Ask,slipPointInt,Ask-500*Point,Ask+500*Point,
            "My order ",timeNum,0,Green);
    if(ticket<0){
        Print("OrderSend 失败 ",GetLastError());
        return;
    }else{
        Print(timeStr+" OrderSend 成功,订单号:"+ticket);
    }
    
}


int explode(string delimiter, string str, string &buff[]){
    int start = 0, index, i = 0, delimiter_len,  max  = 0, step = 20;
    delimiter_len = StringLen(delimiter);
    index = StringFind(str, delimiter, start);
    max = ArraySize(buff);
    while (index != -1)    {
        if (i >= max) {
            max += step;
            ArrayResize(buff, max);
        }
        //Alert("index : " + index , "start : " + start);
        if (index - start > 0) {
            buff[i] = StringSubstr(str, start, index - start);
        } else {
            buff[i] = "";
        }
        start = index + delimiter_len;
        index = StringFind(str, delimiter, start);
        i++;
    }
    if (index == -1) {
        index = StringLen(str);
        if (start < index) {
            if (i >= max) {
                max += 1;
                ArrayResize(buff, max);
            }
            buff[i] = StringSubstr(str, start, index - start);
        } else {
            if (i > 0) i--;
        }
    }
    return (i + 1);
}



卖:

//+------------------------------------------------------------------+
//|                                                      sellFund.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() { // 买
    datetime time=TimeCurrent();
    string timeStr=IntegerToString(Year())+"-"+IntegerToString(Month())+"-"+IntegerToString(Day())
    +" "+IntegerToString(Hour())+":"+IntegerToString(Minute())+":"+IntegerToString(Seconds());
    string timeNum = Seconds()+Minute()*100+Hour()*10000+Day()*1000000+Month()*100000000+Year()*10000000000;
    
    int handle = FileOpen("tradeConf.txt", FILE_READ|FILE_TXT);
    if(handle<0){
        return;
    }
    int size= FileSize(handle) ;
    string value=FileReadString(handle,size);
    FileClose(handle);
    string buff[30];
    int leng=explode(";", value, buff);
    // 读取配置
    string volume="0.01",currencyCode="USDJPYm",slipPoint="10";
    for(int i=0;i<leng;++i){
        string conf[2];
        explode("=",buff[i],conf);
        if(conf[0]=="volume"){
            volume=conf[1];
        }
        if(conf[0]=="currencyCode"){
            currencyCode=conf[1];
        }
        if(conf[0]=="slipPoint"){
            slipPoint=conf[1];
        }
    }
    int slipPointInt=StringToInteger(slipPoint);
    double volumeDouble=StringToDouble(volume);
    int ticket=OrderSend(Symbol(),OP_SELL,volumeDouble,Bid,slipPointInt,Ask+500*Point,Ask-500*Point,
            "My order ",timeNum,0,Blue);
    if(ticket<0){
        Print("OrderSend 失败 ",GetLastError());
        return;
    }else{
        Print(timeStr+" OrderSend sell 成功,订单号:"+ticket);
    }
    
}


int explode(string delimiter, string str, string &buff[]){
    int start = 0, index, i = 0, delimiter_len,  max  = 0, step = 20;
    delimiter_len = StringLen(delimiter);
    index = StringFind(str, delimiter, start);
    max = ArraySize(buff);
    while (index != -1)    {
        if (i >= max) {
            max += step;
            ArrayResize(buff, max);
        }
        //Alert("index : " + index , "start : " + start);
        if (index - start > 0) {
            buff[i] = StringSubstr(str, start, index - start);
        } else {
            buff[i] = "";
        }
        start = index + delimiter_len;
        index = StringFind(str, delimiter, start);
        i++;
    }
    if (index == -1) {
        index = StringLen(str);
        if (start < index) {
            if (i >= max) {
                max += 1;
                ArrayResize(buff, max);
            }
            buff[i] = StringSubstr(str, start, index - start);
        } else {
            if (i > 0) i--;
        }
    }
    return (i + 1);
}




全部平仓:

//+------------------------------------------------------------------+
//|                                           pingcang_liquidate.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
    closePosition();


}
  
bool closePosition(){ //Close all pending and holding positions 
bool Flag=true;
int tick[200],tp[200];
int j=0;
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
// if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MagicHunDun)){
if(OrderSymbol()==Symbol() ){
Print("OrderMagicNumber="+OrderMagicNumber());
j=j+1;
tick[j]=OrderTicket();
tp[j]=OrderType();
}
}
if (j!=0) {
for(int i=1;i<=j;i++) {
OrderSelect(tick[i], SELECT_BY_TICKET);
switch(tp[i]) {
case OP_BUY:
if(OrderClose(tick[i],OrderLots(),Bid,3,CLR_NONE)==false) Flag=false;
break;
case OP_SELL:
if(OrderClose(tick[i],OrderLots(),Ask,3,CLR_NONE)==false) Flag=false;
break;
}
}
}
return(Flag);
}


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值