,
//+------------------------------------------------------------------+
//| ea.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
datetime Current=TimeCurrent();//取服务器时间
int highi, lowi, openH=3, openM=0,ticket;
int month=TimeMonth(Current),hour=TimeHour(Current), minute=TimeMinute(Current);//服务器月份,小时,分钟
double high=High[iHighest(NULL,0,MODE_HIGH,2,2)];//下标为2,和3号K线的最高价
double low=Low[iLowest(NULL,0,MODE_LOW,2,2)];//下标为2,和3号K线的最低价
double lots=NormalizeDouble(AccountBalance()/800.0*0.1,2);//取精确到小数点后二位的单量
if(month>3 && month<11)openM=30;//如果月份为4--10月,开仓小时不变,开仓分钟为30
{
for( highi=3; highi<Bars; highi++)
{
if(High[highi] > high)
break;
}//从下标为3号K线开始往前搜索比high更高价格的下标,搜到即退出,返回下标highi
for(lowi=3; lowi<Bars; lowi++)
{
if(Low[lowi] < low)
break;
}//从下标为3号K线开始往前搜索比low更低价格的下标,搜到即退出,返回下标lowi
if(OrdersTotal()<1)//如果开仓单小于1
{
if(hour == openH && minute-openM >= 0 && minute-openM < 3)//如果服务器小时等于开仓小时,如果服务器分钟减开仓分钟大于等于0,并且小于3
{
if(highi>lowi)
{
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 3,0, 0, "ea单", 0, 0,Red );
}//下sell单
if(lowi>highi)
{
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, "ea单", 0, 0, Green);
}//下Buy单
if(lowi == highi)
{
if(Open[3] < Close[2])
{
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 3,0, 0, "ea单", 0, 0,Red );
} //下sell单
if(Open[3] > Close[2])
{
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, "ea单", 0, 0, Green);
} //下Buy单
}
}
}
if(OrdersTotal() > 0)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == true)
{
if(hour == 11 && minute >= 30 && minute <=32)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Yellow);
}
}
}
}//如果有持仓单,如果持仓单止损为0,如果系统时间是11点30分 ,三分钟内全部平仓
Print("Bars=",Bars);
Print("月份=",month);
Print("开仓小时=",openH);
Print("开仓分钟=",openM);
Print("highi=",highi);
return(0);
}
return(0);
}
//+------------------------------------------------------------------+
//+-------------------------------------此EA经过测试的结果
商品 | GBPUSD (Great Britain Pound vs US Dollar) | 时间周期 | 30 分钟图 2010.01.03 18:00 - 2013.01.18 16:00 (2010.01.01 - 2013.01.20) | 复盘模型 | 每个即时价位(基于所有可利用的最小时段的每一个价位的分形插值计算) | 经测试过的柱数 | 26299 | 用于复盘的即时价数量 | 29409634 | 复盘模型的质量 | 90.00% | 输入图表错误 | 0 | | | | | | 起始资金 | 10000.00 | | | | | 总净盈利 | 131098.70 | 总获利 | 753931.00 | 总亏损 | -622832.30 | 盈利比 | 1.21 | 预期盈利 | 247.36 | | | 绝对亏损 | 6907.00 | 最大亏损 | 91441.10 (91.82%) | 相对亏损 | 91.82% (91441.10) | | 交易单总计 | 530 | 卖单 (获利百分比) | 352 (59.38%) | 买单 (获利百分比) | 178 (47.75%) | | 盈利交易(占总百分比) | 294 (55.47%) | 亏损交易(占总百分比) | 236 (44.53%) | 最大: | 获利交易 | 42287.60 | 亏损交易 | -25388.20 | 平均: | 获利交易 | 2564.39 | 亏损交易 | -2639.12 | 最大: | 连续获利金额 | 8 (15208.00) | 连续亏损金额 | 5 (-32625.90) | 最多: | 连续获利次数 | 51873.40 (5) | 连续亏损次数 | -32625.90 (5) | 平均: | 连续获利 | 2 | 连续亏损 | 2 |
|