About
//+--------------------------------------------------------------------+
//| RING--60.mq4 |
//| M30 |
//| |
//| ( ddax ) |
//+--------------------------------------------------------------------+
#property link "wek21.mn.ru"
int TakeProfit_L = 100; // Уровень тейкпрофит в пунктах
int StopLoss_L = 50; // уровень стоплосс в пунктах
int TakeProfit_S = 100; // Уровень тейкпрофит в пунктах
int StopLoss_S = 50; // уровень стоплосс в пунктах
int t1=6;
int t2=2;
int delta_L=6;
int delta_S=21;
extern double lot = 1; // Размер лота
int Orders=8; // максимальное количество одновременно
открытых позиций
int MaxOpenTime=504;
int BigLotSize = 6; // На сколько умножается размер лота
в Биг лоте
extern bool AutoLot=true;
int ticket,total,cnt;
bool cantrade=true;
double closeprice;
double tmp;
int LotSize()
// функция открывает короткую позицию размером
лота=volume
{
if (AccountBalance()>=5000) lot=1;
if (AccountBalance()>=10000) lot=1;
if (AccountBalance()>=15003) lot=1.5;
if (AccountBalance()>=20202) lot=2;
if (AccountBalance()>=25127) lot=2.5;
if (AccountBalance()>=30053) lot=3;
if (AccountBalance()>=35252) lot=3.5;
if (AccountBalance()>= 40177 ) lot=4;
if (AccountBalance()>= 50027 ) lot=5;
if (AccountBalance()>= 60152 ) lot=6;
if (AccountBalance()>= 70002 ) lot=7;
if (AccountBalance()>= 80126 ) lot=8;
if (AccountBalance()>= 90251 ) lot=8;
if (AccountBalance()>= 100101 ) lot=8;
if (AccountBalance()>= 110225 ) lot=8;
if (AccountBalance()>= 120076 ) lot=8;
if (AccountBalance()>= 130200 ) lot=8;
if (AccountBalance()>= 140051 ) lot=8;
if (AccountBalance()>= 150175 ) lot=8;
if (AccountBalance()>= 160025 ) lot=8;
if (AccountBalance()>= 170149 ) lot=8;
if (AccountBalance()>= 180000 ) lot=8;
if (AccountBalance()>= 190124 ) lot=8;
if (AccountBalance()>= 200248 ) lot=8;
if (AccountBalance()>= 210099 ) lot=8;
if (AccountBalance()>= 220223 ) lot= 8;
if (AccountBalance()>= 230074 ) lot= 8;
if (AccountBalance()>= 240198 ) lot= 8;
if (AccountBalance()>= 250048 ) lot= 8;
if (AccountBalance()>= 260173 ) lot= 8;
if (AccountBalance()>= 270023 ) lot= 8;
if (AccountBalance()>= 283580 ) lot= 8;
}
int globPos()
// функция Вычесляет размер биг лота
{
int v1=GlobalVariableGet("globalPosic");
GlobalVariableSet("globalPosic",v1+1);
return(0);
}
int OpenLong(double volume=1)
// функция открывает длинную позицию размером
лота=volume
{
int slippage=10;
string comment="RING--60";
color arrow_color=Red;
int magic=0;
if (GlobalVariableGet("globalBalans")>AccountBalance()) volume=lot*BigLotSize;
// if (GlobalVariableGet("globalBalans")>AccountBalance()) if (AutoLot)
LotSize();
ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss_L*Point,
Ask+TakeProfit_L*Point,comment,magic,0,arrow_color);
GlobalVariableSet("globalBalans",AccountBalance());
globPos();
// if (GlobalVariableGet("globalPosic")>25)
// {
GlobalVariableSet("globalPosic",0);
if (AutoLot) LotSize();
// }
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
return(0);
}
else
{
Print("OpenLong(),OrderSelect() - выдал ошибку : ",GetLastError());
return(-1);
}
}
else
{
Print("Error opening Buy order : ",GetLastError());
return(-1);
}
}
int OpenShort(double volume=1)
// функция открывает короткую позицию размером
лота=volume
{
int slippage=10;
string comment="20/200 expert v2 (Short)";
color arrow_color=Red;
int magic=0;
if (GlobalVariableGet("globalBalans")>AccountBalance()) volume=lot*BigLotSize;
ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLoss_S*Point,
Bid-TakeProfit_S*Point,comment,magic,0,arrow_color);
GlobalVariableSet("globalBalans",AccountBalance());
globPos();
// if (GlobalVariableGet("globalPosic")>25)
// {
GlobalVariableSet("globalPosic",0);
if (AutoLot) LotSize();
// }
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
return(0);
}
else
{
Print("OpenShort(),OrderSelect() - выдал ошибку : ",GetLastError());
return(-1);
}
}
else
{
Print("Error opening Sell order : ",GetLastError());
return(-1);
}
}
int init()
{
// контроль переменной перед использованием
if (AutoLot) LotSize();
if(!GlobalVariableCheck("globalBalans"))
GlobalVariableSet("globalBalans",AccountBalance());
if(!GlobalVariableCheck("globalPosic"))
GlobalVariableSet("globalPosic",0);
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
// проверяем есть ли открытые ордера ...
total=OrdersTotal();
if(total delta_S*Point)) //Если цена уменьшилась на величину
delta
{
//условие выполнено значит входим в короткую
позицию:
// проверяем есть ли свободные деньги для открытия
короткой позиции
if(AccountFreeMarginCheck(Symbol(),OP_SELL,lot) delta_L*Point)) //Если цена
изменилась на величину delta
{
// условие выполнено значит входим в длинную позицию
// проверяем есть ли свободные деньги на счету
if(AccountFreeMarginCheck(Symbol(),OP_BUY,lot) 0)
{
for(cnt=0;cnt =0))
{
RefreshRates();
if (OrderType()==OP_BUY)
closeprice=Bid;
else
closeprice=Ask;
if (OrderClose(OrderTicket(),OrderLots(),closeprice,10,Green))
{
Print("Принудительное закрытие сделки - №",OrderTicket());
OrderPrint();
}
else
Print("OrderClose() в блоке проверки времени жизни
сделки вернул ошибку - ",GetLastError());
}
}
else
Print("OrderSelect() в блоке проверки времени жизни
сделки вернул ошибку - ",GetLastError());
}
}
return(0);
}