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

 
Vitaly Muzichenko:

:D


Спасибо, Добрый Человек!

 

Вот здесь более развёрнуто

 
Ras al Ghul:

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


В моём варианте ругается на выделенный кусок:

'Array' - array required.

Разве мы так не заносим значение индикатора в массив?



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

 
voron_026:

Да, вы правы. Прямоугольники рисуются по одним координатам. Решил задачу следующим образом:

Добавил переменную TimeFrame, для быстрой смены расчетного таймфрейма

Ну да, все вроде как верно.

Обратите внимание на знак равенства UseDojiCandles 

if(UseDojiCandles == true && Doji() == 1 && New_Bar == true)
 
Aleksey Vyazmikin:

Ну да, все вроде как верно.

Обратите внимание на знак равенства UseDojiCandles 

Ну так вы более разверните ответ, что есть сравнение "==", а есть присвоение "="

 
Vitaly Muzichenko:

Ну так вы более разверните ответ, что есть сравнение "==", а есть присвоение "="


Человек явно в курсе, просто опечатался.

 
Aleksey Vyazmikin:

Человек явно в курсе, просто опечатался.


Да, верно, спасибо за подсказку. Уже исправил.

Работаю дальше

Подключил паттерн "Молот" и "Перевернутый молот"
 
voron_026:

Да, верно, спасибо за подсказку. Уже исправил.

Работаю дальше

Подключил паттерн "Молот" и "Перевернутый молот"

Есть у меня предположение, что фигуры подобные будут работать по разному при движении цены на север и юг - думаю это надо учитывать при их интерпретации.

 
  for(int i=0; i<limit; i++) {
    Last[i] = Symbol1_Vol*Vol1*iClose(Symbol1_Name,0,iBarShift(Symbol1_Name,0,Time[i])) - 
              Symbol2_Vol*Vol2*iClose(Symbol2_Name,0,iBarShift(Symbol2_Name,0,Time[i]));



 for(int i=0; i<limit; i++) {
    if(ButtonSt) { // кнопка выбора, отображать Bands, или Envelopes
     MA[i]=iMAOnArray(Last,0,Env_Period,0,MODE_SMA,i);
     LineUp[i]=iEnvelopesOnArray(Last,0,Env_Period,MODE_SMA,0,Env_Dev,MODE_UPPER,i);
     LineDn[i]=iEnvelopesOnArray(Last,0,Env_Period,MODE_SMA,0,Env_Dev,MODE_LOWER,i);
    } else {
     MA[i]=iMAOnArray(Last,0,BB_Period,0,MODE_SMA,i);
     LineUp[i]=iBandsOnArray(Last,0,BB_Period,BB_Dev,0,MODE_UPPER,i);
     LineDn[i]=iBandsOnArray(Last,0,BB_Period,BB_Dev,0,MODE_LOWER,i);
    }
  }

Технически как сделать, вроде бы, всё понятно.

for(int i=0; i<limit; i++) {
    RSI[i] = iRSI(Symbol(),TimeFrame,14,PRICE_CLOSE,i);
  }

for(int i=0; i<limit; i++) {
    BandsMn[i]=iBandsOnArray(RSI,0,BB_Period,BB_Dev,0,MODE_MAIN,i);
    BandsUp[i]=iBandsOnArray(RSI,0,BB_Period,BB_Dev,0,MODE_UPPER,i);
    BandsDn[i]=iBandsOnArray(RSI,0,BB_Period,BB_Dev,0,MODE_LOWER,i);
  }

Но суть процесса не ясна:

например, какое значение должно быть у limit и почему именно такое значение?

Судя по переменной i в конце функций индикаторов, мы вносим данные со сдвигом.

То есть limit должен зависеть от периода индикатора?


Благодарю за внимание и терпение.

 
Ras al Ghul:

Технически как сделать, вроде бы, всё понятно.

Но суть процесса не ясна:

например, какое значение должно быть у limit и почему именно такое значение?

Судя по переменной i в конце функций индикаторов, мы вносим данные со сдвигом.

То есть limit должен зависеть от периода индикатора?


Благодарю за внимание и терпение.

limit - количество баров на графике, это чтобы при прокрутке истории, индикатор отображался до конца истории.

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