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

KriKs-Fx

Интересующийся
Так в Test-3 сова написана. Но не пойму ни как, почему в тесторе всё зависает.На любом Дц.
 

vladradon

Программист
Так в Test-3 сова написана. Но не пойму ни как, почему в тесторе всё зависает.На любом Дц.
А мне светит, что такое Тест-3? В каждом вопросе должны быть все исходные данные для его (вопроса) решения. Нет данных - разбирайся сам.
 

sergeysv

Активный участник
Здравствуйте--
Помогите пожалуйста реализовать идею для удобства. Если это возможно конечно
Суть:-- Имеем кнопки с левой стороны чарта с порядковыми номерами шаблонов. При нажатии на кнопку на чарт загружается нужный шаблон.
С правой стороны кнопки с буквами S №1 и т.д. Возможно ли и не затруднит ли людей знающих сделать так чтоб при нажатии на кнопку S №1 автоматически без вопросов сохранялся шаблон №1 и так далее по кнопкам.
 

Вложения

  • КНОПКИ SAVE.mq4
    10,6 КБ · Просмотры: 24

AlexeyVik

Программист mql4 mql5
Здравствуйте--
Помогите пожалуйста реализовать идею для удобства. Если это возможно конечно
Суть:-- Имеем кнопки с левой стороны чарта с порядковыми номерами шаблонов. При нажатии на кнопку на чарт загружается нужный шаблон.
С правой стороны кнопки с буквами S №1 и т.д. Возможно ли и не затруднит ли людей знающих сделать так чтоб при нажатии на кнопку S №1 автоматически без вопросов сохранялся шаблон №1 и так далее по кнопкам.
А зачем dll приплели туда? Уже давным давно для этого есть функции ChartSaveTemplate для сохранения шаблона и ChartApplyTemplate для применения шаблона.
 

sergeysv

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

AlexeyVik

Программист mql4 mql5
Смею заметить что не приплели,а помогли слепить из скрипта в индикатор с кнопками именно в таком варианте.
На сколько понял из справки без длл никак даже с этими функциями...
Мне почему-то лениво в пятницу заниматься кнопками, я сделал пример как сохраняется шаблон и применяется шаблон по нажатию кнопок s - сохранить, a - применить.
Не забывайте что для применения шаблона на графике должен быть индикатор. Я сам попался на эту удочку. Сохранил шаблон, применил вручную другой и попытался применить сохранённый программно. :D
 

Вложения

  • SaveApplyTemplate.mq4
    4,1 КБ · Просмотры: 28

sergeysv

Активный участник
я сделал пример как сохраняется шаблон и применяется шаблон по нажатию кнопок s - сохранить, a - применить.
27AZ9A1.png
 

AlexeyVik

Программист mql4 mql5
А вот кстати коды PostMessage для других вариаций
-https://www.mql5.com/ru/forum/239302
Но большинство из них уже доступны как стандартные функции mql4
 

sergeysv

Активный участник
А вот кстати коды PostMessage для других вариаций
Прикольные команды:)33050 удаляет советника -а надо чтоб грузил нужного...Вот эта понравилась--
// 7.9. Функция загружает на указанный график эксперт по его имени.
void ServiceLoadExpert(int hwndChart, // Системный дескриптор окна графика, куда загружается эксперт.
string szNameExpert, // Имя загружаемого эксперта.
int bOK); // Подтверждение запуска эксперта, при наличии диалогового окна свойств эксперта.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
НО для неё нужно ServicesMT.mqh ---крутил к кнопкам как мог не вышло...
Нет ли решения попроще чтоб работало с кнопками--нажал на кнопку загрузил нужного советника?
 

vladradon

Программист
Так в Test-3 сова написана. Но не пойму ни как, почему в тесторе всё зависает.На любом Дц.
Все должно быть четко прописано без лишних пробелов, как у меня оказалось в имени индюка. В iCustom нужно прописывать все входные параметры индикатора (я отключил алерты для упрощения в ТМА). И на будущее - выкладывай в формате mq4, а не php.
 

Вложения

  • Prob.mq4
    9,3 КБ · Просмотры: 19
  • TMA_Fair.mq4
    8,1 КБ · Просмотры: 19

AlexeyVik

Программист mql4 mql5
Прикольные команды:)33050 удаляет советника -а надо чтоб грузил нужного...Вот эта понравилась--
// 7.9. Функция загружает на указанный график эксперт по его имени.
void ServiceLoadExpert(int hwndChart, // Системный дескриптор окна графика, куда загружается эксперт.
string szNameExpert, // Имя загружаемого эксперта.
int bOK); // Подтверждение запуска эксперта, при наличии диалогового окна свойств эксперта.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
НО для неё нужно ServicesMT.mqh ---крутил к кнопкам как мог не вышло...
Нет ли решения попроще чтоб работало с кнопками--нажал на кнопку загрузил нужного советника?
Я не понял, нету библиотеки? Скачать можно тут -https://www.mql5.com/ru/code/9951
К кнопкам привязать аналогично как в твоём советнике по нажатию кнопки применяется шаблон. Разница только в команде.
 

sergeysv

Активный участник
Я не понял, нету библиотеки?
Задача с шаблонами благодаря Вам решена --отлично всё работает, спасибо:)
Задача другая, суть:- тынс на кнопку загружается советник по названию и без подтверждения- (если я правильно понял:)).
В коде не работает--на 99% уверен что прокладка виновата.
Может сие чудо работать как надо?
 

Вложения

  • 1.mq4
    8,7 КБ · Просмотры: 18

AlexeyVik

Программист mql4 mql5
Задача с шаблонами благодаря Вам решена --отлично всё работает, спасибо:)
Задача другая, суть:- тынс на кнопку загружается советник по названию и без подтверждения- (если я правильно понял:)).
В коде не работает--на 99% уверен что прокладка виновата.
Может сие чудо работать как надо?
Когда-то мне это было интересно, если посмотришь последнюю страницу там есть мои вопросы... но это было так давно... А сейчас, извини мне не интересно с этим разбираться. Не вижу в этом никакого смысла. Получается так, чтобы использовать эту примочку, надо загрузить индикатор, нажать кнопку и испытать приятное ощущение и удовлетворение... А не проще вместо индикатора загрузить ручками сразу советник??? И ничего не надо изменять. :D
Но в принципе задача решаема, раз об этом говорят и нашли коды.
 

malojorsk

Новичок форума
Подскажите как реализовать открытие и закрытие сделки по часу:

если
Hour() >= 21 && Hour() <= 23 - открываем сделку, тут все понятно..

а если час открытия больше часа закрытия (к примеру 22 - 2), то как это можно реализовать в коде?
 

eevviill2

Местный знаток
Подскажите как реализовать открытие и закрытие сделки по часу:

если
Hour() >= 21 && Hour() <= 23 - открываем сделку, тут все понятно..

а если час открытия больше часа закрытия (к примеру 22 - 2), то как это можно реализовать в коде?

Если коротко, то && меняй на ||

PHP:
extern string emp2 = "//////////////Work time settings////////////////////"; 
extern bool Use_work_time = false; 
extern string start_time_1 = "00:00"; 
extern string stop_time_1 = "24:00"; 
extern string start_time_2 = ""; 
extern string stop_time_2 = ""; 
extern string start_time_3 = ""; 
extern string stop_time_3 = ""; 

... 
 if(Use_work_time && !work_time_f()) return; 
//open order 

... 
//work time function 
 bool work_time_f()  
{ 
string TC_s=TimeToString(TimeCurrent(),TIME_MINUTES); 

  if( 
      (start_time_1+stop_time_1=="" || ((start_time_1<stop_time_1 && (TC_s<start_time_1 || TC_s>=stop_time_1)) || (start_time_1>stop_time_1 && (TC_s<start_time_1 && TC_s>=stop_time_1))))  
   && (start_time_2+stop_time_2=="" || ((start_time_2<stop_time_2 && (TC_s<start_time_2 || TC_s>=stop_time_2)) || (start_time_2>stop_time_2 && (TC_s<start_time_2 && TC_s>=stop_time_2))))   
   && (start_time_3+stop_time_3=="" || ((start_time_3<stop_time_3 && (TC_s<start_time_3 || TC_s>=stop_time_3)) || (start_time_3>stop_time_3 && (TC_s<start_time_3 && TC_s>=stop_time_3))))   
    )  return(false); 


  
   return (true); 
}
 

AlexeyVik

Программист mql4 mql5
Подскажите как реализовать открытие и закрытие сделки по часу:

если
Hour() >= 21 && Hour() <= 23 - открываем сделку, тут все понятно..

а если час открытия больше часа закрытия (к примеру 22 - 2), то как это можно реализовать в коде?
В этом случае обязательно добавлять дату. Ну как минимум условие если end < start добавить к времени end PeriodSecond(PERIOD_D1)
 

AlexeyVik

Программист mql4 mql5
Если коротко, то && меняй на ||

PHP:
extern string emp2 = "//////////////Work time settings////////////////////"; extern bool Use_work_time = false; extern string start_time_1 = "00:00"; extern string stop_time_1 = "24:00"; extern string start_time_2 = ""; extern string stop_time_2 = ""; extern string start_time_3 = ""; extern string stop_time_3 = ""; ...  if(Use_work_time && !work_time_f()) return; //open order ... //work time function  bool work_time_f()  { string TC_s=TimeToString(TimeCurrent(),TIME_MINUTES);   if(       (start_time_1+stop_time_1=="" || ((start_time_1<stop_time_1 && (TC_s<start_time_1 || TC_s>=stop_time_1)) || (start_time_1>stop_time_1 && (TC_s<start_time_1 && TC_s>=stop_time_1))))     && (start_time_2+stop_time_2=="" || ((start_time_2<stop_time_2 && (TC_s<start_time_2 || TC_s>=stop_time_2)) || (start_time_2>stop_time_2 && (TC_s<start_time_2 && TC_s>=stop_time_2))))      && (start_time_3+stop_time_3=="" || ((start_time_3<stop_time_3 && (TC_s<start_time_3 || TC_s>=stop_time_3)) || (start_time_3>stop_time_3 && (TC_s<start_time_3 && TC_s>=stop_time_3))))       )  return(false);      return (true); }
Такой дебильный код может придумать только дебил из бандерлогии.
 

malojorsk

Новичок форума
В этом случае обязательно добавлять дату. Ну как минимум условие если end < start добавить к времени end PeriodSecond(PERIOD_D1)

Нашел,
вроде должно сработать если TimeFiltr будет true

Код:
bool TimeFiltr()
{
if (MyStartHour < MyStopHour && Hour() >= MyStartHour && Hour() < MyStopHour) return(true);
if (MyStartHour > MyStopHour && (Hour() >= MyStartHour || Hour() < MyStopHour)) return(true);
if (MyStartHour == MyStopHour) return(false);
return(false);
}
 
Последнее редактирование модератором:

AlexeyVik

Программист mql4 mql5
Нашел,
вроде должно сработать если TimeFiltr будет true

Код:
bool TimeFiltr()
{
if (MyStartHour < MyStopHour && Hour() >= MyStartHour && Hour() < MyStopHour) return(true);
if (MyStartHour > MyStopHour && (Hour() >= MyStartHour || Hour() < MyStopHour)) return(true);
if (MyStartHour == MyStopHour) return(false);
return(false);
}
Тоже что-то мне не нравится. Как-то замудрёно сделали проверку. Специально для тебя написал.
Код:
int myStartHour = 13, myStopHour = 3;
/********************Script program start function*******************/
void OnStart()
{
 bool runTime = myRunTime(myStartHour, myStopHour);
}/*******************************************************************/

bool myRunTime(const int startHour, const int stopHour, const int startMinute = 0, const int stopMinute = 0)
{
 datetime t1 = StringToTime(StringConcatenate(startHour, ":", startMinute ));
 datetime t2 = StringToTime(StringConcatenate(stopHour, ":", stopMinute ));
 if(t2 < t1)
  t2 += PeriodSeconds(PERIOD_D1);
 return(TimeCurrent() >= t1 && TimeCurrent() < t2);
}/*******************************************************************/
 
Последнее редактирование модератором:
Верх