Ваши вопросы по языку MQL4

CastEt

Активный участник
Ну вообще-то там оно и так происходит если по тикам тестить. Индюки что перерисовываются, будут перерисовываться, а те что во время отрисовки бара дрючатся, так-же будут дрючится...
...точнее не так, реально он будет плясать от реальных тиков, а в тесторе лишь симуляция по свечкам

Если говорить про встроенные индюки вообще и iRSI в частности, то его\их водит только по нулевому бару в процессе от рисовки оного, а первый и последующие бары не перерисовываются.
 

Andy200577

Новичок форума
Ну вообще-то там оно и так происходит если по тикам тестить. Индюки что перерисовываются, будут перерисовываться, а те что во время отрисовки бара дрючатся, так-же будут дрючится...
...точнее не так, реально он будет плясать от реальных тиков, а в тесторе лишь симуляция по свечкам

Если говорить про встроенные индюки вообще и iRSI в частности, то его\их водит только по нулевому бару в процессе от рисовки оного, а первый и последующие бары не перерисовываются.

Когда я наблюдал за rsi, я видел что его значения меняются и на предыдущих барах при движении текущей цены. Но вопрос был не в этом, rsi был просто примером. Возьмем любой другой индюк, который меняет свои значение при движении цены на предыдущих барах. Можно ли при помощи языка mql как бы сэмулировать тестер и отслеживать данные меняющиеся значения индюка в процессе формирования свечей?
 

Andy200577

Новичок форума
Имеется в виду не в режиме реального времени отслеживать, а именно на истории. Представив например, 10-ый бар нулевым, расчитали значение индюка, потом появляется свеча, он становится первым, снова на этом месте расчитали значение индюка, оно скорее всего будет иметь другое значение. И так далее, вот это интересует, возможно ли так?
 

AlexeyVik

Программист mql4 mql5
Имеется в виду не в режиме реального времени отслеживать, а именно на истории. Представив например, 10-ый бар нулевым, расчитали значение индюка, потом появляется свеча, он становится первым, снова на этом месте расчитали значение индюка, оно скорее всего будет иметь другое значение. И так далее, вот это интересует, возможно ли так?
Возможно всё... или почти всё.
В индикаторе пишешь цикл не до нулевого бара, а только до десятого и получаешь заветное значение на десятом баре когда он был нулевым.
 

Andy200577

Новичок форума
Возможно всё... или почти всё.
В индикаторе пишешь цикл не до нулевого бара, а только до десятого и получаешь заветное значение на десятом баре когда он был нулевым.
Нет подождите. Например мы хотим определить значение индикатора на 10-м баре, соответственно мы пишем в конце строки индикатора номер буфера (например 0) и 10 - (парамертры индюка...,0,10). Но это значение на уже СФОРМИРОВАННОМ графике, а меня интересует значение этого индикатора, когда этот исторический бар только закрылся и новая свеча только открылась, т.е. 4 цены новой свечи (ореn, close, high и low) все равны цене OPEN. Когда эта новая свеча сформируется, то значение индикатора уже может быть другим на интересующей нас предыдущей закрытой свече!!! А Вы фактически предлагаете узнать цену на УЖЕ сформированном графике. Если свеча сформировалась, это вовсе не означает, что на этом же месте зафиксировался индикатор с фиксированным значением, он может и менять свои показания в зависимости от движения текущей цены. Яркий пример - фрактал, он формируется на 2-м баре, но если текущая цена преодолевает вершину фрактала, то он пропадает.
 
Последнее редактирование:

CastEt

Активный участник
Когда я наблюдал за rsi, я видел что его значения меняются и на предыдущих барах при движении текущей цены.

Ну значит они там на первом наверное курят close нулевого который ещё рисуется, но дальше-то всё спокойно...

Хочешь достоверной эмуляции, разбери индюк, вычисли какое влияние оказывает на него нулевой бар, и тогда ты сможешь найти достоверный диапазон блуждания для любого бара истории, ведь бар то уже нарисован Хай и Лоу тебе известны...
 

CastEt

Активный участник
А у меня тоже, стал насущный вопрос, как разобрать целый тип, например char на массив его битов bool[0..8]?

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

matro3

Почетный гражданин
Имеется в виду не в режиме реального времени отслеживать, а именно на истории. Представив например, 10-ый бар нулевым, расчитали значение индюка, потом появляется свеча, он становится первым, снова на этом месте расчитали значение индюка, оно скорее всего будет иметь другое значение. И так далее, вот это интересует, возможно ли так?

http://docs.mql4.com/ru/indicators/irsionarray
 

_SERG_

Активный участник
А у меня тоже, стал насущный вопрос, как разобрать целый тип, например char на массив его битов bool[0..8]?

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

Если встал, то хорошо.
Правда не совсем понятно, что ты хотел спросить.
Числа, они в общем, везде одинаково преобразовываются в биты (двоичная система счисления), как и коды символов, ну и другие типы численных данных.
Так что педалируй классическим способом.
Ошибок меньше будет.
 
Последнее редактирование:

gince

Местный знаток
Помогите покрасить

Привет знатокам языка программироравиния и не всем остальным.
Есть индикатор ravi_base.mq4. Хотел вместо линии сделать гистограму и покрасить ее , но в МТ4 ошибка
ravi_base_color GBPUSD,H1: array out of range in 'ravi_base_color.mq4' (103,11)

Кто может исправить и обьяснить ошибку.

ravi_base.mq4 --> исходный индикатор
ravi_base_color.mq4 --> переделан в цветной (пока с ошибкой)
 

Вложения

  • ravi_base.mq4
    3 КБ · Просмотры: 27
  • ravi_base_color.mq4
    5,6 КБ · Просмотры: 29

mobidik

-----
Привет знатокам языка программироравиния и не всем остальным.
Есть индикатор ravi_base.mq4. Хотел вместо линии сделать гистограму и покрасить ее , но в МТ4 ошибка
ravi_base_color GBPUSD,H1: array out of range in 'ravi_base_color.mq4' (103,11)

Кто может исправить и обьяснить ошибку.

ravi_base.mq4 --> исходный индикатор
ravi_base_color.mq4 --> переделан в цветной (пока с ошибкой)

Не верно заданы буферы, если не хочешь что бы отображалась первоначальная линия индикатора, тогда в OnInit() укажи количество буферов, в данном случае: IndicatorBuffers(5).
 

DomovenokBrest

♔♕♖♗♘♙
Привет знатокам языка программироравиния и не всем остальным.
Есть индикатор ravi_base.mq4. Хотел вместо линии сделать гистограму и покрасить ее , но в МТ4 ошибка
ravi_base_color GBPUSD,H1: array out of range in 'ravi_base_color.mq4' (103,11)

Кто может исправить и обьяснить ошибку.

ravi_base.mq4 --> исходный индикатор
ravi_base_color.mq4 --> переделан в цветной (пока с ошибкой)
по умолчанию, там две машки: 7 и 65.
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    232 КБ · Просмотры: 31

AlexeyVik

Программист mql4 mql5
Нет подождите. Например мы хотим определить значение индикатора на 10-м баре, соответственно мы пишем в конце строки индикатора номер буфера (например 0) и 10 - (парамертры индюка...,0,10). Но это значение на уже СФОРМИРОВАННОМ графике, а меня интересует значение этого индикатора, когда этот исторический бар только закрылся и новая свеча только открылась, т.е. 4 цены новой свечи (ореn, close, high и low) все равны цене OPEN. Когда эта новая свеча сформируется, то значение индикатора уже может быть другим на интересующей нас предыдущей закрытой свече!!! А Вы фактически предлагаете узнать цену на УЖЕ сформированном графике. Если свеча сформировалась, это вовсе не означает, что на этом же месте зафиксировался индикатор с фиксированным значением, он может и менять свои показания в зависимости от движения текущей цены. Яркий пример - фрактал, он формируется на 2-м баре, но если текущая цена преодолевает вершину фрактала, то он пропадает.

Вот выдрал из первого попавшегося индикатора

for(shift = limit; shift >= 0; shift--)

Если сделать цикл

for(shift = limit; shift >= 10; shift--)

то пересчёт закончится на десятом баре и девятый не будет посчитан.
 

gush

бродяга
Всем добра.
Подскажите, как по проще реализовать сигналы на целые уровни.
Например. Сейчас цена 1.1050
Сигналы будут на целых уровнях:
Если пошло вверх и цена коснулась или пошла выше 1.1100 - ПОКУПАЕМ..
Если вниз свалились и цена коснулась или пошла ниже 1.1000 - ПРОДАЕМ!!!
 

_SERG_

Активный участник
Всем добра.
Подскажите, как по проще реализовать сигналы на целые уровни.
Например. Сейчас цена 1.1050
Сигналы будут на целых уровнях:
Если пошло вверх и цена коснулась или пошла выше 1.1100 - ПОКУПАЕМ..
Если вниз свалились и цена коснулась или пошла ниже 1.1000 - ПРОДАЕМ!!!


Тут вот слова "коснулась" , "пошла выше"/"пошла ниже", надо более детально рассмотреть, обдумать, чтобы поняьт, что всё таки на самом деле происходит.
Т.е., взглянуть глазами и интеллектом программы, если речь идёт о автоматизации этого "сложного" процесса. Хотя бы просто для себя.
А так, в общем, всё как и написано:"Если пошло вверх и цена коснулась...", я не прикалываюсь, просто так и есть.
 
  • Like
Реакции: gush

vlad_123

Местный знаток
Всем добра.
Подскажите, как по проще реализовать сигналы на целые уровни.
Например. Сейчас цена 1.1050
Сигналы будут на целых уровнях:
Если пошло вверх и цена коснулась или пошла выше 1.1100 - ПОКУПАЕМ..
Если вниз свалились и цена коснулась или пошла ниже 1.1000 - ПРОДАЕМ!!!
http://docs.mql4.com/ru/convert/normalizedouble - если например Digits=4, то нормализовать Bid/Ask двумя знаками, и эта нормализация и будет "целыми уровнями" *hi*
 
  • Like
Реакции: gush

gush

бродяга
http://docs.mql4.com/ru/convert/normalizedouble - если например Digits=4, то нормализовать Bid/Ask двумя знаками, и эта нормализация и будет "целыми уровнями" *hi*

а есть какая то формула расчета целого уровня (1.2500, 1.2600, 1.2700 и т.д) действиями с отнять/прибавитьбид/аск*point для выставления отложек на целые уровни?
 

gush

бродяга
Тут вот слова "коснулась" , "пошла выше"/"пошла ниже", надо более детально рассмотреть, обдумать, чтобы поняьт, что всё таки на самом деле происходит.
Т.е., взглянуть глазами и интеллектом программы, если речь идёт о автоматизации этого "сложного" процесса. Хотя бы просто для себя.
А так, в общем, всё как и написано:"Если пошло вверх и цена коснулась...", я не прикалываюсь, просто так и есть.

сигнал мастерю, на примере селл:
PHP:
   if(signal=="SELL")
   {
      bool set2=OrderSend(Symbol(),OP_SELL, Lots,Bid,slippage,sl_sell,tp_sell,Order_Comment,MagicNumber,0,NULL);     
   } //end if(signal=="SELL")
как его оформить, чтобы внизу с текущих на целом уровне продавать...
а вверху покупать..
PHP:
if(signal=="BUY")
   {
      bool set1=OrderSend(Symbol(),OP_BUY, Lots,Ask,slippage,sl_buy,tp_buy,Order_Comment,MagicNumber,0,NULL);
   } //end if(signal=="BUY")
 

vlad_123

Местный знаток
а есть какая то формула расчета целого уровня (1.2500, 1.2600, 1.2700 и т.д) действиями с отнять/прибавитьбид/аск*point для выставления отложек на целые уровни?
предпосылка и/или цель - непонятны.
т.е. NormalizeDouble не подходит по каким-то причинам, и нужно сделать тоже самое, но через отнять/прибавить?
 
  • Like
Реакции: gush
Верх