А мне светит, что такое Тест-3? В каждом вопросе должны быть все исходные данные для его (вопроса) решения. Нет данных - разбирайся сам.Так в Test-3 сова написана. Но не пойму ни как, почему в тесторе всё зависает.На любом Дц.
А зачем dll приплели туда? Уже давным давно для этого есть функции ChartSaveTemplate для сохранения шаблона и ChartApplyTemplate для применения шаблона.Здравствуйте--
Помогите пожалуйста реализовать идею для удобства. Если это возможно конечно
Суть:-- Имеем кнопки с левой стороны чарта с порядковыми номерами шаблонов. При нажатии на кнопку на чарт загружается нужный шаблон.
С правой стороны кнопки с буквами S №1 и т.д. Возможно ли и не затруднит ли людей знающих сделать так чтоб при нажатии на кнопку S №1 автоматически без вопросов сохранялся шаблон №1 и так далее по кнопкам.
Смею заметить что не приплели,а помогли слепить из скрипта в индикатор с кнопками именно в таком варианте.А зачем dll приплели туда?
Мне почему-то лениво в пятницу заниматься кнопками, я сделал пример как сохраняется шаблон и применяется шаблон по нажатию кнопок s - сохранить, a - применить.Смею заметить что не приплели,а помогли слепить из скрипта в индикатор с кнопками именно в таком варианте.
На сколько понял из справки без длл никак даже с этими функциями...
я сделал пример как сохраняется шаблон и применяется шаблон по нажатию кнопок s - сохранить, a - применить.
Прикольные команды33050 удаляет советника -а надо чтоб грузил нужного...Вот эта понравилась--А вот кстати коды PostMessage для других вариаций
Все должно быть четко прописано без лишних пробелов, как у меня оказалось в имени индюка. В iCustom нужно прописывать все входные параметры индикатора (я отключил алерты для упрощения в ТМА). И на будущее - выкладывай в формате mq4, а не php.Так в Test-3 сова написана. Но не пойму ни как, почему в тесторе всё зависает.На любом Дц.
Я не понял, нету библиотеки? Скачать можно тут -https://www.mql5.com/ru/code/9951Прикольные команды33050 удаляет советника -а надо чтоб грузил нужного...Вот эта понравилась--
НО для неё нужно ServicesMT.mqh ---крутил к кнопкам как мог не вышло...// 7.9. Функция загружает на указанный график эксперт по его имени.
void ServiceLoadExpert(int hwndChart, // Системный дескриптор окна графика, куда загружается эксперт.
string szNameExpert, // Имя загружаемого эксперта.
int bOK); // Подтверждение запуска эксперта, при наличии диалогового окна свойств эксперта.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
Нет ли решения попроще чтоб работало с кнопками--нажал на кнопку загрузил нужного советника?
Задача с шаблонами благодаря Вам решена --отлично всё работает, спасибоЯ не понял, нету библиотеки?
Когда-то мне это было интересно, если посмотришь последнюю страницу там есть мои вопросы... но это было так давно... А сейчас, извини мне не интересно с этим разбираться. Не вижу в этом никакого смысла. Получается так, чтобы использовать эту примочку, надо загрузить индикатор, нажать кнопку и испытать приятное ощущение и удовлетворение... А не проще вместо индикатора загрузить ручками сразу советник??? И ничего не надо изменять.Задача с шаблонами благодаря Вам решена --отлично всё работает, спасибо
Задача другая, суть:- тынс на кнопку загружается советник по названию и без подтверждения- (если я правильно понял).
В коде не работает--на 99% уверен что прокладка виновата.
Может сие чудо работать как надо?
В десятку с километранажать кнопку и испытать приятное ощущение и удовлетворение...
Подскажите как реализовать открытие и закрытие сделки по часу:
если
Hour() >= 21 && Hour() <= 23 - открываем сделку, тут все понятно..
а если час открытия больше часа закрытия (к примеру 22 - 2), то как это можно реализовать в коде?
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);
}
В этом случае обязательно добавлять дату. Ну как минимум условие если end < start добавить к времени end PeriodSecond(PERIOD_D1)Подскажите как реализовать открытие и закрытие сделки по часу:
если
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); }
В этом случае обязательно добавлять дату. Ну как минимум условие если end < start добавить к времени end PeriodSecond(PERIOD_D1)
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);
}
Тоже что-то мне не нравится. Как-то замудрёно сделали проверку. Специально для тебя написал.Нашел,
вроде должно сработать если 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);
}/*******************************************************************/