Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 615

 
здравствуйте.
у меня на МТ-5 в окне инструменты нет вкладок - календарь , сигналы , не подскажите как их добавить?
 
sergey966121:
здравствуйте.
у меня на МТ-5 в окне инструменты нет вкладок - календарь , сигналы , не подскажите как их добавить?

За вкладку "Календарь" отвечают настройки на торговом сервере. Если вкладки нет - требуйте её включения у торговой организации, в которой открыт торговый счёт.

Если нет вкладки "Сигналы":

Если в MetaTrader'e нет вкладки "Сигналы" 

 

Добавлено: операционная система - Windows? 

 

Здравствуйте!

 У позиции при помощи PositionGet...()можно получить значения ТП и СЛ , а как задать тейкпрофит всей позиции? 

Спасибо! 

 
Alexander Kharlamov:

Здравствуйте!

 У позиции при помощи PositionGet...()можно получить значения ТП и СЛ , а как задать тейкпрофит всей позиции? 

Спасибо! 

Вот так, при помощи стандартной библиотеки и класса CTrade:

#include <Trade\Trade.mqh>
Ctrade my_trade
...
my_trade.Buy(...
//или
my_trade.Sell(...
//или
my_trade.PositionModify(...
 
Karputov Vladimir:

Вот так, при помощи стандартной библиотеки и класса CTrade:

Спасибо!
 
Alexander Kharlamov:
Спасибо!
Пожалуйста. При помощи стандартной библиотеки очень сильно облегчается программирование.
 
Alexander Kharlamov:
Спасибо!

Вот пример скрипта (PositionModify(SL).mq5) - он сначала открывает позицию, а потом изменяет стоп лосс этой позиции:

//+------------------------------------------------------------------+
//|                                           PositionModify(SL).mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#include <Trade\Trade.mqh>
//--- variable
CTrade   my_trade;         // object CTrade
int      my_stop_loss=30;  // stop level
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   my_trade.Buy(0.01);
   Sleep(6000);

   double m_adjusted_point;         // point value adjusted for 3 or 5 points
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(Digits()==3 || Digits()==5)
      digits_adjust=10;
   m_adjusted_point=Point()*digits_adjust;

   double m_stop_loss=my_stop_loss*m_adjusted_point;

   MqlTick m_tick;
   SymbolInfoTick(Symbol(),m_tick);

   double sl=NormalizeDouble(m_tick.bid-m_stop_loss,Digits());
   my_trade.PositionModify(Symbol(),sl,0);
  }

Ограничение на использование: корректно будет работать только на неттинговых счетах.

Файлы:
 

TP для позиции удалось поставить, спасибо.

А интересно можно средствами MQL5 отследить появление события - тейк профит сработал? Или надо проверять состояние позиции. 

 
Alexander Kharlamov:

TP для позиции удалось поставить, спасибо.

А интересно можно средствами MQL5 отследить появление события - тейк профит сработал? Или надо проверять состояние позиции. 

Конечно проверять, как вам позиция сообщит о событии - это же просто некая сущность (запись в БД + что-то еще) на сервере ДЦ.
 

Пока, по ненадобности, я этим ещё не занимался, но разве в событиях OnTrade и OnTradeTransaction не получится отследить закрытие позиции по тейку?

Trade

Событие Trade генерируется при завершении торговой операции на торговом сервере. Обработка события Trade производится функцией OnTrade() для следующих торговых операций:

  • установка, модификация или удаление отложенного ордера;
  • отмена отложенного ордера при нехватке средств либо по истечении срока действия;
  • срабатывание отложенного ордера;
  • открытие, добавление или закрытие позиции (или части позиции);
  • модификация открытой позиции (изменение стопов).

TradeTransaction

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

  • Отсылка торгового запроса любым MQL5-приложением в клиентском терминале при помощи функций OrderSend и OrderSendAsync и его последующее исполнение;
  • Отсылка торгового запроса через графический интерфейс терминала и его последующее исполнение;
  • Срабатывание отложенных ордеров и стоп-ордеров на сервере;
  • Выполнение операций на стороне торгового сервера.

В результате данных действий, для счета выполняются торговые транзакции:

  • обработка торгового запроса;
  • изменение открытых ордеров;
  • изменение истории ордеров;
  • изменение истории сделок;
  • изменение позиций.

Например, при отсылке рыночного ордера на покупку, он обрабатывается, для счета создается соответствующий ордер на покупку, происходит исполнение ордера, его удаление из списка открытых, добавление в историю ордеров, далее добавляется соответствующая сделка в историю и создается новая позиция. Все эти действия являются торговыми транзакциями. Приход каждой такой транзакции в терминал является событием TradeTransaction. Данное событие обрабатывается функцией OnTradeTransaction.