Проверка торговой стратегии |
//+------------------------------------------------------------------+
//| Europe.mq4 |
//| Copyright © 2014, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, AM2"
#property link "http://www.forexsystems.biz"
#property description "Forex Expert advisor"
//--- Inputs
extern int StopLoss = 200; // стоп лосс ордера
extern int TakeProfit = 400; // тейк профит ордера
extern int Delta = 100; // расстояние от вершин
extern double Lots = 0.1; // объем позиции
extern int Expiration = 14; // время истечения ордера
extern int MAGIC = 333; // магик
/*
1. На уровне закрытия американской сессии выставляем лимитные ордера
2. Если цена прошла Delta пунктов вверх бай лимит, если вниз селл лимит
3. Если получаем лося, то на уровне открытия ордера, выставляем противоположный лимитник
*/
//----
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void PutOrder()
{
int res,b,s;
//--- get value
double price;
double DayOpen=iOpen(Symbol(),PERIOD_D1,0);
datetime expiration = TimeCurrent()+3600*Expiration;
Comment("\nDay Open Price ",DayOpen,
"\nPrice ",Price());
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUYLIMIT)b++;
if(OrderType()==OP_SELLLIMIT)s++;
}
}
}
//--- sell
if(DayOpen-Bid>=Delta*Point && s<1)
{
price=DayOpen;
res=OrderSend(Symbol(),OP_SELLLIMIT,Lots,price,3,price+StopLoss*Point,price-TakeProfit*Point,"",MAGIC,expiration,Red);
return;
}
//--- buy
if(Ask-DayOpen>=Delta*Point && b<1)
{
price=DayOpen;
res=OrderSend(Symbol(),OP_BUYLIMIT,Lots,price,3,price-StopLoss*Point,price+TakeProfit*Point,"",MAGIC,expiration,Blue);
return;
}
//--- sell
if(Price()>0 && Type()==0 && s<1)
{
price=Price();
res=OrderSend(Symbol(),OP_SELLLIMIT,Lots,price,3,price+StopLoss*Point,price-TakeProfit*Point,"",MAGIC,expiration,Red);
return;
}
//--- buy
if(Price()>0 && Type()==1 && b<1)
{
price=Price();
res=OrderSend(Symbol(),OP_BUYLIMIT,Lots,price,3,price-StopLoss*Point,price+TakeProfit*Point,"",MAGIC,expiration,Blue);
return;
}
}
//+------------------------------------------------------------------+
void DelOrder()
{
bool del;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if (OrderType()==OP_BUYLIMIT) del=OrderDelete(OrderTicket());
if (OrderType()==OP_SELLLIMIT) del=OrderDelete(OrderTicket());
}
}
//+------------------------------------------------------------------+
bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
double Price()
{
double pr;
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()<=0)
{
pr=OrderOpenPrice();
}
}
return(pr);
}
//+------------------------------------------------------------------+
int Type()
{
int type;
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()<=0)
{
if(OrderType()==OP_BUY) type=0;
if(OrderType()==OP_SELL) type=1;
}
}
return(type);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- check for history and trading
if(Bars<100 || IsTradeAllowed()==false)
return;
if(NewBar()==true)
{
if(CountTrades()<1)PutOrder();
//if(CountTrades()>0)DelOrder();
}
//---
}
//+------------------------------------------------------------------+
22 ноября 2014
|
04 мая 2015
|
Комментарии (2)
На евродолларе просадка, вообще надо поработать с настройками
19 lorik Сообщений: 357 - Лариса
13 Buff Сообщений: 401 - Артем
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий