Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 8

 
gyfto:

Я со своей колокольни думаю так: Close[] в цикле от Bars-1 до 0 передать можно, в dll этот массив собрать, и с этим массивом уже там работать. Пока не пробовал ещё, но предстоит.

Массив сам передавать не надо. Достаточно указатель на него передать и размер.

https://docs.mql4.com/ru/array/ArrayCopySeries 

https://docs.mql4.com/ru/array/ArrayCopyRates

 

Ребят подскажите пожалуйста простое условие "если текущая цена>цены открытия бара то выполнить действие". С барами еще не работал. А мозг не может дойти в 4:49

 
oDin48:

Ребят подскажите пожалуйста простое условие "если текущая цена>цены открытия бара то выполнить действие". С барами еще не работал. А мозг не может дойти в 4:49



if(Close[0]>Open[0])
    {
  //Ваше действие
    }
 
Всем привет ....как можно сократить следующее выражение : if(a>b && a>c && a>d)
 

Приветствую!

Не знаю, где лучше спросить, но решил все же не создавать новую тему. Пытался найти одного эксперта в CodeBase и вроде как подобного хватает, но т.к. не разбираюсь в mql, понял, что выделить необходимые мне функции не смогу. Подскажите, может быть существует простой советник, который отслеживает уже открытые ордера (и вновь открывающиеся) и если какой-то из них будет закрыт (по стопу в первую очередь), то создается новый отложенный ордер с параметрами закрытого (цена, тейк, стоп)?

И еще один вопрос. Есть такой индикатор i-SignalOfTrade. Ввиду отсутствия функции звукового оповещения в мобильных терминалах о событиях, этот индикатор очень может выручить. Но в нем есть лишние функции, которые нельзя отключить, если торгуешь самостоятельно - это оповещение о таких событиях как создание отложенных ордеров, их изменение и т.д. Т.е. оповещение о действиях, о которых и так в курсе. Буду благодарен, если поможете их отключить (или может быть существует другой подобный индикатор), необходимо оставить только оповещение о срабатывании отложенного ордера, срабатывании тейка и стопа.  

 
i999i:
Всем привет ....как можно сократить следующее выражение : if(a>b && a>c && a>d)

Можно написать if((b-a)*(c-a)*(d-a)>0), но не факт, что будет работать быстрее. Логическое AND и есть двоичное умножение, это всего лишь другая запись того же самого выражения, разница только в размере типов переменных. a>b - это булевая переменная, 4 байта, а b-a, если они double, то и разница будет double (8 байт), а это умножение как минимум в 2 раза дольше.

Zhunko:

Массив сам передавать не надо. Достаточно указатель на него передать и размер.


Бесценный совет.

gyfto:

a>b - это булевая переменная, 4 байта

Сейчас поясню. Можно же переписать ваше выражение как if((a>b)*(a>c)*(a>d)==1), потому что выражения в скобках принимают значения 0 или 1 (а они, в свою очередь, определены в define в прекомпиляторе как false и true).
 
gyfto:

Можно написать if((b-a)*(c-a)*(d-a)>0), но не факт, что будет работать быстрее. Логическое AND и есть двоичное умножение, это всего лишь другая запись того же самого выражения, разница только в размере типов переменных. a>b - это булевая переменная, 4 байта, а b-a, если они double, то и разница будет double (8 байт), а это умножение как минимум в 2 раза дольше.


Бесценный совет.


gyfto:

Можно написать if((b-a)*(c-a)*(d-a)>0), но не факт, что будет работать быстрее. Логическое AND и есть двоичное умножение, это всего лишь другая запись того же самого выражения, разница только в размере типов переменных. a>b - это булевая переменная, 4 байта, а b-a, если они double, то и разница будет double (8 байт), а это умножение как минимум в 2 раза дольше.


Бесценный совет.

спасибо за совет ....может можно как то по другому вычислить самое меньшее и самое большее значение из a,b,c?
 
i999i:

спасибо за совет ....может можно как то по другому вычислить самое меньшее и самое большее значение из a,b,c?


MathMax(MathMax(a,b),c) и наоборот MathMin. Если четыре значения, то int max = MathMax(MathMax(x1, x2), MathMax(x3, x4)). Если значений вагон, формировать массив и через ArrayMaximum.
 
gyfto:

MathMax(MathMax(a,b),c) и наоборот MathMin. Если четыре значения, то int max = MathMax(MathMax(x1, x2), MathMax(x3, x4)). Если значений вагон, формировать массив и через ArrayMaximum.

придется через ArrayMaximum , значений с десяток ....а ArrayMaximum быстрее будет работает , чем это - a>b && a>c && a>d
 
i999i:

спасибо за совет ....может можно как то по другому вычислить самое меньшее и самое большее значение из a,b,c?


А Вы для начала поясните для чего Вам это нужно. Чтоб помочь, нужно знать причину. Либо просто для баловства и интереса, либо есть какая-то цель от этого?

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