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

vladradon

Программист
Всё отлично, спасибо за помощь
Элвису очередное гранд мерси, конечно. Но я хотел обозначить то, что ограничение торгов по времени должно накладываться только на открытие ордеров и если ордера уже есть открытые, то их сопровождение должно продолжаться. Поэтому жесткие ретерны в коде, как говорил мой коллега по работе - такого быть нельзя!)))
 

Elvis Burunduk

Элитный участник
Элвису очередное гранд мерси, конечно. Но я хотел обозначить то, что ограничение торгов по времени должно накладываться только на открытие ордеров и если ордера уже есть открытые, то их сопровождение должно продолжаться. Поэтому жесткие ретерны в коде, как говорил мой коллега по работе - такого быть нельзя!)))

Ну так я же написал - вставь код с ретерном не в старт, а внутрь функции открытия ордеров, в самом начале ее. И функция будет постоянно прерываться, пока время не наступит.
 

eevviill2

Местный знаток
Мужики, ну что вы как дети, давно существует код, который работает. Ну только если не нужны минуты. :D
Распознает переход через полночь...

В начале объявляем переменные :

extern int Start = 0; // Время старта открытия ордеров
extern int Stop = 18; // Время стопа открытия ордеров

потом в start пихаем:

if (Start < Stop)
{
if (TimeHour(TimeCurrent()) < Start || TimeHour(TimeCurrent()) >= Stop) return(0);
}

if (Start > Stop)
{
if (TimeHour(TimeCurrent()) < Start && TimeHour(TimeCurrent()) >= Stop) return(0);
}
Динозавры живы:D
PHP:
 extern string emp3 = "//////////////Work time settings////////////////////";
extern bool Use_work_time = false;
extern string start_time_1 = "08:00";
extern string stop_time_1 = "16:00";
extern string start_time_2 = "";
extern string stop_time_2 = "";
extern string start_time_3 = "";
extern string stop_time_3 = "";
/////////////////////////////////////////////////////////////////
 bool work_time_f() 
{
if(!Use_work_time) return(true);

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);
}
 

eevviill2

Местный знаток
Зачем?
PHP:
TimeHour(TimeCurrent())
просто
PHP:
Hour()
...
Если используешь 2 и больше одинаковые функции подряд с одинаковыми возвращаемыми значениями, то нужно в переменную записывать
PHP:
int hours=TimeHour(TimeCurrent())
и дальше использовать
PHP:
hours
 

eevviill2

Местный знаток
Ребят подскажите, строчка if (Hour()<8 || Hour()>20) return(0);
Это чтобы сов торговал с 8 до 20, что изменить, что бы наоборот сов не торговал в это время? И будет ли работать, если я укажу несколько строк с разным временем?
PHP:
if (Hour()>=8 && Hour()<20) return(0);
 

vladradon

Программист
Ну так я же написал - вставь код с ретерном не в старт, а внутрь функции открытия ордеров, в самом начале ее. И функция будет постоянно прерываться, пока время не наступит.
Так я же не тебе писал ответ, а Левису_Каменному!)))
 

Elvis Burunduk

Элитный участник
vladradon,
Не разобрался, думал , что мне пишешь, ты сначала мой ник упомянул, а потом текст далее воспринимается как будто мне .
 

vladradon

Программист
Не разобрался, думал , что мне пишешь, ты сначала мой ник упомянул, а потом текст далее воспринимается как будто мне .
Стукани мне в скайп (ник тот же) - есть пара мыслей, с которыми уже год не могу справиться...))) Может твой свежий взгляд рассудит...
 

DIW35902345

Местный житель
Посоветуйте . Как лучше снять параметры с индикатора . iCustom , как-то не ровно все получается
 

Вложения

  • LevelStop-Reverse-mtf.mq4
    6 КБ · Просмотры: 29

Monachus

Местный знаток
Доброго времени суток!
Вопрос: индикатор подвальный и рисует стрелки в подвале, а не на чарте, как их перенести на чарт?что-то не могу разобраться
 

_SERG_

Активный участник
Доброго времени суток!
Вопрос: индикатор подвальный и рисует стрелки в подвале, а не на чарте, как их перенести на чарт?что-то не могу разобраться

#property indicator_chart_window

Если кроме стрелок больше ничего не рисует.:facepalm:
 

Levis_Rock

Активный участник
Доброй ночи, помогите с проблемой..

На терминале работает один бот на разных парах. Перед кодом открытия ордера, стоит функция if(total==0), если её убрать, то бот открывает тысячи сделок одновременно, в противном случае бот не открывает ордера по другим парам, если в терминале уже есть открытый ордер, хоть и разные магики, как можно исправить ситуацию ?
 
Последнее редактирование:

Elvis Burunduk

Элитный участник
Доброй ночи, помогите с проблемой..

На терминале работает один бот на разных парах. Перед кодом открытия ордера, стоит функция if(total==0), если её убрать, то бот открывает тысячи сделок одновременно, в противном случае бот не открывает ордера по другим парам, если в терминале уже есть открытый ордер, хоть и разные магики, как можно исправить ситуацию ?

Ну так внутри функции total поставь в условиях еще и проверку магиков , если магик не от этой пары - делаешь continue и так до конца перебора ордеров.
 
Верх