[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 217

 
Top2n:

Господа, ну хоть убей целый день сижу не на дюйм не приблизился к разгадке.

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


Сов же ведет учет ордеров? задай условие если рыночных 2, то отложка удаляется
 
ЗЫ - если код не большой... то суй его сюда полностью... может не поленюсь и вставлю эти строчки....
 
Aleksander:
ЗЫ - если код не большой... то суй его сюда полностью... может не поленюсь и вставлю эти строчки....

Может вы не поленитесь и код моего индикатора посмотреть, код выложил выше.
 
Aleksander:

так тебе же уже подсказывали?

открыл Ордер Бай - запомнил Тикет этого ордера

установил ордер селлстоп - в Магик этого ордера записывай Тикет ордера бай...

---

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

при отсутствии такого ордера(бай) - удали Селлстоп...

делов то на 15 строчек кода...

Я извиняюсь за тупость, а как его запомнить, просто он не один возможно и 5 их сразу надо запомнить будит в процессе работы советника.
 
давай.... выкладывай свой грааль... тут таких по 100 штук вдень штампуют... покажу красным цветом куда вставлять и где проверять :-)
 
//----балансир (установка ордеров)
 if (sig==0){
  x=true;
  y=true;
}
 if (sig==1 && x==true){
  ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage,0,0,   // Ask - SL * Point, Ask + TP * Point,
  "хи-хи"+ Symbol(), Magic, 0, DarkGreen);
  x=false;
  z=true;
}

//----маневр (установка отложенных ордеров)
  
 if(x==false && z==true){
  
  ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots,PriceOpenLastPos(NULL,-1,-1)-(Price*Point), Slippage,0,0,  // Ask - SL * Point, Ask + TP * Point,
  "хи-хи"+ Symbol(), Magic+1, 0, DarkGreen);
  z=false;
}
У меня пока только с Бай))
 
Top2n:
У меня пока только с Бай))

ну для начала открытие сделок с запоминанием их тикета в магик...

избавимся от лишних проверок... - если на реале - то надо добавить бы пару секунд перерыва между ордерами.... для тестера пофиг.

  //----балансир (установка ордеров)
  if (sig==0){   x=true;   y=true; }
  //
  if (sig==1 && x==true){
     ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage,0,0, "хи-хи"+ Symbol(), Magic, 0, DarkGreen);
     x=false;  z=true;
     //---- wait for 3 seconds
     Sleep(3000);
     //----маневр (установка отложенных ордеров)
     // Ask - SL * Point, Ask + TP * Point,
     OrderSend(Symbol(), OP_SELLSTOP, Lots,PriceOpenLastPos(NULL,-1,-1)-(Price*Point), Slippage,0,0, "хи-хи"+ Symbol(), ticket, 0, DarkGreen);
     z=false;
  }

хотя от лишних флагов надо избавиться... от Z... если нигде дальше не пользуется...

 
в старте - вызвать функцию проверки наличия ордера бай по циклу ордеров Селлстоп... и его удаления - если ордера бай нет среди открытых ордеров...
 

Вопрос к разработчикам:

У меня 427-й билд терминала. Набросал маленький скрипт:

datetime VremaOrdera= InitsializeRealMasterOrders();
string SSStroka;
SSStroka=StringConcatenate(TimeYear(VremaOrdera),".",TimeDay(VremaOrdera),"     ",TimeHour(VremaOrdera),":",TimeMinute(VremaOrdera),"  :",TimeSeconds(VremaOrdera));
Alert("Поступило время ордера = ",VremaOrdera," что соответствует времени ",SSStroka);

Скрипт выдал следующее:

Но увы, ордер открыт:

Это что за глюк такой? Скрипт вернул время - ноль часов, ноль минут и ноль секунд.

 

InitsializeRealMasterOrders -- тут косяк ищи.

И вот еще -- чтобы велосипеды не делать -- https://docs.mql4.com/ru/convert/timetostr