背景:经常忍不住在 四颗星或者五颗星等级的 财经事件和经济数据前后下单,这种单子通常都是巨亏,所以想实现一个功能,就是在设定的时间段内,如果有单子,自动平仓,反复平仓,来实现该时间段内不能开仓,开仓也会被平。
社区里有很多时间点,到时间,平仓EA,但是没有时间段的平仓EA,拜托大神举手之劳以下
为其他大神提供的【时间点平仓】函数,【时间段平仓】函数,【时间点平仓】EA
-------------------------------------------------- ----------------------------------
【时间点平仓】函数
extern double Lots = 0.1;extern int ChasStart = 10;extern int ChasStop = 22;extern int Step = 15;extern int TP = 200;如果(TimeHour(TimeCurrent())== ChasStop TimeMinute(TimeCurrent())== 0){i = 0;总计= OrdersTotal();for(i = 0; i i ++){OrderSelect(i,SELECT_BY_POS,MODE_TRADES);if(OrderMagicNumber()== 12321){如果(OrderType()== OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);如果(OrderType()== OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);如果(OrderType() 1)OrderDelete(OrderTicket());}}}
-----------------------------------------------------------------------------
时间段平仓函数
if((TimeHour(CurTime()) StartHour)||(TimeHour(CurTime()) = EndHour)||(DayOfWeek()== KillDay TimeHour(CurTime())== KillHour)){/ *评论(“非交易时间,正在退出...”,“ n”,“版本0.0.4”,“ n”,Symbol(),“ n”,“ sig:”,MACD_Signal,“ main:”,MACD_Main); * /总计= OrdersTotal();// ----for(cnt = 0; cnt cnt ++){// 3OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);// ----if(OrderSymbol()== Symbol()){// 4if(OrderType()== OP_BUY){// 5OrderClose(OrderTicket(),Lots,Bid,Slippage,Green);返回(0);} // 5// ----if(OrderType()== OP_SELL){// 5OrderClose(OrderTicket(),手数,卖价,滑点,绿色);返回(0);} // 5} // 4} // 3返回(0);}
-------------------------------------------------- --------------------
时间点平仓EA(这个是现成的EA,可以用)
// + -------------------------------- ---------------------------------- +
// | 在Time.mq4上关闭|
// | ..... h |
// | hayseedville.com |
// + ----------------------------------------------- ------------------- + http://www.forexfactory.com/showthread.php?p=3096542#post3096542
#property copyright“ ..... h”
#property链接“ hayseedville.com”
extern字符串警告=“这将尝试关闭所有订单”;
extern string ThatMeans =“无论符号或类型如何,所有顺序”;
extern bool CloseAll = false;
exint int天= 5;
extern int hour = 19;
extern int分钟= 55;
int start()
{
if(CloseAll DayOfWeek()==天 Hour()==小时 Minute() =分钟)
{
closeall();
关闭所有();
关闭所有();
}
return(0);
}
void closeall()
{
int total = OrdersTotal();
for(int i = total-1; i = 0; i-- )
{
OrderSelect(i,SELECT_BY_POS);
int类型= OrderType();
布尔结果=假;
switch(type)
{
//关闭打开的多头头寸
情况OP_BUY:结果= OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,红色);
打破;
//平仓未平仓空头
案例OP_SELL:result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Red);
打破;
//关闭待处理订单
case OP_BUYLIMIT:
案例OP_BUYSTOP:
案例OP_SELLLIMIT:
案例OP_SELLSTOP:结果= OrderDelete(OrderTicket());
}
if(result == false)
{
alert(“ Order”,OrderTicket(),“无法关闭。错误:”,GetLastError());
睡眠(3000);
}
}
-------------------------------------------------------------------------------------
我来回答