+321 123 4567
info@test.com
My Account
Forex Lab
  • Главная
  • Софт
  • Стратегии
  • Брокер
  • Блог
  • Item A
    • Sub item A1
    • Sub item A2
  • Item B
    • Sub item B1
    • Sub item B2
  • Item C
    • Sub item C1
    • Sub item C2

Волшебство в MQL4

В прошлом уроке мы создали советника в MQL4, который может торговать. Но если его включить в таком виде он будет вести себя по «хамски». Он будет открывать а потом управлять и удалять не только ордера которые он открыл, но и всеми Вашими открытыми ордерами или открытыми другими «советниками».

Для того что бы «советник» отличал свои ордера от ордеров выставленных кем-то другим в торговой функции OrderSend есть идентификатор – magic (магическое число ордера). При открытии ордеров «советник» помечает их этим числом, по которому он их потом будет отличать от ордеров выставленных другим «советником» или трейдером.

//+------------------------------------------------------------------+
//|                                                  TradeOnNews.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                         |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern int    Magic          = 111; //число может быть любым
extern string StartTime      = "15:30";  // время открытия маркет ордера (по времени MetaTrader)
extern string CloseTime      = "16:00";  // Время закрытия ордеров
extern int    Delta          = 15;  // расстояние от цены для выставления стоп ордеров
extern int    StopLoss       = 20;
extern int    TakeProfit     = 30;
extern double Lot            = 0.1;

Объявляем переменную Magic что бы потом в настройках «эксперта» его можно будет менять.
Если у Вас торгует несколько «советников» каждому нужно назначить свое число.
Добавляем в функцию OrderSend переменную Magic.

OrderSend(Symb,OP_SELLSTOP,Lot,Bid-Delta*Point,3,Bid-Delta*Point + StopLoss*Point,Bid-Delta*Point - TakeProfit*Point,NULL,Magic,EP,Red);

Теперь «эксперт» будет все свои ордера помечать этим числом.
А что бы он управлял только этими ордерами в тех местах кода «советника» (обычно это цикл) после OrderSelect, устанавливаем фильтр.

if(Magic != OrderMagicNumber()) continue; // если магическое число не совпадает с нашим Magic - возвращаемся в начало цикла.

continue – возвращает в начало цикла.

Если магическое число не совпадает с нашим Magic – значит это «чужой» ордер, отбрасываем его и возвращаемся в начало цикла. Берем следующий ордер и проверяем Magic, если совпадает значит это ордер наш и мы можем с ним делать все что угодно (удалять, модернизировать и тд.) исходя из ситуации.

В нашем «советнике» эти строки кода нужно ввести в двух местах в функции start().

if(OrderSelect(i, SELECT_BY_POS) == false) continue; // если ордер не выбран, возвращаемся в начало цикла
if(Magic != OrderMagicNumber()) continue;// если магическое число не совпадает с нашим Magic - возвращаемся в начало цикла

и в Orders()

if((OrderSelect(i,SELECT_BY_POS) == true) && (OrderSymbol() == Symb))//Если есть следующ.  //.. и наша вал.пара
     {
      if(Magic != OrderMagicNumber()) continue;// если магическое число не совпадает с нашим Magic - возвращаемся в начало цикла

Теперь наш «эксперт» будет управлять только своими ордерами.

Исходник: TradeOnNews-0.1

Написание советника для торговли — https://forexlab.ru/mql-write-advisor/

Предыдущая запись
Написание советника для торговли
Следующая запись
Советник «Болтун»

Свежие записи

  • Как работают биржи: классификация, виды, особенности
  • Moving Average: описание, настройка, стратегии
  • Что такое Non farm payrolls
  • HQBroker: мошенники или честный брокер
  • Торговля на бирже для начинающих: полный гайд

Рубрики

  • CFD (2)
  • FOREX (14)
  • Meta Trader 5 (6)
  • MetaTrader 4 (13)
  • Price Action (9)
  • QUIK (2)
  • Акции (9)
  • Бинарные опционы (11)
  • Биржи (1)
  • Брокеры (5)
  • Волновой анализ (7)
  • Графический анализ (28)
  • Индикаторный анализ (36)
  • Криптовалюты (2)
  • Методы управления капиталом (11)
  • Новости проекта Forex Lab (2)
  • Объемы (10)
  • Основы торговли (7)
  • Подкаст (7)
  • Полезное (3)
  • Программирование (20)
  • Психология трейдинга (25)
  • Свечной анализ (2)
  • Скальпинг (1)
  • Технический анализ (19)
  • Торговые платформы (26)
  • Торговые стратегии и системы (73)
  • Фибо (11)
  • Фондовый рынок (27)
  • Фракталы (4)
  • Фундаментальный анализ (19)
  • Фьючерсы (20)

Представленная информация не является индивидуальной инвестиционной рекомендацией, ни при каких условиях, в том числе при внешнем совпадении ее содержания с требованиями нормативно-правовых актов, предъявляемых к индивидуальной инвестиционной рекомендации. Любое сходство представленной информации с индивидуальной инвестиционной рекомендацией является случайным.
Какие либо из указанных финансовых инструментов или операций могут не соответствовать Вашему инвестиционному профилю.
Упомянутые в представленном сообщении операции и (или) финансовые инструменты ни при каких обстоятельствах не гарантируют доход, на который Вы возможно рассчитываете при условии использования предоставленной информации для принятия инвестиционных решений.
Информационный портал ForexLab не несет ответственности за возможные убытки инвестора в случае совершения операций, либо инвестирования в финансовые инструменты, упомянутые в представленной информации.
Во всех случаях определение соответствия финансового инструмента либо операции инвестиционным целям, инвестиционному горизонту и толерантности к риску является задачей инвестора.
Не является образовательной деятельностью. Не сопровождается выдачей документов об образовании и (или) квалификации. При полном или частичном использовании материалов сайта ссылка на https://forexlab.ru/ обязательна.

© 2008-2020 Forex Lab

  • Главная
  • Политика
  • Авторские права
  • Согласие
  • Риски
  • Оферта