тейк профит

определим тейк профит

int tp;


и высчитаем его значение
tp=MathCeil(sl*t_p)/100;
это так же можно сделать в функции init();
непонятные операторы можно посмотреть прямо в редакторе, в окне навигатора,
вкладка Словарь.

 

вкладка словарь

 

Теперь перейдём к функции start();


эта функция вызывается с приходом каждого тика, т.е. фактически работает постоянно.
более подробно можно посмотреть в Учебнике MQL4


для тестирования мы можем открывать не более одного ордера BUY или SELL.
следующий ордер мы можем открыть только после закрытия предыдущего.
значит нам необходимо проверить количество открытых советником ордеров.


напишем небольшую функцию:


bool control()
{
bool c=true;
for(int t=OrdersTotal()-1;t>=0;t--)
{
if(OrderSymbol()==Symbol()&&//если ордер открыт по текущей паре
OrderMagicNumber()== magic)c=false;//и этим советником, больше ордеров не открываем.
}
return(c)
}


в функцию старт вставим следующую строку-if(!c)return(0);


посмотрим, что получилось))))))))


//+------------------------------------------------------------------+
//| test.mq4 |
//| lapot |
//| http://lapot10.ru/ |
//+------------------------------------------------------------------+


#property copyright "lapot"
#property link "http://lapot10.ru/"


extern int magic=12345;
extern int sl=40;
extern int t_p=120;
extern int ind_p1=0;
extern int ind_p2=0;
extern int ind_p3=0;
extern int ind_p4=0;


int tp;
bool trade;


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+


int init()
{
//----
if(Digits==3||Digits==5)sl=sl*10;//в случае пятизнака умножаем стоп лосс на 10

if(IsDemo())trade=true;
else
trade=false;
//Высчитаем тейк-профит

tp=MathCeil(sl*t_p)/100;
//----
return(0);
}


//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+


int deinit()
{
//----

//----
return(0);
}


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+


int start()
{
//----
if(!trade)return(0);//торговля запрещена
if(!c)return(0);//есть открытые ордера
//----
return(0);
}


//+------------------------------------------------------------------+


bool control()
{
bool c=true;
for(int t=OrdersTotal()-1;t>=0;t--)//В цикле проверяем все открытые ордера
{
if(OrderType()==OP_BUY||OrderType()==OP_SELL)c=false ;
}
return(c)
}


Комментарии (0)

Нет комментариев. Ваш будет первым!

Яндекс.Метрика