//+------------------------------------------------------------------+
//| 14点开仓.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.m |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.m"
#property version "1.00"
#property strict
input int openhour;
input int openminite;
input int openseconds;
input int closehour;
input int closeminut;
input int closeseconds;
input int deadclosehour;
input int deadcloseminut;
input int deadcloseseconds;
input double toplosepersent=0.1;
double stoplose;
double closeprice_14hour=0.0;
double calclots()
{
return (AccountBalance()*toplosepersent)/stoplose;
}
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
stoplose=(iATR(NULL,PERIOD_D1,12,0)*10000);
if((Hour()==openhour) && (Minute()==openminite) /*&& (Seconds()==openseconds)*/)
{
order_open();
}
if( (Hour()==closehour) && (Minute()==closeminut) /*&& (Seconds()==closeseconds)*/)
{
order_close();
}
if( (Hour()==deadclosehour) && (Minute()==deadcloseminut) /*&& (Seconds()==deadcloseseconds)*/)
{
closeall();
}
return;
}
//+------------------------------------------------------------------+
void order_open()
{
closeprice_14hour=0.0;
if(OrdersTotal()>0) return;
if(iMACD(NULL,1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)>0)//开多单
{
if(OrderSend(Symbol(),OP_BUY,calclots(),Ask,3,Ask-stoplose*Point*10,0,"14点的买单",12345,0,Green)<0)
{
printf("ordersend error",GetLastError());
return;
}
}
if(iMACD(NULL,1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)<0)
{
if(OrderSend(Symbol(),OP_SELL,calclots(),Bid,3,Bid+stoplose*Point*10,0,"14点的卖单",12345,0,Green)<0)
{
printf("ordersend error",GetLastError());
return;
}
}
if(iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)==0)
{
return ;
}
return;
}
void closeall()
{
int total=OrdersTotal();
int cnt=0;
if (total<1) return ;
for(cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==TRUE) ///仅仅有一个单子
{
if(OrderType()==OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
{
Print("OrderClose error ",GetLastError());
return ;
}
}
if(OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
{
Print("OrderClose error ",GetLastError());
return ;
}
}
}
}
return;
}
void order_close()
{
int total=OrdersTotal();
int cnt=0;
if (total<1) return ;
for(cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==TRUE) ///仅仅有一个单子
{
if(OrderType()==OP_BUY)
{
if(iClose(NULL,15,0)>iClose(NULL,15,18))
{Print("多单10点30平仓");
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
{
Print("OrderClose error ",GetLastError());
return ;
}
}
}
if(OrderType()==OP_SELL)
{
if(iClose(NULL,15,0)<iClose(NULL,15,18))
{Print("空单10点30平仓");
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
{
Print("OrderClose error ",GetLastError());
return ;
}
}
}
}
}
return;
}
|