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

 

добрый день.

пробую что то сам написать. вот дошел до этого места. дальше не понимаю как заставить советник торговать. не понимаю от чего не открываются ордера. смысл советник- когда 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");
//-------------------------------------------

 

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

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

 }
 
Roger:

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

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

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

 
apollo440:

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

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


Ну, хотя бы

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

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

 
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);
}

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



4.

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

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

 
apollo440:


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

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


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

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



спасибо )

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

 
Roger:

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


Переменная do_buy1 имеет действительное, а не логическое значение.
 
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);
}
//------------------------

Причина обращения: