Не получается написать советник.

 

Не работает код который должен определять такое комбинации как "Падающая звезда" и "Молот/Повешенный".

Вот сам код:

extern double percent = 0.75; // процент свечи

//-находим верхнюю точку-//
double upPoint (int const)
{
 double verToch;
 if (iOpen(NULL,0,const)>=iClose(NULL,0,const))
 verToch = iOpen(NULL,0,const);
 else
 verToch = iClose(NULL,0,const);
 return (verToch);
}

//-находим нижнюю точку-//
double dwPoint (int const)
{
 double nizToch;
 if (iOpen(NULL,0,const)<=iClose(NULL,0,const))
 nizToch = iOpen(NULL,0,const);
 else
 nizToch = iClose(NULL,0,const);
 return (nizToch);
}

//-находим размер нужного % свечи-//
double candlePr (int const)
{
 double sv = ((iHigh(NULL,0,const)-iLow(NULL,0,const))*percent);
 return (sv);
}

int start()
{
 
//-стратегия и открытие сделки-//
   if ((iHigh(NULL,0,1)-dwPoint(1))<=candlePr(1) 
      && (upPoint(1) || dwPoint(1)) != 0)
   OrderSend(Symbol(),OP_BUY,lot,Ask,dopusk,Ask-sl*Point,Ask+tp*Point,
   "Длинная позиция",0,Green);   
   
   if ((upPoint(1)-iLow(NULL,0,1))<=candlePr(1)
      && (upPoint(1) || dwPoint(1)) != 0)
   OrderSend(Symbol(),OP_SELL,lot,Bid,dopusk,Bid+sl*Point,Bid-tp*Point,
   "Короткая позиция",0,Green);  
  
return(0);
}
По идеи сделки должны открывать в начале каждого часа если комбинация верна, а они открываются хаотично да еще не зависимо от условия которое я ввел.
 
Shark:
По идеи сделки должны открывать в начале каждого часа если комбинация верна, а они открываются хаотично да еще не зависимо от условия которое я ввел.
 if ( (iHigh(NULL,0,1) -dwPoint(1) )  <= candlePr(1) 

      && (upPoint(1) || dwPoint(1)) != 0)
// что с чем сравнивнивается ?
//пропишите отдельно каждый элемент 

( upPoint(1)!=0 || wPoint(1)!=0 )
 
Исправил. Не помогло...
 
Shark:


По идеи сделки должны открывать в начале каждого часа если комбинация верна, а они открываются хаотично да еще не зависимо от условия которое я ввел.
А не видно, где осуществлена эта идея.
 
Roger:
А не видно, где осуществлена эта идея.

Почему не видно? Идея такая:

1. сначала находим размер свечи в пунктах (допустим она будет равняться 100 т.е. 0,0100)

2. находим чему равен отрезок свечи от нижней точки Low до Open\Close (смотря какая выше). К примеру пусть он равняется 15 пунктам - 0,0015

3. Если этот отрезок меньше чем размер свечи умноженный на 75%, то это (грубо говоря) является "Падающая звезда"

100*75%=75 п.=0,0075

0,0015<0,0075 следовательно открываем "Короткую позицию"

PS В коде я все это расписал. И кажется все правильно...

 
Shark:
Исправил. Не помогло...

проверка на наличие уже открытых ордеров + подправил ф-ции double upPoint (int const) и double dwPoint (int const)

Файлы:
covetn.mq4  2 kb
 
Shark:

Почему не видно? Идея такая:

PS В коде я все это расписал. И кажется все правильно...

А почему Вы считаете, что советник будет это делать только в начале часа, а не в течение этого часа?