20/200 expert

extern int TakeProfit = 20; // ”ровень тейкпрофит в пунктах
extern int StopLoss = 200; // уровень стоплосс в пунктах
extern int TradeTime=18;
extern int t1=7;
extern int t2=2;
extern int delta=7;
extern double lot = 0.1;
int ticket;
bool cantrade=true;
int OpenLong(double volume=0.1)
{
int slippage=10;
string comment="20/200 expert (Long)";
color arrow_color=Red;
int magic=0;
ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLossPoint, Ask+TakeProfitPoint,comment,magic,0,arrow_color);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Buy order opened : ",OrderOpenPrice());
return(0);
}
}
else
{
Print("Error opening Buy order : ",GetLastError());
return(-1);
}
}
int OpenShort(double volume=0.1)
{
int slippage=10;
string comment="20/200 expert (Short)";
color arrow_color=Red;
int magic=0;
ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLossPoint, Bid-TakeProfitPoint,comment,magic,0,arrow_color);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Sell order opened : ",OrderOpenPrice());
return(0);
}
}
else
{
Print("Error opening Sell order : ",GetLastError());
return(-1);
}
}
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
if((TimeHour(TimeCurrent())>TradeTime)) cantrade=true;
// провер¤ем есть ли открытые ордера …
if(OrdersTotal()<1) { // … если нет ни одного открытого ордера, то идем дальше // провер¤ем настало ли врем¤ дл¤ торговли if((TimeHour(TimeCurrent())==TradeTime)&&(TimeMinute(TimeCurrent())>=0)&&(cantrade))
{
// … если настало врем¤, то
if ((Open[t1]-Open[t2])>deltaPoint) //≈сли цена изменилась на величину delta { //условие выполнено значит входим в короткую позицию: // провер¤ем есть ли свободные деньги дл¤ открыти¤ короткой позиции if(AccountFreeMarginCheck(Symbol(),OP_SELL,lot)<=0 || GetLastError()==134) { Print("Not enough money"); return(0); } OpenShort(lot); cantrade=false; //запрещаем торговать повторно до следующего бара return(0); } if ((Open[t2]-Open[t1])>deltaPoint) //≈сли цена изменилась на величину delta
{
// условие выполнено значит входим в длинную позицию
// провер¤ем есть ли свободные деньги на счету
if(AccountFreeMarginCheck(Symbol(),OP_BUY,lot)<=0 || GetLastError()==134)
{
Print("Not enough money");
return(0);
}
OpenLong(lot);
cantrade=false;
return(0);
}
}
}
return(0);
}