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

 
Aleksey Vyazmikin #:


Сервис-Настройки-Торговля-Объём - показатель в списке ставите в Last Used. Теоретически, должно помочь.


Спасибо, но помогло в by default
 

Коллеги - прошу напомните пожалуйста - как можно обращаться в советнике к МА которая наброшена на индикатор предыдущий?  Делаю отображение МА в самом пользовательском индикаторе в отдельном буфере пока не сделал...

Может так как то можно обратиться к значению МА  в советнике может через iMA? как то можно.... спс


вот кстати справку смотрю по F1 iMA()

Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается перечислением ENUM_APPLIED_PRICE, то в качестве входного ценового ряда можно указывать хэндл любого индикатора (встроенного в терминал или написанного пользователем). В этом случае для расчетов будут использованы значения нулевого буфера индикатора. Это позволяет легко строить значения одного индикатора по значениям другого индикатора. Хэндл пользовательского индикатора создается вызовом функции iCustom().

Пример:

 
Roman Shiredchenko #:

Коллеги - прошу напомните пожалуйста - как можно обращаться в советнике к МА которая наброшена на индикатор предыдущий?  Делаю отображение МА в самом пользовательском индикаторе в отдельном буфере пока не сделал...

Может так как то можно обратиться к значению МА  в советнике может через iMA? как то можно.... спс


вот кстати справку смотрю по F1 iMA()

Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается перечислением ENUM_APPLIED_PRICE, то в качестве входного ценового ряда можно указывать хэндл любого индикатора (встроенного в терминал или написанного пользователем). В этом случае для расчетов будут использованы значения нулевого буфера индикатора. Это позволяет легко строить значения одного индикатора по значениям другого индикатора. Хэндл пользовательского индикатора создается вызовом функции iCustom().

Пример:

есть ChartIndicatorGet , зная "короткое имя" индикатора и его окно, советник может получить его хендл и с ним работать. А вот разобраться "которая MA наброшена последней" нельзя никак.

 
Maxim Kuznetsov #:

есть ChartIndicatorGet , зная "короткое имя" индикатора и его окно, советник может получить его хендл и с ним работать. А вот разобраться "которая MA наброшена последней" нельзя никак.

А ну понял. Спс буду делать.
 

Всем доброго времени суток! Вопрос по тестеру MT4 , а точнее по включаемым файлам
В учебнике Ковалева написано, что любой фрагмент кода программы можно оформить в виде включаемого файла mqh. Я создал включаемые файл и поместил в него код
В этом коде

1. Я копирую массив из уже раннее созданного файла mqh(ТПсл). в котором лежит массив Pt в новый массив точно такого же размера PT

2. В пустые ячейки массива РТ я добавляю новые значения, вычисленные из массива Pt 
Обе эти операции я осуществляю в цикле
ВОПРОС. Почему при компиляции созданного мной файла mqh. компилятор ругается на цикл внутри которого исполняется весь код?

'for' - expressions are not allowed on a global scope

В то же время данный код из включаемого файла компилируется без проблем в файле mq4
Может быть код во включаемый файл пишется по каким то другим правилам? Если это так, где их можно почитать

Вот мой код из включаемого файла. Всем спасибо за помощь

 

int Tik1,e ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
double PT[72][54];                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

#include <ТПсл.mqh>
void OnTick()/**/                                                                                                                                                                                                                                                                                       
{
for(int b,c,x;x+c<=122;b++ )
{
Tik1++;
if(PT[b][c]!=PT[x][0]&&PT[b][c]>0)
{
if(PT[b][c]==502&&c==51)
{
x++;
b=-1;
c=0;
}
if(PT[b+1][c]==0)
{
c+=3;b=-1;
} 
continue;
}
if(PT[b][c]==PT[x][0])
{
PT[x][c+2]=b;
if(PT[b][c]+c==556)
{
x++;
b=-1;
c=0;
}
}
else
{
c+=3;
b=-1;
}
if(x+c==122)ExpertRemove();
}
}
 
ANDREY #:

ВОПРОС. Почему при компиляции созданного мной файла mqh. компилятор ругается на цикл внутри которого исполняется весь код?

'for' - expressions are not allowed on a global scope

 

Цикл for на глобальном уровне. Проверте операторные скобки { }

 

Обычно через #include подключаются готовые, отдельные функции. Тогда объявление на глобальном уровне.

#include <File.mqh>

void OnTick()
{
...
}


Если в подключаемом только простой код, т.е. не функция, тогда подключение на внутреннем уровне.

void OnTick()
{
#include <File.mqh>
...
}
 

Скажите, почему у меня в терминале МТ5 не работают вот эти объёмы?


 
Vitaly Murlenko #:

Скажите, почему у меня в терминале МТ5 не работают вот эти объёмы?

Эти объёмы только на бирже, на форекс только "тиковые"

 
Putnik #:
Цикл for на глобальном уровне. Проверте операторные скобки { }

Спасибо большое за подсказку
Поставил перед циклом for  дополнительный код и компилятор код принял. То есть, как я понял ,тем самым цикл for  переместился на локальный уровень. Не понял только об особенностях оформления цикла for на глобальном уровне, то есть, когда, как я понял основной код внутри функции OnTick()  начинается именно с этого цикла. Что нужно оформлять этот цикл другими скобками, не фигурными? Или в чем особенность оформления данного цикла в случае если он находится на глобальном уровне?

int Tik1,e ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
double PT[72][54];                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

#include <ТПсл.mqh>
void OnTick()/**/                                                                                                                                                                                                                                                                                       
{
Tik1++;
if(Tik1==1){e=ArrayCopy(PT,Pt,0,0,WHOLE_ARRAY);}
        
for(int b,c,x;x+c<=122;b++ )
{

if(PT[b][c]!=PT[x][0]&&PT[b][c]>0)
{
if(PT[b][c]==502&&c==51)
{
x++;
b=-1;
c=0;
}
if(PT[b+1][c]==0)
............................