Скачать MetaTrader 5

советник не торгует

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
TESKATLIPOKA
146
TESKATLIPOKA  

добрый день.

пробую что то сам написать. вот дошел до этого места. дальше не понимаю как заставить советник торговать. не понимаю от чего не открываются ордера. смысл советник- когда 3 индикатора смотрят в одну сторону- открывается сделка. за помощь - спасибо.

//+------------------------------------------------------------------+
//| trend123.mq4 |
//| я |
//| |
//+------------------------------------------------------------------+
#property copyright "я"
#property link ""

//--- input parameters

extern bool dobuy = true; // разрешение вообще покупать
extern bool dosell = true; // разрешение вообще продавать


extern double Lot = 0.1;
extern int slippage = 3;
extern double take_profit = 100;
extern double stop_loss = 100;

//--------------------------------------------------
extern int open_period1 = 50;
extern int open_period2 = 40;
extern int open_period3 = 30;
//--------------------------------------------------
extern double do_buy1 = 0.1; // open_number_buy1 = 0.1;
extern double do_buy2 = 0.1;
extern double do_buy3 = 0.1;
extern double do_sell1 = -0.1;
extern double do_sell2 = -0.1;
extern double do_sell3 = -0.1;

//------------------------------------
int magic = 9;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double trend_value1 = iCustom(Symbol(),0,"trend 1",open_period1,0,0);
double trend_value2 = iCustom(Symbol(),0,"trend 2",open_period2,0,0);
double trend_value3 = iCustom(Symbol(),0,"trend 3",open_period3,0,0);
//-----------------
if( do_buy1 && trend_value1 >= do_buy1 && trend_value2 >= do_buy2 && trend_value3 >= do_buy3)
{

}
//------------------------------
if( do_sell1 && trend_value1 <= do_sell1 && trend_value2 <= do_sell2 && trend_value3 <= do_sell3)
{

}

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

// ФУНКЦИЯ ОТПРАВЛЯЕТ ОРДЕРА НА ПОКУПКУ И ПРОДАЖУ
void fOpenOrder(int order_type)

//---------------------------------------------------------
if(order_type==0)
{
//-------------------------------------
if(dobuy)
{
RefreshRates();
if(stop_loss==0) { SL = 0; }else{ SL = Bid-stop_loss; }
if(take_profit==0) { TP = 0; }else{ TP = Bid+take_profit; }
fSend(OP_BUY,Ask,SL,TP);
}
//---------------------------------------
if(order_type==1)
{
if(dosell) {
RefreshRates();
if(stop_loss==0) { SL = 0; }else{ SL = Ask+stop_loss; }
if(take_profit==0) { TP = 0; }else{ TP = Ask-take_profit; }
fSend(OP_SELL,Bid,SL,TP);
}

}
PlaySound("alert.wav");
//-------------------------------------------

Alexander
2441
Alexander  

Как же он будет торговать, если

if( do_buy1 && trend_value1 >= do_buy1 && trend_value2 >= do_buy2 && trend_value3 >= do_buy3)
 { 

 }
TESKATLIPOKA
146
TESKATLIPOKA  
Roger:

Как же он будет торговать, если

да с этим то и мучаюсь, я ведь только начал. я эти строки взял с советника, который мне делали на заказ. надоело по пустякам обращаться. и пробую научиться. в книжке по mql - не особо понятно.

а как правильно что бы открывал ордера?

Alexander
2441
Alexander  
apollo440:

да с этим то и мучаюсь, я ведь только начал. я эти строки взял с советника, который мне делали на заказ. надоело по пустякам обращаться. и пробую научиться. в книжке по mql - не особо понятно.

а как правильно что бы открывал ордера?


Ну, хотя бы

if( do_buy1 && trend_value1 >= do_buy1 && trend_value2 >= do_buy2 && trend_value3 >= do_buy3)
 { 
   fOpenOrder(0);
 }

А вообще надо бы еще почитать.

TESKATLIPOKA
146
TESKATLIPOKA  
Roger:


Ну, хотя бы

А вообще надо бы еще почитать.

надо. это и делаю ) вот согласно учебнику, я бы сделал так

if
( trend_value1>do_buy1;
trend_value2>do_buy2;
trend_value3>do_buy3;
dobuy = true; )


{
OrderSend (Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
}

Alexander
2441
Alexander  
Уже лучше.:) У твоего брокера цены с 4-мя знаками после запятой или с 5-ю?
TESKATLIPOKA
146
TESKATLIPOKA  
Roger:
Уже лучше.:) У твоего брокера цены с 4-мя знаками после запятой или с 5-ю?



4.

так моя версия оказывается должна работать?

она намного проще, чем мне подсказывали.... зачем огород городить тогда...

Alexander
2441
Alexander  
apollo440:


так моя версия оказывается должна работать?

она намного проще, чем мне подсказывали.... зачем огород городить тогда...


Должна, только чтобы условия наступали.
TESKATLIPOKA
146
TESKATLIPOKA  
Roger:

Должна, только чтобы условия наступали.



спасибо )

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

Victor Nikolaev
Модератор
15086
Victor Nikolaev  
Roger:

Как же он будет торговать, если


Переменная do_buy1 имеет действительное, а не логическое значение.
TESKATLIPOKA
146
TESKATLIPOKA  
Vinin:

Переменная do_buy1 имеет действительное, а не логическое значение.



мдя... чайник я ) буду думать как это исправить.

вот последняя версия. облегченная.

может эта правильная

//+------------------------------------------------------------------+
//| trend123.mq4 |
//| я |
//| |
//+------------------------------------------------------------------+
#property copyright "я"
#property link ""

//--- input parameters

extern bool dobuy = true; //
extern bool dosell = true; //


extern double Lot = 0.1;
extern int slippage = 3;
extern double take_profit = 100;
extern double stop_loss = 100;

//--------------------------------------------------
extern int open_period1 = 50;
extern int open_period2 = 40;
extern int open_period3 = 30;
//--------------------------------------------------
extern double do_buy1 = 0.1; // open_number_buy1 = 0.1;
extern double do_buy2 = 0.1;
extern double do_buy3 = 0.1;
extern double do_sell1 = -0.1;
extern double do_sell2 = -0.1;
extern double do_sell3 = -0.1;

//------------------------------------
int magic = 9;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double trend_value1 = iCustom(Symbol(),0,"trend 1",open_period1,0,0);
double trend_value2 = iCustom(Symbol(),0,"trend 2",open_period2,0,0);
double trend_value3 = iCustom(Symbol(),0,"trend 3",open_period3,0,0);

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

// ФУНКЦИЯ ОТПРАВЛЯЕТ ОРДЕРА НА ПОКУПКУ И ПРОДАЖУ

//------------------------------------
if
( trend_value1>do_buy1;
trend_value2>do_buy2;
trend_value3>do_buy3;
dobuy = true; )
{
OrderSend (Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
}
//------------------------
if
( trend_value1<do_sell1;
trend_value2<do_sell2;
trend_value3<do_sell3;
dobuy = true; )
{
OrderSend (Symbol(),OP_SELL,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
}
//------------------------

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий