Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 123

 

Как в условии на покупку/продажу добавить значение если в индикаторе RVI  например: при пересечении двух линий между собой открывается ордер на покупку\продажу, а нужно что бы было не просто при пересечении, а если пересечение произошло выше 0 Value ?

MM и MS - это линии индикатора RVI

  if (MM > MS && MoM < MS && MoM < MM)
   {
    OrderSend(_Symbol, OP_BUY, Lot, Ask, 3, Ask-SL*Point, Ask+TP*Point, "", Magic, 0, Red);
   }
  if (MM < MS && MoM > MS && MoM > MM)
   {
    OrderSend(_Symbol, OP_SELL, Lot, Bid, 3, Bid+SL*Point, Bid-TP*Point, "", Magic, 0, Red);
   }


 

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

Подскажите как через obj label отобразить строку более чем 64 символа !?

 
Игорь:

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

Подскажите как через obj label отобразить строку более чем 64 символа !?

две obj label рядом. Левой выравниваем по правому краю, правую по левому

 
novichok2018:

Не могли бы Вы пояснить вот эту строку Вашего кода: OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; Почему у OrderInfo нет скобок и не указан тип? и это все объявляется на глобальном уровне?

OrderInfo - это тип данных. Как int, double и пр. В данном случае OrderInfo - это структура. Пример ее объявления я привел в посте https://www.mql5.com/ru/forum/160587/page121#comment_6556328

arrstBuyOrderInfo и arrstSellOrderInfo - имена переменных, которые имеют тип OrderInfo. 

Квадратные скобки около переменных указывают на то, что переменные являются массивами переменных. Ну а так как в скобках указано количество (MAX_ORDERS_CNT - это именованная константа, равная 500, которая описана у меня перед OrderInfo), то массивы являются статическими (изначально заданного размера)

А определение наличия ордера вставлять в функцию закрытия позиций? Где? А может функция закрытия позиций с массивами вообще должна выглядеть как-то по -другому? Тяжеловато пока для меня. Спасибо.

Мы пока рассмотрели только первую задачу - сбор информации о рабочих ордерах. Генерация торгового сигнала и выполнение торговых действий - это задачи 2 и 3 соответственно. До них мы еще не добрались.

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

Вопросы от начинающих MQL4 MT4 MetaTrader 4
Вопросы от начинающих MQL4 MT4 MetaTrader 4
  • 2018.02.13
  • www.mql5.com
Если у Вас вопросы по MQL4, MT4, MetaTrader 4, пожалуйста пишите в этой теме. Особенно когда вопросы касаются торговых функций...
 
Aleksey Rodionov:

Как в условии на покупку/продажу добавить значение если в индикаторе RVI  например: при пересечении двух линий между собой открывается ордер на покупку\продажу, а нужно что бы было не просто при пересечении, а если пересечение произошло выше 0 Value ?

MM и MS - это линии индикатора RVI


Нужно сравнить значения обеих линий с нулем. Разве нет?

И неясно, что такое MoM.

 

есть вот такая строка из MQL5, компилятор MQL4 на нее ругается, как её можно переписать?

//--- set new color
   m_pixels[y*m_width+x]=(r<<16|g<<8|b<<0|255<<24) &0xffffffff;

//check operator precedence for possible error; use parentheses to clarify precedence   Canvas.mqh
 
Ihor Herasko:

OrderInfo - это тип данных. Как int, double и пр. В данном случае OrderInfo - это структура. Пример ее объявления я привел в посте https://www.mql5.com/ru/forum/160587/page121#comment_6556328

Правильно ли я понимаю Ваш пример: Директива #define везде, где встретится MAX_ORDERS_CNT будет подставлять число 500 ? А зачем числу задается тип? 

И почему нельзя просто задать extern int cnt=500 ? И тогда будет OrderInfo  arrstOrderInfo[cnt], arrstBuyOrderInfo[cnt], arrstSellOrderInfo[cnt];  ?


И ещё: в Вашем посте  на стр122 мне непонятно, что это - &arrstOrderInfo[],&nOrdersCnt и .n ? Извините, если мои вопросы кажутся глупыми - и так стараюсь больше разобраться самостоятельно, хотя получается слабо.

 

Доброго времени суток

помогите пожалуйста модернизировать индикатор

требуется добавить 2 буфера, "родной" индикатор рисует стрелку( вверх или вниз) при выявлении гэпа и дает сигнал в буфер 6 или 7

хотелось бы иметь буфер 8 и 9 где при гепе сигнал +1 (вверх) или -1 (вниз) 0 при отсутсвие

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

 
novichok2018:

Правильно ли я понимаю Ваш пример: Директива #define везде, где встретится MAX_ORDERS_CNT будет подставлять число 500 ? А зачем числу задается тип? 

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

И почему нельзя просто задать extern int cnt=500 ? И тогда будет OrderInfo  arrstOrderInfo[cnt], arrstBuyOrderInfo[cnt], arrstSellOrderInfo[cnt];  ?

Нельзя, т. к. int cnt - это объявление переменной. А переменная может изменять свое значение во время выполнения программы. Память же под статический массив не распределяется во время выполнения программы. Объем памяти должен быть известен еще на этапе компиляции. Чтобы изменять размер массива во время выполнения программы, нужно использовать динамический массив. Ну это уже потом, когда освоитесь со статическим массивами.

И ещё: в Вашем посте  на стр122 мне непонятно, что это - &arrstOrderInfo[],&nOrdersCnt и .n ? Извините, если мои вопросы кажутся глупыми - и так стараюсь больше разобраться самостоятельно, хотя получается слабо.

Немного упрощу ответ, чтобы не сбивать с толку. Этот знак (&) указывает, что аргумент функции может изменить свое значение во время выполнения функции и вернется в то место, откуда была вызвана функция, с другим значением. В рассматриваемом случае функция SaveOrder может изменить содержимое массивов g_arrstBuyOrderInfo и g_arrstSellOrderInfo, а также переменных g_nBuyOrdersCnt и g_nSellOrdersCnt.

 

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

Подскажите как перекрасить бары не применяя шаблоны в мт4 !?

Или как применить цветовую схему !?