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

Dersu

Местный знаток
Посоветуйте: как проще всего добится эфекта переключения тпл кнопками с графика
Нужна быстрая смена стратегий на графике вперед и назад для разгрузки графика
Как вариант смена профиля
 

AlexeyRoss

Интересующийся
Спред

Добры день. Подскажите пожалуйста как должен выглядеть скрипт, который будет давать следующую опцию для эксперта:

Выставить максимальное и минимальное значение спреда, при которых эксперту разрешается вести автоторговлю.

Или если есть подобное решение данной идеи
 

Ugar

Гуру форума
Добры день. Подскажите пожалуйста как должен выглядеть скрипт, который будет давать следующую опцию для эксперта:

Выставить максимальное и минимальное значение спреда, при которых эксперту разрешается вести автоторговлю.

Или если есть подобное решение данной идеи
Это функция, которую надо добавить в советник. Это если по нормальному. Если через зад, то можно оформить индикатор, который нажимает и отжимает кнопку автоторговли. Неизвестно как стабильно будет работать терминал и работающие в нём советники, если постоянно клацать кнопку. Тем более что кнопка влияет на все советники, даже работающие по другим символам, где спред может быть в норме.
 
Последнее редактирование:

Dersu

Местный знаток
Это функция, которую надо добавить в советник. Это если по нормальному. Если через зад, то можно оформить индикатор, который нажимает и отжимает кнопку автоторговли. Неизвестно как стабильно будет работать терминал и работающие в нём советники, если постоянно клацать кнопку. Тем более что кнопка влияет на все советники, даже работающие по другим символам, где спред может быть в норме.
Извините что вмешиваюсь
Получается нельзя заставить avtorefrech обновлять ТОЛЬКо один график
 

Ugar

Гуру форума
Извините что вмешиваюсь
Получается нельзя заставить avtorefrech обновлять ТОЛЬКо один график
Что за avtorefrech? Пользовательская функция? Не зная что внутри этой функции, никто не сможет ответить что она делает.
 

Dersu

Местный знаток
Что за avtorefrech? Пользовательская функция? Не зная что внутри этой функции, никто не сможет ответить что она делает.
Обновление графика для рисующих иникаторов
Я не прогер - юзаю термины потребителя
 

Вложения

  • Change TimeFrame TT [AutoRefresh] 1 .mq4
    9,9 КБ · Просмотры: 15
Последнее редактирование:

Ugar

Гуру форума
Обновление графика для рисующих иникаторов
Я не прогер - юзаю термины потребителя
Это №~&$(% переключает таймфрейм графика выше, потом ниже, или наоборот. Каждое переключение вызывает деинициализацию, потом инициализацию всех советников и индикаторов на этом графике. Они могут забыть всё что надо было запомнить, так же советник может среагировать торговой операцией, проанализировав неправильный таймфрейм. Осторожней с этим...
 

Dersu

Местный знаток
Стоп стоп вот тут помедленнее пожалуйста - я записываю
("Шурик" кавказская пленница)
В цитируемом мной Вашем посте есть идея влияния на ВСЕ графики
Тут звучит "этот график"
Это не претензия - упаси бог
Вот в чем мой интерес и почему я это все начал:
Насколько я понимаю Авторефреш обновляет ВСЕ графики открытого профиля
тут начинается проблема с тяжелыми индикаторами на других графиках кроме открытого
Ну и то что совы там могут отреагировать
Вопрос в студию: меня интересует обновление только одного графика - это возможно?
 
Последнее редактирование:

Ugar

Гуру форума
Насколько я понимаю Авторефреш обновляет ВСЕ графики открытого профиля
Нет. Он будет обновлять только офлайновый график. На нормальном графике он переключает таймфреймы, обновление графика будет как побочный эффект. Он переключает таймфрейм только того графика, на котором стоит. Даже когда Вы переключаете таймфрейм кнопками терминала, переключается только активный график, на остальные это не действует.


В цитируемом посте шла речь о кнопке Автоторговля терминала. Она действует на все советники.
 
Последнее редактирование:

Dersu

Местный знаток
Очень хорошо
Огромное спасибо - один вопрос снят
 
  • Like
Реакции: Ugar

ibragimovanton

Прохожий
Здравствуйте, подскажите пожалуйста почему не работает это условие. Вернее я догадываюсь почему - потому что в это время нет тика. А как еще можно реализовать что б переменной, ровно каждые 15 минут присваивалось true ?
int start() { код код код....
if (( Minute()==15&&(Seconds()==00)) || ( Minute()==30&&(Seconds()==00)) || ( Minute()==45&&(Seconds()==00)) || ( Minute()==00&&(Seconds()==00)) )
{
a=true;
}
}
 

Ugar

Гуру форума
Здравствуйте, подскажите пожалуйста почему не работает это условие. Вернее я догадываюсь почему - потому что в это время нет тика. А как еще можно реализовать что б переменной, ровно каждые 15 минут присваивалось true ?
int start() { код код код....
if (( Minute()==15&&(Seconds()==00)) || ( Minute()==30&&(Seconds()==00)) || ( Minute()==45&&(Seconds()==00)) || ( Minute()==00&&(Seconds()==00)) )
{
a=true;
}
}
Как вариант можно зафиксировать момент наступления нужной минуты, сравнивая с прошлым значением.
static int PrevMinute;
if(Minute()==15 && PrevMinute!=Minute())a=true;
PrevMinute= Minute();

Ещё вариант привязаться к моменту открытия 15 минутного бара.
static datetime PrevT;
datetime T=iTime(NULL,15,0);
if(PrevT!=T)a=true;
PrevT=T;

Ещё может быть несколько вариантов реализации.
 

vladradon

Программист
Здравствуйте, подскажите пожалуйста почему не работает это условие. Вернее я догадываюсь почему - потому что в это время нет тика. А как еще можно реализовать что б переменной, ровно каждые 15 минут присваивалось true ?
Можно так попробовать:
PHP:
void OnTimer()
 {
  a=true;
 }
В функцию OnInit() нужно прописать EventSetTimer(900);
В функцию OnDeinit(const int reason) - EventKillTimer();
Только переменная а должна быть глобальной и не будет привязки к часам типа 0-15-30-45 минут - отсчет 15 минут при запуске таймера.
 
Последнее редактирование:

Skarb911

Активный участник
Здравствуйте уважаемые программисты!

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

Принцип работы такой: советник выставляет стартовые 4 линии. Две линии торговые(buy/sell ), две линии профитные... Две линии над ценой (голубая ТP, синяя ORDER BUY), две линии под ценой(красная ORDER SELL, оранжевая ТP)...
Торговля полу-автоматом. После установки экспертом стартовых линий, торговые линии перемещаются к уровням, поэтому линия на покупку может стать не над ценой(по аналогу Buy Stop), а и под ценой(Buy Limit)...Это оправдывается, если открытие ордера планируется в ближайшем будущем, аналогично с продажами!

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

Принцип открытия ордеров в сове, очевидно заложен, судя по переписке, с нового бара:

"3. убрать отложки вообще
4. при касании ценой синей линии сверху или снизу открыть рыночный бай с уровнями стопа линии ТП и СЛ
5. при касании ценой красной линии сверху или снизу открыть рыночный селл с уровнями стопа линии ТП и СЛ"
и
"кнопка старт убрана
1. можно двигать линии в любую сторону и против цены тоже
2. после передвижения линий работа начнётся с нового бара, чтобы не было открытий во время перемещения линии сквозь цену...
Исправлю тогда торговлю без кнопки, но после расстановки линий работа начнётся с нового бара чтобы не открывался ордер при перетаскивании сквозь цену."

Мне не комфортно смотреть на то, как цена прошивает линии, как швейная машинка, и не всегда по касанию цены к линии, открывается ордер!

Попробую объяснить, как я вижу открытие ордеров:
Цена коснулась к линии торгового ордера(buy/sell ), поступает команда советника
"торговля в один клик"...
Если кто сможет помочь, буду очень признателен!

Всем удачи!
 

vladradon

Программист
Спасибо! привязался к 15-минутному бару, работает))
От тиков отвязаться все равно не получится. Если вся программа работает по тикам, то и мой вариант не вариант. В этом варианте проверка переменной а (как и присвоение ей статуса true) будет не точно каждые 15 минут, а при появлении очередного тика по прошествии очередных 15-ти минут. А в твоем варианте проверка на секунды не давала сработать алгоритму.
 

Ugar

Гуру форума
От тиков отвязаться все равно не получится. Если вся программа работает по тикам, то и мой вариант не вариант. В этом варианте проверка переменной а (как и присвоение ей статуса true) будет не точно каждые 15 минут, а при появлении очередного тика по прошествии очередных 15-ти минут. А в твоем варианте проверка на секунды не давала сработать алгоритму.
15 минутный таймер будет работать с интервалом, привязан к моменту инициализации, а не к началу минуты. Системый таймер не работает в тестере. Увеличивает интервалы при тормозах, особенно влияет тормоза связанные с диском. Уж лучше тогда таймер ставить на секунду или меньше и проверять время. Тогда будет отвязан от тика и можно привязаться к началу минуты.
 
Верх