10 свечей, после закрытия позиции

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

Добрый день!

Уважаемые программисты, помогите пожалуйста решить одну задачу, ТЗ:

После того, как происходит закрытие позиции, на протяжении 10 последующих свечей идёт поиск падающей свечи.

То, есть: если из 10 свечей найдена хотя бы одна падающая свеча, то выходим из цикла. 



Вот часть кода, но неправильно работает.


if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))

{

int C=OrderCloseTime();

int h=iBarShift(Symbol3,PERIOD_M1,C);

double g=(Close[1]-Open[1])/Point;

}

Alert("КОЛ-ВО СВЕЧЕЙ ПОСЛЕ ЗАКРЫТИЯ",h);

Alert("НАПРАВЛЕНИЕ СВЕЧЕЙ ПОСЛЕ ЗАКРЫТИЯ",g);


if ((h>1)&&(h<=10))

{

if (g>=0)

{

Alert("РАНОВА-ТО");

return(-1);

}

}

metka1();

}


return(0);

}

int metka1()

{

int send1=OrderSend(Symbol3,OP_BUY,Lots,Ask,3,Bid-30*Point,Bid+30*Point);

return(0);

}



Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Nikolai Semko
6748
Nikolai Semko  
ProfessorU:

Добрый день!

Уважаемые программисты, помогите пожалуйста решить одну задачу, ТЗ:

После того, как происходит закрытие позиции, на протяжении 10 последующих свечей идёт поиск падающей свечи.

То, есть: если из 10 свечей найдена хотя бы одна падающая свеча, то выходим из цикла. 

Изучаем первоисточники:

а так же вставляем на форуме код правильно 

отредактируйте пожалуйста своё первое сообщение:

ProfessorU
31
ProfessorU  
Nikolai Semko:

Изучаем первоисточники:

а так же вставляем на форуме код правильно 

отредактируйте пожалуйста своё первое сообщение:

Пытался 

While и for

while( h>=10)     

{

if (g>=0) код ищет растущую свечу НЕ ОТ ЗАКРЫТИЯ ПОЗИЦИИ, А ОТ НАЧАЛА ЗАПУСКА. Я что только не перепробывал.

{

{

Alert("РАНОВА-ТО");

return(-1);

}

}

Dmitry Fedoseev
57642
Dmitry Fedoseev  

Не надо здесь никакого цикла. На каждом тике или раз на бар выполнять проверку.

Про выход из какого цикла идет разговор? Сформулируйте задачу, что бы понятно было, тогда и сами поймете.

Nikolai Semko
6748
Nikolai Semko  
ProfessorU:

Пытался 

While и for

while( h>=10)     

{

if (g>=0) код ищет растущую свечу НЕ ОТ ЗАКРЫТИЯ ПОЗИЦИИ, А ОТ НАЧАЛА ЗАПУСКА. Я что только не перепробывал.

{

{

Alert("РАНОВА-ТО");

return(-1);

}

}

еще раз - вставляйте код в своих сообщениях правильно.
Вот вам один из вариантов ответа:
   int i=0;
   double g;
   do
     {
      g=(Close[i]-Open[i]);
      i++;
     }
   while(g>=0 && i<10);

ProfessorU
31
ProfessorU  
Dmitry Fedoseev:

Не надо здесь никакого цикла. На каждом тике или раз на бар выполнять проверку.

Про выход из какого цикла идет разговор? Сформулируйте задачу, что бы понятно было, тогда и сами поймете.


Пример проверки на каждом баре привести можете?

Dmitry Fedoseev
57642
Dmitry Fedoseev  
ProfessorU:


Пример проверки на каждом баре привести можете?

static datetime lastTime=0;
if(lastTime!=iTime(NULL,0,0)){
   // сделать что-то
   lastTime=iTime(NULL,0,0);
}
ProfessorU
31
ProfessorU  
Nikolai Semko:
еще раз - вставляйте код в своих сообщениях правильно.
Вот вам один из вариантов ответа:

Проверил, изменил переменную g>=-50 
Все- ровно открывает. На 8 ой свече. ( падающей свечи размером -50 не было)
Nikolai Semko
6748
Nikolai Semko  
ProfessorU:
Проверил, изменил переменную g>=-50 
Все- ровно открывает. На 8 ой свече. ( падающей свечи размером -50 не было)
почему минус 50?
while (g>=-50) означает, что цикл выполняется пока g не станет меньше чем минус пятьдесят.
ProfessorU
31
ProfessorU  
Nikolai Semko:
почему минус 50?
while (g>=-50) означает, что цикл выполняется пока g не станет меньше чем минус пятьдесят.
Да, именно (-50)
До тех пор пока нет падающей свечи, размером меньше или равно (-50) цикл не должен прекращаться в течении 10 свечей от закрытия позиции

Когда испытал: после закрытия позиции не было свечи размером меньше (-50) , а код все ровно завершил цикл.
Evgeniy Zhdan
16796
Evgeniy Zhdan  
ProfessorU:


Ошибка как минимум тут:

int C=OrderCloseTime();

Это не int, а datetime

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