Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 517

 
Alexey Viktorov:

И после этого продолжаете пользоваться такими-же формулировками.


))) Два объекта один старше другой младше, мне нужна цена точки младшего (ближнего) а получаю, в коммент, цену точки старшего (дальнего) объекта. Почему? Цикл то с другой стороны теперь Если прежний, закомментированый, цикл возвращал самый дальний объект, то текущий цикл, должен вернуть самый ближний - последний а возвращает, предпоследний. Где то, чего то, недопонимаю.
 
PolarSeaman:
))) Два объекта один старше другой младше, мне нужна цена точки младшего (ближнего) а получаю, в коммент, цену точки старшего (дальнего) объекта. Почему? Цикл то с другой стороны теперь Если прежний, закомментированый, цикл возвращал самый дальний объект, то текущий цикл, должен вернуть самый ближний - последний а возвращает, предпоследний. Где то, чего то, недопонимаю.

Цикл покажите - раз, и два - чтобы выбрать в цикле объекты по времени, нужно сравнивать два времени - прошлого объекта и текущего. Если у текущего время больше, то сохранить его в переменной для проверки на следующей итерации цикла. По завершении цикла, в переменной будет самый последний объект из созданных.

 
YanSay:

Попытался, не работает, что-то не то видимо делаю(

Наиболее грубая ошибка здесь - это указание значения 100 вместо тикета в аргументе функции OrderDelete().

Далее ошибка не такая грубая, но связанная с тем, что проверяется расчетное значение Stop Loss, а не его фактическое значение.

Еще не проверяется тип ордера. Вдруг выбрали рыночный ордер? Как же его удалить то? Не проверен символ ордера. 

С учетом этих ошибок, получаем такой код удаления отложенного ордера при достижении ценой его Stop Loss:

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())
      continue;

   if (OrderMagicNumber() != 100)
      continue;

   if (((OrderType == OP_BUYSTOP || OrderType() == OP_BUYLIMIT) && Bid <= OrderStopLoss()) ||
       ((OrderType == OP_SELLSTOP || OrderType() == OP_SELLLIMIT) && Ask >= OrderStopLoss() && OrderStopLoss() > 0.0))
   {
      if (OrderDelete(OrderTicket()))
         RefreshRates();
   }
                                        
}   
Также в Вашем коде проверка достижения Stop Loss следует сразу после открытия ордера. Складывается впечатление, что после открытия отложенного ордера больше этот код уже не исполняется. То есть Вам нужно разделить ветки исполнения. Одна отвечает за установку ордера, а вторая - за его сопровождение.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

Здравствуйте уважаемые !

Подскажите каким образом можно отловить комбинацию нажатия клавиш например Ctrl+1. Одну клавишу клавиатуры я знаю каким образом поймать.

А мне нужна комбинация в мт4 - как сие осуществить !?

 
Игорь:

Здравствуйте уважаемые !

Подскажите каким образом можно отловить комбинацию нажатия клавиш например Ctrl+1. Одну клавишу клавиатуры я знаю каким образом поймать.

А мне нужна комбинация в мт4 - как сие осуществить !?

Событие OnChartEvent, анализировать параметры lparam и sparam, т. к. нажатие Ctrl+1 - это два события.

 
Ihor Herasko:

Событие OnChartEvent, анализировать параметры lparam и sparam, т. к. нажатие Ctrl+1 - это два события.

Не а не работает я пробовал !!!

Оно отображает только нажатие кнтрл и все остальные плюсы 1 и буквы не работают !!!

 
Игорь:

Не а не работает я пробовал !!!

Оно отображает только нажатие кнтрл и все остальные плюсы 1 и буквы не работают !!!

Я же написал:

нажатие Ctrl+1 - это два события

Ловите два события и анализируйте:

2018.04.05 12:26:32.170 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 17, dparam: 1.0, sparam: 285
2018.04.05 12:26:32.396 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 49, dparam: 1.0, sparam: 2

Это нажатие Ctrl+1.

 
Ihor Herasko:

Я же написал:

Ловите два события и анализируйте:

Это нажатие Ctrl+1.

Вот у меня только контрл или 1 а на другое нет или покажите ваш код !

После нажатия кнтрл других событий нет пока не отпустишь кнтрл !

Все нарыл ошибку спасибо ! буду рыть дальше !

 
Удалил дубли.
 
Vitaly Muzichenko:

С профилем? =)

:)

Причина обращения: