Высокочастотный советник-скальпер

Ugar

Гуру форума
Такой момент - убрать массив тиков, поставить массив баров, тех же М1, к примеру.


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

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

Виртуальный стоп лосс и тейк профит у множества ордеров, не сложнее чем у одного.
 
Последнее редактирование:

astromc

Новичок форума
Массив баров любого стандартного таймфрейма всегда доступен, его не надо создавать. Это массив тиков создают потому что его нет в истории.

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

Тогда последний вопрос.

Вместо вызова ордера как вызвать пользовательский скрипт?

Команда на вызов пользовательского индикатора мне известна,
но насчёт вызова скрипта нет.

WindowsExpertName () подойдёт или нет?
и как правильно прописать вызов, имя скрипта к примеру pro, само разумеется он в папке скриптов.
 

Ugar

Гуру форума
Спс.
к сожалению заметил, что не особо разбираюсь в деталях .

Тогда последний вопрос.

Вместо вызова ордера как вызвать пользовательский скрипт?

Команда на вызов пользовательского индикатора мне известна,
но насчёт вызова скрипта нет.

WindowsExpertName () подойдёт или нет?
и как правильно прописать вызов, имя скрипта к примеру pro, само разумеется он в папке скриптов.
В языке MQL нет вызова скрипта. Можно конечно извернуться, назначить горячие клавиши скрипту, а советнику задать нажимать эти кнопки. Но это дурь. Вызывать можно функции. Значит можно скрипт превратить в функцию. Для этого скрипт должен быть в mq4.
 

astromc

Новичок форума
В языке MQL нет вызова скрипта. Можно конечно извернуться, назначить горячие клавиши скрипту, а советнику задать нажимать эти кнопки. Но это дурь. Вызывать можно функции. Значит можно скрипт превратить в функцию. Для этого скрипт должен быть в mq4.

Спасибо, понял и сделал.
Вставил в советник код. Всё работает.

Другой вопрос, как правильно заставить советника вместо открытия ордеров рисовать вертикальные линии на баре открытия ордера?
Удалять линии не нужно.

Можно ли обойтись парой строчек кода, или придётся как вы правильно заметили - извращаться? :laugh:
 

Ugar

Гуру форума
Другой вопрос, как правильно заставить советника вместо открытия ордеров рисовать вертикальные линии на баре открытия ордера?
Удалять линии не нужно.

Можно ли обойтись парой строчек кода, или придётся как вы правильно заметили - извращаться? :laugh:
Извращаться не надо, но парой строчек не обойтись.
1. Линий будет не одна. По этому каждой нужно уникальное имя. Можно например к слову "Line" добавить время, на которое будет ставиться линия. Строчка.
2. Установить линию с этим именем, задав в координатах время. Ещё строчка.
3. Задать линии всякие свойства стиль, цвет, толщину. Так же можно задать на переднем или заднем плане, можно ли выделять, видимость линии в списке объектов. Задание каждого свойства, это строчка кода.
Проще всего написать функцию со всеми этими строчками и вызывать её для установки линии, этот вызов будет строчка, а функция с кучей строк в стороне.
 

astromc

Новичок форума
Извращаться не надо, но парой строчек не обойтись.
1. Линий будет не одна. По этому каждой нужно уникальное имя. Можно например к слову "Line" добавить время, на которое будет ставиться линия. Строчка.
2. Установить линию с этим именем, задав в координатах время. Ещё строчка.
3. Задать линии всякие свойства стиль, цвет, толщину. Так же можно задать на переднем или заднем плане, можно ли выделять, видимость линии в списке объектов. Задание каждого свойства, это строчка кода.
Проще всего написать функцию со всеми этими строчками и вызывать её для установки линии, этот вызов будет строчка, а функция с кучей строк в стороне.

определил в шапке переменные
PHP:
string name = "S"+TimeCurrent();//имя линии продаж
int sub_window = 0; //индекс текущего окна текущего графика
После строчки открытия ордера внёс строчку создания линии
Если внести перед строкой открытия ордера, случаются разные нехорошие вещи, вроде множественного открытия ордеров
PHP:
      OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",2,0,Red);
        ObjectCreate(name,OBJ_VLINE,sub_window,TimeCurrent(),0);

Итого имеем правильное открытие ордеров и нарисованную вертикальную линию.
К сожалению, в единственном экземпляре.
Что сделано не так?
Можете помочь?
 

Ugar

Гуру форума
определил в шапке переменные
PHP:
string name = "S"+TimeCurrent();//имя линии продажint sub_window = 0; //индекс текущего окна текущего графика
После строчки открытия ордера внёс строчку создания линии
Если внести перед строкой открытия ордера, случаются разные нехорошие вещи, вроде множественного открытия ордеров
PHP:
      OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",2,0,Red);        ObjectCreate(name,OBJ_VLINE,sub_window,TimeCurrent(),0);
Итого имеем правильное открытие ордеров и нарисованную вертикальную линию.
К сожалению, в единственном экземпляре.
Что сделано не так?
Можете помочь?
Ничего критичного не вижу. Небольшие замечания.
1. строчка с переменной подокна не нужна. Можно было в строке установки линии, вместо неё вписать 0.
2. Не заданы свойства линии, после её установки. Обязательно надо цвет и толщину. Остальное по желанию.
ObjectSetInteger(0,name,OBJPROP_WIDTH,1);//Толщина
ObjectSetInteger(0,name,OBJPROP_COLOR,clrYellow);//Цвет
3. Если установку линии поставить перед функцией отправки ордера, никакой разницы не должно быть. То что он открывает кучу ордеров вместо одного, это просто советник криво написан. Похоже не контролирует свои действия. Написан по принципу отправил и забил на последствия. Значит и дальше он может так работать, независимо от линий.
 
Верх