Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 216

 
Как программно проверить запущена панель one click trading или нет?
 
Vladimir Tkach:
Как программно проверить запущена панель one click trading или нет?

Вытащил из класса:

   //--- Получение параметра "панель торговли OneClick" на чарте
   bool                 IsChartOneClick(void)            {return(ChartGetInteger(m_chart_id,CHART_SHOW_ONE_CLICK));}
 
Artyom Trishkin:

Такую проблему нужно решать путём проверки: а есть ли, или была ли уже открыта и закрыта позиция на этом самом баре.

Иначе вы всё в кучу накидаете. Сигнальная функция должна отсылать сигналы, а торговая функция уже должна проверять валидность сигнала.


Я это и хотел сделать, только не знаю как реализовать. Как прописать проверку на текущем баре.
 
AlGuru:

Я это и хотел сделать, только не знаю как реализовать. Как прописать проверку на текущем баре.

Нужно проверить есть ли открытая позиция, время открытия которой соответствует бару 0.

Если нету, то дополнительно проверить - а есть ли закрытая позиция, которая была открыта на баре 0 и закрыта на нём же.

Соответственно, вам нужно сделать такие функции:

  1. Бар открытия последней открытой позиции
  2. Бар открытия последней закрытой позиции
  3. Бар закрытия последней закрытой позиции
  4. Факт открытия и закрытия последней закрытой позиции на одном и том же баре (используются две предыдущие функции 2 и 3)
Далее, используя эти функции, получать необходимые вам данные для принятия решения.
 
a196012a:

Всем доброго времени суток!

Подскажите пожалуйста как закодировать в тестере стратегий  следующее действие

Общий смысл

1.Открывается ордер N -X  ( объем = 0.1)

2.Если именно этот ордер закрывается по СЛ, то. для компенсации потерь, сразу по цене закрытия по СЛ ордера N X ,  открывается ордер N - X1 ( объем = 0.3)

МНЕ   НУЖНО

3 Если ордер ( объем = 0.3) закрывается по СЛ - запомнить только  значение  часа  открытия ордера N -X для компенсации потерь по которому он и был открыт .

Умею открывать оба ордера, но не могу до конца  дойти своим умом, как запомнить значение часа закрывшегося по СЛ ордера объемом 0.1 лот.

ПРИМЕЧАНИЕ , связанное с закрытием ордеров на одном тике.

Бывает иногда что на одном тике закрываются по СЛ больше одного ордера и объемом 0.1 и объемом 0.3.

Если на одном тике закрывается по СЛ , например 3 ордера по 0.1, то вместо открытия 3 ордеров по 0.3. - открывается только 1 ордер по 0.3 лота

 В этом случае при закрытии по СЛ только 1 ордера по 0.3 лота я не получу значений часа открытия двух ордеров по 0.1 лота для компенсации потерь по которым они и был открыты.

То есть, мне нужно что бы,  в этом случае, открылось именно 3 ордера по 0.3 лота, а не один.


А бывает, что на одном тике закрываются по СЛ , например 3 ордера объемом 0.3 лота, не смотря на то, что соответствующие им ордера по 0.1. лота открылись на разных тиках( но просто  по одной цене)

В этом случае программа опять же  сохраняет нужное мне значение часа только одного последнего ордера объемом 0.1 лот .

А мне нужно что бы программа запоминала значение часа каждого закрытого по СЛ ордера объемом 0.1 лот.


Вот мой код, который нужно довести до ума.

Спасибо за помощь.

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


Добрый день!

1. А зачем вам учет времени каждого закрытого ордера?  Ведь можно и без этого обойтись... ИЛИ вы эти данные ещё где-то учитываете?

2. И именно 3 последних закрывшихся в убыток ордера? Или не важно сколько их там будет, может 5 или 8... И соответственно каждому

   ордеру, закрывшемуся в минус должен соответствовать ордер с увеличенным лотом?

 
Valerius:


Добрый день!

1. А зачем вам учет времени каждого закрытого бара?  Ведь можно и без этого обойтись... ИЛИ вы эти данные ещё где-то учитываете?

2. И именно 3 последних закрывшихся в убыток ордера? Или не важно сколько их там будет, может 5 или 8... И соответственно каждому

   ордеру, закрывшемуся в минус должен соответствовать ордер с увеличенным лотом?

Спасибо за отклик.

Да , час открытия я учитываю в последующих действиях программы.

Количество может быть от 2 до 10

Именно каждому ордеру закрывшемуся по стопу должен соответствовать другой ордер открывшийся большим объемом.

Под словом соответствовать я имею в виду  если , например в течении 1 дня закрылись по СЛ 3 ордера открытые в любое время , сразу по цене их закрытия

должны открыться 3 ордера большего объем. Сразу после закрытия каждого отдельного ордера. А не все одновременно.  Например в 12 00 закрылся ордер по цене 1.2000

сразу в 12 00 по цене 1.2000 открывается ордер большего объема . И так по каждому ордеру меньшего объема закрывшегося по СЛ. А после закрытия ордера большего объема по СЛ - запомнить час открытия ордера в ответ на закрытие которого он был открыт . То есть , если ордер открылся в 12 00 по цене 1.200 и закрылся по стопу , то открывается ордер большего объема в 12 00 по цене 1.2000. И если ордер большего объема закрылся по СЛ запомнить час открытия ордера меньшего объема , то есть 12.

И так после каждого ордера большего объема который закрылся только по СЛ.

Особенную трудность для меня составляет открытие ордеров и сохранение значений часа в ситуациях когда на одном тике закрываются по СЛ несколько ордеров ( от 2 до 10)

См подробное описание этой ситуации в начальном посте.

 
a196012a:

Спасибо за отклик.

Да , час открытия я учитываю в последующих действиях программы.

Количество может быть от 2 до 10

Именно каждому ордеру закрывшемуся по стопу должен соответствовать другой ордер открывшийся большим объемом.

Под словом соответствовать я имею в виду  если , например в течении 1 дня закрылись по СЛ 3 ордера открытые в любое время , сразу по цене их закрытия

должны открыться 3 ордера большего объем. Сразу после закрытия каждого отдельного ордера. А не все одновременно.  Например в 12 00 закрылся ордер по цене 1.2000

сразу в 12 00 по цене 1.2000 открывается ордер большего объема . И так по каждому ордеру. А после закрытия ордера большего объема по СЛ - запомнить час открытия ордера в ответ на закрытие которого он был открыт . То есть , если ордер открылся в 12 00 по цене 1.200 и закрылся по стопу , то открывается ордер большего объема в 12 00 по цене 1.2000. И если ордер большего объема закрылся по СЛ запомнить час открытия ордера меньшего объема , то есть 12.

И так после каждого ордера большего объема который закрылся только по СЛ.


Ну и ещё одно уточнение.... Например, 1-й ордер закрылся лотом 0.1, 2-й открылся 0.3 лотом. Запомнили время открытия первого ордера. Потом закрылся 2-й ордер по стопу, запомнили время открытия 2-гоордера и выставили ордер с 0.9 лотом. И т.д. Я правильно понял?  ИЛИ нужно запоминать всегда время только первого ордера?
 
Здравствуйте. Почему уменя отоброжение волютных пар euro vs usd в числах 149,16325 ане в 1,0616? 


 
sidovi:
Здравствуйте. Почему уменя отоброжение волютных пар euro vs usd в числах 149,16325 ане в 1,0616? 



Попробуйте обновить котировки.  Сервис - Архив котировок - выберите вашу валютную пару - загрузить.

Если не поможет, то переустановите метатрейдер.

 
Valerius:

Ну и ещё одно уточнение.... Например, 1-й ордер закрылся лотом 0.1, 2-й открылся 0.3 лотом. Запомнили время открытия первого ордера. Потом закрылся 2-й ордер по стопу, запомнили время открытия 2-гоордера и выставили ордер с 0.9 лотом. И т.д. Я правильно понял?  ИЛИ нужно запоминать всегда время только первого ордера?

Все ордера большего объема открываются только объемом 0.3 лота. Все ордера меньшего объема, в ответ на закрытие которых по СЛ открываются ордера объемом 0,3 лота, открываются объемом 0.1 лот. Только 0,1 и 0.3. Других объемов нет.

Во время закрытия по СЛ ордера объемом 0,3 запомнить час открытия ордера в ответ на закрытие которого он был открыт( то есть ордера объемом 0.1 лот).

Спасибо за помощь.

Не подскажете заодно а где настраивается опция которая отправляет сообщения на .адрес моей электронной почты, когда на мой пост пришел ответ.

Еще раз спасибо огромное.