[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 69

 

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

может кто поможет.

1. находим начало дня (это я сделал)

2. Находим максимум дня (сделал)

3. Нужно вычислить бары, которые последуют за первым фракталом после пересечения МА сверху вниз после этого максимума.


Прилагаю рисунок.


 
komposter >>:

Вместо iRSI должно быть iCCI.

ЕПРСТ...... совсем глаза выпали..... пасиба, бум править

 
luka >>:

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

может кто поможет.

3. Нужно вычислить бары, которые последуют за первым фракталом после пересечения МА сверху вниз после этого максимума.

"вычислить бары, которые последуют за..."

Пиши проще: "Хочу знать куда пойдет цена после того как я включил компьютер..." :-)))))

 
mukata >>:

"вычислить бары, которые последуют за..."

Пиши проще: "Хочу знать куда пойдет цена после того как я включил компьютер..." :-)))))


вы не поняли.

эти бары уже есть на графике. или скажем так это текущий бар. И если он соответствует условиям - он и есть искомый бар.

Это во-первых.

А во-вторых, зачем лишний раз флудить, если не понимаете, о чем речь?

 
Skydiver >>:

Можно попробовать так

OrderSelect(1, SELECT_BY_POS)

if(OrderOpenTime()!=0) 

{

///необходимая операция

}

Но это вариант только если у вас всего 1 ордер!

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


Идея в том: вместе с остановкой ордера, например, по buy устанавливаются три отложенных ордера

я хочу условие на то, что один из этих 3х отложенных ордеров стал обычным " рабочим ордером"

 
luka >>:

вы не поняли.

эти бары уже есть на графике. или скажем так это текущий бар. И если он соответствует условиям - он и есть искомый бар.

Это во-первых.

А во-вторых, зачем лишний раз флудить, если не понимаете, о чем речь?

"вычислить бары, которые последуют за первым фракталом после пере...". последуют, значит будут, а не "уже есть на графике"...

Вот если "И если он соответствует условиям - он и есть искомый бар" - это другое дело. Опиши "Условия", поможет кто-нибудь.

извиняюсь за флуд, сорвалось.



 
mukata >>:

"вычислить бары, которые последуют за первым фракталом после пере...". последуют, значит будут, а не "уже есть на графике"...

Вот если "И если он соответствует условиям - он и есть искомый бар" - это другое дело. Опиши "Условия", поможет кто-нибудь.

извиняюсь за флуд, сорвалось.



Ооот я все в точности так и написал.

Я же не буду ставить целью нахождение не знаю чего, не зная где и как.

Меня интересуют конкретные бары, которые уже существуют. А точнее их сдвиг.

Кстати, я уже реализовал, это, оказывается, не так сложно :)

 
fima_ >>:

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


Идея в том: вместе с остановкой ордера, например, по buy устанавливаются три отложенных ордера

я хочу условие на то, что один из этих 3х отложенных ордеров стал обычным " рабочим ордером"

Те вы имеете 3 отложки и если хотя бы 1 сработала то ставится некоторое условие?

если да то тогда можно так

for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера

{

OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0) ///время не равно 0 значит отложка сработала(или как писал Roger  if(OrderType()<2)  )
{
///необходимая операция
}
}

или у вас 1 открытый ордер + 3 отложки?

тогда можно попробовать так

//в глобальных переменных 

int tick[3];  

//в функции start

//cначало записываем номера тикетов отложек в переменные 

for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера

{

  OrderSelect(cnt, SELECT_BY_POS)
  if(OrderOpenTime()!=0)

  {

     tick[cnt]=OrderTicket();

  }

}

//а далее проверяем выполнился ли отложенный ордер


for(int cnt=0;cnt<OrdersTotal();cnt++)

{

   OrderSelect(cnt, SELECT_BY_POS)
   if(OrderOpenTime()!=0)

{

   for(int cnt2=0;cnt2<3;cnt++)

   if(tick[cnt]==OrderTicket())

   {

     //необходимое условие

   }

}

или для всех отложек использовать определенный Magic и если появился отркытый ордер с этим Magic то необх усл ну например так:

в глоб перем

int mag=12345;

в ф start

/// При открытии отложки укажите ему в качестве магика mag

///ну а далее идет поиск "бывшей" отложки по Magic

for(int cnt=0;cnt<OrdersTotal();cnt++)

{

   OrderSelect(cnt, SELECT_BY_POS)
   if(OrderOpenTime()!=0&&OrderMagic()==Mag)

{

///необходимая операция

}

}

код НА возможные ошибки не проверял!

 
Какой ордер возвращаяет функция OrderSelect(0,SELECT_BY_POS)? Который был открыт раньше всех? Ордеры не могут меняться местами? (я не использую отложенные ордера)
 
AndreyK писал(а) >>
Какой ордер возвращаяет функция OrderSelect(0,SELECT_BY_POS)? Который был открыт раньше всех? Ордеры не могут меняться местами? (я не использую отложенные ордера)

Правильно, который раньше всех. Это удобно, если Вы точно знаете, что у Вас в принципе может быть открыт только один ордер и Вы можете избежать перебор. Ордера не меняются местами, а сдвигаются к наименьшему при закрытии более раннего.