配置文件内容: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);
}