您需要 登录 才可以下载或查看,没有帐号?注册
本帖最后由 LIJIASHUANG 于 2014-12-18 16:44 编辑
求助写一个晚上2点55分自动平掉所有仓位的EA
各位大师好,本人主要做德国指数,但由于他隔天跳空点数很大(常常100多点),我都是当日在收盘前全部单子都平掉。
但由于要上班,晚上12:00就要休息了。可是,有时12:00手上还有趋势单在手上,这时平了又可惜了。如果开着电脑,到了晚上2:55分电脑能自动平仓就好了,那位帮我写一个晚上2:55分自动平仓的EA,万分感谢!
//+------------------------------------------------------------------+
//| 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) )
{
order_open();
}
if( (Hour()==closehour) (Minute()==closeminut) )
{
order_close();
}
if( (Hour()==deadclosehour) (Minute()==deadcloseminut) )
{
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;
}
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!