Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если это "хлам", то зачем его вообще размещать?
У меня была похожая мысль....
Один вопрос по поводу iCustom.
Не могли бы вы объяснить и привести несколько примеров относительно переменных Line и Shift с командами iCustom?
Спасибо
Один вопрос по поводу iCustom.
Можете ли вы объяснить и привести примеры использования переменных Line и Shift в командах iCustom?
СпасибоiCustom - Документация по MQL4
mode - индекс линии. Может быть от 0 до 7 и должен соответствовать индексу, используемому одной из функций SetIndexBuffer. shift - Индекс значения, взятого из буфера индикатора (сдвиг относительно текущего бара на заданное количество периодов назад).
Используйте MODE, чтобы указать индикатору, какой буфер вам нужен. Индикаторы поддержки-сопротивления могут использовать буфер 0 ( MODE=0 ) для сопротивления и буфер 1 ( MODE=1 ) для поддержки.
SHIFT говорит использовать значение из Bar(SHIFT) индикатора, вызванного iCustom.
Помогает ли это?
iCustom - Документация по MQL4
mode - Индекс линии. Может быть от 0 до 7 и должен соответствовать индексу, используемому одной из функций SetIndexBuffer. shift - Индекс значения, взятого из буфера индикатора (сдвиг относительно текущего бара на заданное количество периодов назад).
Используйте MODE, чтобы указать индикатору, какой буфер вам нужен. Индикаторы поддержки-сопротивления могут использовать буфер 0 ( MODE=0 ) для сопротивления и буфер 1 ( MODE=1 ) для поддержки.
SHIFT говорит об использовании значения из Bar(SHIFT) индикатора, вызываемого iCustom.
Помогает ли это?Хорошо, я понял Shift, придется еще почитать о режиме.
Вы кодируете? У меня есть индикатор, который я вызываю из моего эксперта, но не уверен, как правильно его настроить. Смотрите картинку.
У него просто две линии, и когда синяя меняется и выравнивается с другой линией, генерируется длинный сигнал (та же идея с красной).
Пробовал несколько разных кодов, как тот, который я использовал с индикатором VQ;
double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);
double Entry2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);
double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);
double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);
Просто не правильно торгую.
Спасибо
Хорошо, я понял Shift, придется еще почитать о режиме.
Вы занимаетесь кодированием? У меня есть этот индикатор, который я вызываю из моего эксперта, но не уверен, как правильно его настроить. Смотрите рисунок.
У него просто две линии, и когда синяя меняется и соединяется с другой линией, генерируется длинный сигнал (та же идея с красным).
Пробовал несколько разных кодов, как тот, который я использовал с индикатором VQ;
double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);
double Entry2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);
double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);
double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);
Просто неправильно торгую.
СпасибоЕсли вы имеете в виду нижний индикатор, который, кажется, называется "#MTF CI", то я думаю, что, возможно, этот индикатор имеет 4 буфера: по одному для двух цветов каждой линии. Вы можете вызвать окно данных (ctrl-D), чтобы увидеть, какие буферы есть у индикаторов, а также их индексы (аргумент MODE в вызове iCustom).
Хорошо, я понял Shift, мне нужно будет больше почитать о режиме.
Вы кодируете?
СпасибоЯ был известен тем, что закодировал индикатор или 2 (СТО) в свое время....LOL!
Если вы имеете в виду нижний индикатор, который, кажется, называется "#MTF CI", то я думаю, что, возможно, этот индикатор имеет 4 буфера: по одному для двух цветов каждой линии. Вы можете вызвать окно данных (ctrl-D), чтобы увидеть, какие буферы есть у индикаторов, а также их индексы (аргумент MODE в вызове iCustom).
Да, вы правы, как мне настроить их и создать торговлю?
Для двух других (QQEA 4 буфера и VQ 2 буфера), которые работают, я использую следующее;
double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);
double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);
double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);
double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);
double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);
double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);
double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);
double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);
//Покупка
qqe0_0>qqe1_0 && qqe0_1Entry2 && ....
Спасибо Ральф
Да, вы правы, как мне выбрать iCustom и создать сделку?
Для двух других (QQEA 4 буфера и VQ 2 буфера), которые работают, я использую следующее;
double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);
double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);
double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);
double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);
double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);
double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);
double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);
double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);
//Покупаем
qqe0_0>qqe1_0 && qqe0_1Entry2 && ....
Спасибо, РальфВообще, когда вы видите линию индикатора с несколькими цветами, то это обычно реализуется несколькими буферами, по одному на каждый цвет. Вы можете определить индексы буферов из окна данных, где верхний буфер имеет индекс 0, и далее по возрастающей. Буфер выводится на экран, когда в нем есть значение (или если это стиль рисования LINE, то для вывода на экран необходимо два или более последовательных значения).
Если у вас есть исходный код индикатора, иногда проще заглянуть в него и узнать индексы буферов из вызовов функции SetIndexBuffer.
И еще одно замечание: индикатор может выводить на экран "объекты", которые недоступны через вызов iCustom. Вместо этого вам нужно знать "имя объекта", и вы можете считывать его свойства.
Таким образом, вы всегда должны четко знать, из какого буфера индикатора считывать данные, и использовать этот индекс в качестве второго последнего аргумента iCustom.
Например, использование индикатора VQ кажется не совсем правильным, потому что (судя по источнику, который я видел), его буферы [1] и [2] используются для зеленой и красной линий соответственно, и никогда не бывает случая, чтобы они оба были не пустыми. Т.е. "Up2==Down2" всегда ложно, кроме случая, когда оба "пусты", а это когда линия VQ не зеленая и не красная, а желтая.
Кроме этого, я думаю, что вы все делаете правильно. Можно, конечно, обсуждать выбор имен переменных, но это академический вопрос. Правильнее всего выбрать интересующие значения с помощью функции iCustom, а затем выразить конкретные требуемые отношения значений в торговых условиях.
Обычно, когда вы видите линию индикатора с несколькими цветами, то это обычно реализуется несколькими буферами, по одному на каждый цвет. Вы можете определить индексы буферов из окна данных, где верхний буфер имеет индекс 0, и по возрастающей вниз. Буфер выводится на экран, когда в нем есть значение (или если это стиль рисования LINE, то для вывода на экран необходимо два или более последовательных значения).
Если у вас есть исходный код индикатора, иногда проще заглянуть в него и узнать индексы буфера из вызовов функции SetIndexBuffer.
И еще одно замечание: индикатор может выводить на экран "объекты", которые недоступны через вызов iCustom. Вместо этого вам нужно знать "имя объекта", и вы можете считывать его свойства.
Таким образом, вы всегда должны четко знать, из какого буфера индикатора считывать данные, и использовать этот индекс в качестве второго последнего аргумента iCustom.
Например, использование индикатора VQ кажется не совсем правильным, потому что (судя по источнику, который я видел), его буферы [1] и [2] используются для зеленой и красной линий соответственно, и никогда не бывает случая, чтобы они оба были не пустыми. Т.е. "Up2==Down2" всегда ложно, кроме случая, когда оба "пусты", а это когда линия VQ не зеленая и не красная, а желтая.
Кроме этого, я думаю, что вы все делаете правильно. Можно, конечно, обсуждать выбор имен переменных, но это академический вопрос. Лучше всего выбрать интересующие значения с помощью вызова iCustom, а затем выразить конкретные требуемые отношения значений в торговых условиях.К сожалению, у меня нет исходников трех индикаторов, о которых я говорил выше. Как бы вы написали код для них, если я хочу, чтобы они проверяли условие покупки или продажи ТОЛЬКО в тот момент, когда они меняют цвет одновременно для каждого индикатора, конечно?
Спасибо
Отсутствие источника не является проблемой. Давайте сосредоточимся на окне индикатора 2 на вашем изображении, где показан индикатор с 4 буферами. Если вы будете перемещать мышь влево и вправо по индикатору, вы сможете определить, какой буфер используется для какого цвета.
Допустим, первый буфер ([0]) предназначен для синей индикации верхней линии, второй буфер ([1]) - для красной индикации верхней линии, и аналогично [2] и [3] - для синей и красной нижней линии. Затем вы можете считать с индикатора следующим образом:
double top_was_blue = iCustom( ..., 0, 2 );
double top_is_red = iCustom( ..., 1, 1 );
double top_was_red = iCustom( ..., 1, 2 );
double bot_is_blue = iCustom( ..., 2, 1 );
double bot_was_blue = iCustom( ..., 2, 2 );
double bot_is_red = iCustom( ..., 3, 1 );
double bot_was_red = iCustom( ..., 3, 2 );
[/PHP]
Then you can summarise them as follows:
[PHP]bool top_goes_blue = ( top_is_blue == top_was_red );
bool top_goes_red = ( top_is_red == top_was_blue );
bool bot_goes_blue = ( top_is_blue == top_was_red );
bool bot_goes_red = ( top_is_red == top_was_blue );
bool both_go_blue = ( top_goes_blue && bot_goes_blue );
bool both_go_red = ( top_goes_red && bot_goes_red );
Как вы это сделаете, зависит от того, что вы ищете. Особенно,
если вы хотите объединить несовпадающие показания двух линий, то это может стать более сложным кодированием. Например, булева переменная "both_go_blue" относится к одновременным показаниям двух линий и не отражает того, что "одна линия становится синей, а другая - чуть позже".