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

matro3

Почетный гражданин
VPS - это удаленный комп, на котором работает MT.
Мой сов при инициализации пробегает по ордерам и присваивает рабочим переменным нужные значения. Тем самым приводя свои настройки в подходящее состояние.
Далее обновляю их при изминении кол-ва ордеров, например.
Ваш способ тоже интересный. Не пользовался глобальными переменными.
Как они ведут себя в тестере?
И как быть в такой ситуации: робот не работал, а ситуация с ордерами изменилась (закрылись по стопам, открылись отложки и т.д.), после этого робот снова был включен. Причины перерыва в работе можно додумать.
 

vladradon

Программист
VPS - это удаленный комп, на котором работает MT.
Мой сов при инициализации пробегает по ордерам и присваивает рабочим переменным нужные значения. Тем самым приводя свои настройки в подходящее состояние.
Далее обновляю их при изминении кол-ва ордеров, например.
Ваш способ тоже интересный. Не пользовался глобальными переменными.
Как они ведут себя в тестере?
И как быть в такой ситуации: робот не работал, а ситуация с ордерами изменилась (закрылись по стопам, открылись отложки и т.д.), после этого робот снова был включен. Причины перерыва в работе можно додумать.
Что такое VPS я знаю. Мой чемпионатовский сов 2012-го года занял почетное 50-е место среди более 3500 заявок из 112 стран мира по-моему (давно было).
Можно сочетать те функции, которые будут правильно восстанавливать инфу без сохранения во внешних файлах с теми, которые нужны при тех обстоятельствах, когда либо поднять по истории невозможно, либо это наоборот не нужно. Глобалки работают без проблем - это основные функции обоих языков. Только в некоторых случаях бывает необходимо их удалять - это касается тестов и оптимизации - просто в функции OnDeinit нужно прописать функции удаления ненужных переменных либо сразу всех. Это зависит от того, сколько сов параллельно используют глобалки. А вообще - пиши в скайп - ник тот же - так будет быстрее и без офиширования всех подробностей.
 

Игoрь

Новичок форума
подскажите как сделать чтобы индикаторы так не перегружали советника

int IndicatorSignal()
{
int Signal=0;
double k=iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,1);
double k1=iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,2);
double k2=iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,3);
//Указываем Сигналы:

if (k2<k1&&k1<k)Signal=1; // Если МА ниже цены БИД - открываемся в бай
if (k2>k1&&k1>k)Signal=2; // Если МА выше цены БИД - открываемся в селл



// 1 - бай 2 - селл
return(Signal);
}
 

Вложения

  • USDJPYH1.png
    USDJPYH1.png
    40,2 КБ · Просмотры: 29

vladradon

Программист
подскажите как сделать чтобы индикаторы так не перегружали советника

int IndicatorSignal()
{
int Signal=0;
double k=iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,1);
double k1=iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,2);
double k2=iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,3);
//Указываем Сигналы:

if (k2<k1&&k1<k)Signal=1; // Если МА ниже цены БИД - открываемся в бай
if (k2>k1&&k1>k)Signal=2; // Если МА выше цены БИД - открываемся в селл



// 1 - бай 2 - селл
return(Signal);
}
А почему в подвале (нижнем окне) столько однотипных индикаторов на скрине? По коду все правильно и проще не придумаешь, но эта функция расчетов индикатора не должна даже выводить индикатор на график, а просто брать с него инфу. Может в коде сова что-то не так? А в подвале запущенные индикаторы только грузить терминал будут - это если нужно для наглядности их выводить, - тогда другое дело и ничего не поделаешь. Но если для наглядности только и в этом нет необходимости, то и незачем их отдельно запускать - только лишняя нагрузка на терминал.
 
Последнее редактирование:

Игoрь

Новичок форума
почему в подвале (нижнем окне) столько однотипных индикаторов на скрине?
Это и есть мой вопрос. Почему-то это происходит когда использую пользовательский индикатор. Когда не пользовательский - всё нормально. в подвале один индикатор.Меняю iWPR на iCustom -начинается проблема.
 

vladradon

Программист
почему в подвале (нижнем окне) столько однотипных индикаторов на скрине?
Это и есть мой вопрос. Почему-то это происходит когда использую пользовательский индикатор. Когда не пользовательский - всё нормально. в подвале один индикатор.Меняю iWPR на iCustom -начинается проблема.
Может стоит для начала попробовать через iCustom запустить стандартный индюк (скопировав его из стандартных в пользовательские предварительно) и если проблема пропадет, то уже код самого пользовательского индюка анализировать?
 

mobidik

-----
почему в подвале (нижнем окне) столько однотипных индикаторов на скрине?
Это и есть мой вопрос. Почему-то это происходит когда использую пользовательский индикатор. Когда не пользовательский - всё нормально. в подвале один индикатор.Меняю iWPR на iCustom -начинается проблема.

А значение ТФ самого индюка почему не передаете в iCustom? Работаете с текущим ТФ, установите "0".

PHP:
double k=iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,1);
 

vladradon

Программист
А значение ТФ самого индюка почему не передаете в iCustom? Работаете с текущим ТФ, установите "0".

PHP:
double k=iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,1);
Так он и передается - 0 - второе значение в скобках означает использование ТФ, на котором сов стоит. А для сова не важен тот ТФ, на котором индюк запущен - индюк отрабатывает по тому ТФ, который задается в сове независимо больше ни от чего. Если индюк запущен отдельно со своим ТФ, то инфу сов все равно получит ту, которая задается при запросе, а не на котором сам индюк работает на графике. Это касательно функции iCustom или других технических индикаторов. Или я что-то недопонял?)))
 

mobidik

-----
Или я что-то недопонял?)))

Сам индюк МТФ-ный, вот его ввод параметров:

PHP:
extern string TimeFrame      = "Current time frame";
extern int    ROCPeriod1     = 14;
extern int    ROCPeriod2     = 11;
extern int    Smooth         = 10;


индюк здесь: http://forexsystemsru.com/963857-post2399.html
Корректно будет так:


PHP:
double k=iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,1);


Можно в самом индюке, если предполагается работа на текущем ТФ, убрать extern из строки: extern string TimeFrame, что б не перегружать параметрами ввода в самом советнике. То, что советовал установить вместо TimeFrame - "0" в ф-ции iCustom - может не пройти.
 
Последнее редактирование:

Gruler

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

STELS37

Новичок форума
Всем доброй ночи!
Я только начал изучать язык MQL4 // Все с помощью видио уроков да и справки в МетоИдитере))
Вот написал своего первого сова, основанного на двух машках да и мартине ... Стандарт вобщем))
Но тут я столкнулся с проблемой (по своей не грамотности в этом вопросе)
Судя по всему в сове не присваивается Магик (как я только не вертел его)
да ++ еще вставил трал и он не хочет не как запускаться (((:)facepalm: Может есть кто смог бы помочь?
Заранее спасибо!!!):)
 

Вложения

  • STELS.mq4
    17,5 КБ · Просмотры: 28

vladradon

Программист
Сам индюк МТФ-ный, вот его ввод параметров:

PHP:
extern string TimeFrame      = "Current time frame";
extern int    ROCPeriod1     = 14;
extern int    ROCPeriod2     = 11;
extern int    Smooth         = 10;


индюк здесь: http://forexsystemsru.com/963857-post2399.html
Корректно будет так:


PHP:
double k=iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,1);


Можно в самом индюке, если предполагается работа на текущем ТФ, убрать extern из строки: extern string TimeFrame, что б не перегружать параметрами ввода в самом советнике. То, что советовал установить вместо TimeFrame - "0" в ф-ции iCustom - может не пройти.
В самом индюке в коде зацикленно на сова, который никак уже не влияет на тот расчет, который производится. Эту зацикленность непонятную я заремарил и индикация не изменилась. Сов работает без проблем.
 

Вложения

  • ! MY Coppock curve.mq4
    7,1 КБ · Просмотры: 28

mobidik

-----
В самом индюке в коде зацикленно на сова, который никак уже не влияет на тот расчет, который производится. Эту зацикленность непонятную я заремарил и индикация не изменилась. Сов работает без проблем.

И что? Теперь режим МТФ в индюке не работает. :D

PS.
Вот, что дает справочник по iCustom: input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.

vladradon, Вы тут даже сову писали, затем удалили свое сообщение... Вот Вам простая сова на этом индюке. Есть три варианта вызова индюка, переключаться между ними можно с настроек совы:

PHP:
//----------------------------------------------------------------------------------------------------
 if(TimeFrame_0 && !Not_TimeFrame)
 {
   double Tr1  = iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,1);
   double Tr2  = iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------
 if(!TimeFrame_0 && !Not_TimeFrame)
 {   
   Tr1  = iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,1);
   Tr2  = iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------  
 if(Not_TimeFrame)
 {   
   Tr1  = iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,1);
   Tr2  = iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------

Второй и третий варианты не верны, т.к. не соблюдается условие: Тип и порядок следования параметров должен соответствовать.
Проверяйте.
 

Вложения

  • EA_Proba.mq4
    2,9 КБ · Просмотры: 23
Последнее редактирование:

vladradon

Программист
Всем доброй ночи!
Я только начал изучать язык MQL4 // Все с помощью видио уроков да и справки в МетоИдитере))
Вот написал своего первого сова, основанного на двух машках да и мартине ... Стандарт вобщем))
Но тут я столкнулся с проблемой (по своей не грамотности в этом вопросе)
Судя по всему в сове не присваивается Магик (как я только не вертел его)
да ++ еще вставил трал и он не хочет не как запускаться (((:)facepalm: Может есть кто смог бы помочь?
Заранее спасибо!!!):)
Ну... ошибок там у тебя куча - это надо вместе по тобой задуманной стратегии в режиме реального времени корректировать - просто даже не совсем понятно, по какой стратегии ты собираешься торговать. Сразу скажу: Внешние переменные не могут меняться в коде - ошибка в строке 83 и получать информацию функциями типа OrderMagicNumber() можно только после выбора открытого ордера после его выбора по номерам позиции или тикета.
 

vladradon

Программист
И что? Теперь режим МТФ в индюке не работает. :D

PS.
Вот, что дает справочник по iCustom: input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.

vladradon, Вы тут даже сову писали, затем удалили свое сообщение... Вот Вам простая сова на этом индюке. Есть три варианта вызова индюка, переключаться между ними можно с настроек совы:

PHP:
//----------------------------------------------------------------------------------------------------
 if(TimeFrame_0 && !Not_TimeFrame)
 {
   double Tr1  = iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,1);
   double Tr2  = iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------
 if(!TimeFrame_0 && !Not_TimeFrame)
 {   
   Tr1  = iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,1);
   Tr2  = iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------  
 if(Not_TimeFrame)
 {   
   Tr1  = iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,1);
   Tr2  = iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------

Второй и третий варианты не верны, т.к. не соблюдается условие: Тип и порядок следования параметров должен соответствовать.
Проверяйте.
Что за режим МТФ и как он завязан с совом? У меня по вышеизложенной функции, с которой начали, все правильно считывает и мой сов с индюком работает.
 

Игoрь

Новичок форума
И что? Теперь режим МТФ в индюке не работает. :D

PS.
Вот, что дает справочник по iCustom: input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.

vladradon, Вы тут даже сову писали, затем удалили свое сообщение... Вот Вам простая сова на этом индюке. Есть три варианта вызова индюка, переключаться между ними можно с настроек совы:

PHP:
//----------------------------------------------------------------------------------------------------
 if(TimeFrame_0 && !Not_TimeFrame)
 {
   double Tr1  = iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,1);
   double Tr2  = iCustom(NULL,0,"! MY Coppock curve",TimeFrame,ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------
 if(!TimeFrame_0 && !Not_TimeFrame)
 {   
   Tr1  = iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,1);
   Tr2  = iCustom(NULL,0,"! MY Coppock curve",0,ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------  
 if(Not_TimeFrame)
 {   
   Tr1  = iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,1);
   Tr2  = iCustom(NULL,0,"! MY Coppock curve",ROCPeriod1,ROCPeriod2,Smooth,0,2);
 }
//----------------------------------------------------------------------------------------------------

Второй и третий варианты не верны, т.к. не соблюдается условие: Тип и порядок следования параметров должен соответствовать.
Проверяйте.

Спасибо! Всё заработало.
 

vladradon

Программист
Спасибо! Всё заработало.
С праздником!!! Спасибо кому? Просто спор так и не завершен. Те исправления в индикатор, которые я внес, у меня работают без проблем. А то, о чем писал mobidik - тоже правильно в плане обращения к индюку, но не действует на зацикленность самого индюка, о чем изначально и была просьба в редактировании кода. У меня индюк и изначальный и мной доработанный показывают обсолютно индентичные расчеты на графике, только мой вариант не уходит в цикличность ни просто при постановке на график, ни при использовании его из сова.
 

mobidik

-----
Просто спор так и не завершен...

Т.е., ты по прежнему считаешь, что лучше изменить индюк, убрав режим МТФ, а не устранив зацикленность, чем поступить так как правильно, как по документации? На ровном месте создать проблему, а потом решать её через одно место? А как быть, когда нет открытого кода? Или все ж таки, поступить так как указано в документации и не искать себе приключений на свою голову? Впрочем, ты в своих работах вправе поступать так, как считаешь нужным.
 

vladradon

Программист
Т.е., ты по прежнему считаешь, что лучше изменить индюк, убрав режим МТФ, а не устранив зацикленность, чем поступить так как правильно, как по документации? На ровном месте создать проблему, а потом решать её через одно место? А как быть, когда нет открытого кода? Или все ж таки, поступить так как указано в документации и не искать себе приключений на свою голову? Впрочем, ты в своих работах вправе поступать так, как считаешь нужным.

Я поспорю с тобой - запусти индюка из сова (можешь своего) и посмотри в журнале что пишет. И с твоей корректировкой, и без нее у меня идет цикл, который автоматом запускает автоцикл индюка. И это не зависит от функции обращения к индюку!
 

Petr888

Заблокирован
Приветствую всех!

Вопрос такой: для быстрого тестирования и оптимизации (по ценам открытия) советник должен использовать PRICE_OPEN или PRICE_CLOSE в коде ???
Сова не использует TP и SL. Закрытие происходит по общему профиту (усреднение).

p.s. простите, запутался с инфой немного, только учусь))
 
Верх