Открытие i+20

 

Добрый день уважаемые пираньи.

Пишу советник и столкнулся с тем что нужно открыть позицию через Н колличество свечей после сигнала.

Как это можно реализавать?

Наверняка через цикл но чёт не могу сообразить.

Прошу помощи.

 
EugenioKP1983:

Добрый день уважаемые пираньи.

Пишу советник и столкнулся с тем что нужно открыть позицию через Н колличество свечей после сигнала.

Как это можно реализавать?

Наверняка через цикл но чёт не могу сообразить.

Прошу помощи.

Время сигнала + Н*PeriodSeconds()
 
evillive:
Время сигнала + Н*PeriodSeconds()
спасибо, но не дописал о том что читать нужно черные и белые а они в перемешку
 
EugenioKP1983:
спасибо, но не дописал о том что читать нужно черные и белые а они в перемешку
Ну тогда дописывайте как-то конкретнее, что ли, белые или чёрные, а может зелёные или красные, или какая-то комбинация тех и других :)
 

У меня один сигнал.

Сигнал && Close>=Open - вход на продажу

Сигнал && Close<=Open - вход на покупку


вот отсюдаи нужнно отщитать Н свечей для белых свечей или Н свечей для черных взависимости от ситуации.

Пример

int N_Black_Candles = 3,N_White_Candles=5;

if(Сигнал && Close>=Open) /*Свеча Белая*/

{

 Получить число белых свечей и сделать проверку;

If (Сигнал && N_Black_Candles )

{

OrderOpen_____________________________

}

}

Както так вижу

 
Здравствуйте уважаемые.
Вопрос почти в тему. 
Как "объяснить" эксперту, что после первого сигнала искать второй сигнал только в течении следующих 3 баров?
Благодарю.
 
EugenioKP1983:

У меня один сигнал.

Сигнал && Close>=Open - вход на продажу

Сигнал && Close<=Open - вход на покупку


вот отсюдаи нужнно отщитать Н свечей для белых свечей или Н свечей для черных взависимости от ситуации.

Пример

int N_Black_Candles = 3,N_White_Candles=5;

if(Сигнал && Close>=Open)

{

 Получить число черных свечей и;

OrderOpen_____________________________


}

Както так вижу


Счетчик надо тогда организовать, вернее два счетчика, для бычьих и для медвежьих отдельно.

  Я это так вижу:

extern int N_Black_Candles = 3, N_White_Candles=5;
int Black_Candles = 0, White_Candles=0;
bool black=false, white=false;

void OnTick()
{
//....
  if(Сигнал && Close>=Open)
  {
    black=true;
  }
  if(Сигнал && Close<=Open)
  {
    white=true;
  }

 if(newbar) //как организовать детектор нового бара тут на форуме инфы навалом
 {
  if(black)
  {
    Black_Candles++;
  }
  if(white)
  {
    White_Candles++;
  }

///
  if(Black_Candles>=N_Black_Candles)
   {
     OrderSend()
     Black_Candles=0;
     black=false;
   }
  if(White_Candles>=N_White_Candles)
   {
     OrderSend())
     White_Candles=0;
     white=false;
   }
 }
///...другой код
//end of OnTick()
}
 
evillive:

Счетчик надо тогда организовать, вернее два счетчика, для бычьих и для медвежьих отдельно.

  Я это так вижу:

Спасибо большое буду применят.
 
EugenioKP1983:
Я так понимаю что в моём случии это должна быть функция запускаемая при сигнале и щитающая свечи на предмет чёрных и белых и отдающаа  каунтер со значением.
можно и отдельной функции, а можно прямо в онтик считать, как в примере выше. Правда, там только для одного селл и одного бай на рынке, если их больше будет, уже возможна путаница и сбой логики. Тут ещё надо вставлять проверку символа и магика, а также, возможно счётчики в виде массивов организовывать, а не просто переменных.
 
kstar1:
Здравствуйте уважаемые.
Вопрос почти в тему. 
Как "объяснить" эксперту, что после первого сигнала искать второй сигнал только в течении следующих 3 баров?
Благодарю.

ВремяОжидания = Время сигнала + 3*PeriodSeconds();

Если(ВремяСервера больше-равно ВремяОжидания) ИщемСигнал;

 
evillive:

ВремяОжидания = Время сигнала + 3*PeriodSeconds();

Если(ВремяСервера больше-равно ВремяОжидания) ИщемСигнал;


А как запомнить ВремяСигнала, чтобы с каждым следующим тиком оно не менялось?