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

 
Aleksey Vyazmikin:

Тогда не представляю, как Вы получите цену - терминал же автоматом конвертирует все кроссы по имеющимся котировкам...

Верно, и там есть функция по конвертации, вот мне и нужна эта функция.

Где-то встречал, и вроде как fxsaber выкладывал, но не могу найти.

 
Vitaly Muzichenko:

Верно, и там есть функция по конвертации, вот мне и нужна эта функция.

Где-то встречал, и вроде как fxsaber выкладывал, но не могу найти.

Так позвать его надо в эту ветку (@fxsaber), дабы прочёл и подсказал ежли чего вдруг...

 
Vitaly Muzichenko:

Ещё раз повторю:

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

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

Не нужно подставлять рубль, помимо него есть ещё десяток других инструментов, которые о рубле не слышали никогда.

Самый простой вариант получить валюту прибыли SYMBOL_CURRENCY_PROFIT и выбрать соответствующую котировку к доллару. Но какую валюту поставить базовой???

 
Artyom Trishkin:

Так позвать его надо в эту ветку (@fxsaber), дабы прочёл и подсказал ежли чего вдруг...

Этот механизм вызова никогда не срабатывал в моем случае. И, честно говоря, даже не знаю, как он срабатывает у других.

Отвечаю, потому что случайно прочел. Но это случайность.


По теме теперь. Есть Ваша замечательная ветка по особенностям MQL5. И несмотря на некоторое программерское недовольство ею, она все же содержит полезный материал...

TickValue всегда помогал решить проблемы переводов в валюту счета. Предлагаю написать по аналогии MyOrderCalcProfit.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.02.27
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
fxsaber:

Этот механизм вызова никогда не срабатывал в моем случае. И, честно говоря, даже не знаю, как он срабатывает у других.

Отвечаю, потому что случайно прочел. Но это случайность.


По теме теперь. Есть Ваша замечательная ветка по особенностям MQL5. И несмотря на некоторое программерское недовольство ею, она все же содержит полезный материал...

TickValue всегда помогал решить проблемы переводов в валюту счета. Предлагаю написать по аналогии MyOrderCalcProfit.

Пуш-сообщения на мобилу приходят. Но это нужно настроить в своём профиле, при этом на мобильном должен быть установлен мобильный МТ - не важно какой 4, или 5.

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

 
fxsaber:

Этот механизм вызова никогда не срабатывал в моем случае. И, честно говоря, даже не знаю, как он срабатывает у других.

Отвечаю, потому что случайно прочел. Но это случайность.


По теме теперь. Есть Ваша замечательная ветка по особенностям MQL5. И несмотря на некоторое программерское недовольство ею, она все же содержит полезный материал...

TickValue всегда помогал решить проблемы переводов в валюту счета. Предлагаю написать по аналогии MyOrderCalcProfit.

Спасибо за ответ, но как это сделать чтобы работало, даже не представляю

 
Vitaly Muzichenko:

Спасибо за ответ, но как это сделать чтобы работало, даже не представляю

 

Я всё ж спрошу ещё раз - а зачем это надо? Фактически то реально как использовать? Или на европейской бирже можно за доллары торговать?

Для расчета лота в % от депозита?

 
Aleksey Vyazmikin:

 

Я всё ж спрошу ещё раз - а зачем это надо? Фактически то реально как использовать? Или на европейской бирже можно за доллары торговать?

Для расчета лота в % от депозита?

Нет, для расчёта прибыли/убытка до открытия позиции, но в валюте депозита, а не инструмента для шанхайской биржи.

 
Vitaly Muzichenko:

Спасибо за ответ, но как это сделать чтобы работало, даже не представляю

Попытаюсь последний раз достучаться... У меня нет счёта с такими инструментами обозначенными в проблеме, но вот скрипт работающий на форекс. Результат совпадает с теми значениями которые появляются в качестве подсказки как на этом скрине

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Vitaly Muzichenko, 2017.07.26 23:56

Вот смотрите, открыта бай одним лотом, когда ставим к ней тейкпрофит, то терминал пересчитывает сам в доллары, потому что счёт долларовый, 

но когда считаю Я по формуле (close_price-open_price)*Lots*TickPrice/TickSize, то получаю сумму тейкпрофита в рублях, а нужно отобразить так-же, но в долларах (валюта счёта)

На графике SBRF-9.17

Если поделить рубли на курс доллара 174.99/USDRUR = $2.93, то и получим тейкпрофит в долларах.

Как это записать программно, и чтоб она считала сама?

/********************Script program start function*******************/
void OnStart()
{
 for(int i = 0; i < PositionsTotal(); i++)
  {
   ulong positionTicket = PositionGetTicket(i);
   string positionSymbol = PositionGetString(POSITION_SYMBOL);
   ENUM_POSITION_TYPE positionType = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   double positionTP = PositionGetDouble(POSITION_TP);
   double positionOpen = PositionGetDouble(POSITION_PRICE_OPEN);
   double point = SymbolInfoDouble(positionSymbol, SYMBOL_POINT);
   int profitPoint = int(fabs(positionOpen-positionTP)/point);
   double positionProfit = PositionGetDouble(POSITION_PROFIT);
   string symbolCurrencyProfit = SymbolInfoString(positionSymbol, SYMBOL_CURRENCY_PROFIT);
   int currentProfit = positionType == POSITION_TYPE_SELL
    ? int((positionOpen-PositionGetDouble(POSITION_PRICE_CURRENT))/point)
    : int((PositionGetDouble(POSITION_PRICE_CURRENT)-positionOpen)/point);
   Print("PositionSymbol ", positionSymbol);
   Print("SymbolCurrencyProfit ", symbolCurrencyProfit);
   Print("PositionTP ", DoubleToString(positionTP, (int)SymbolInfoInteger(positionSymbol, SYMBOL_DIGITS)));
   Print("PositionOpen ", DoubleToString(positionOpen, (int)SymbolInfoInteger(positionSymbol, SYMBOL_DIGITS)));
   Print("PositionProfit ", DoubleToString(positionProfit, 2));
   Print("ProfitPoint ", profitPoint);
   Print("CurrentProfit ", currentProfit);
   Print("ИТОГО ", positionProfit/currentProfit*profitPoint);
  }
   
}/*******************************************************************/

У меня открыто 2 позиции. Вот результат работы скрипта

2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionSymbol EURGBP
2017.07.27 13:30:48.517 posi (EURUSD,M15)       SymbolCurrencyProfit GBP
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionTP 0.88697
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionOpen 0.89197
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionProfit 14.47
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ProfitPoint 500
2017.07.27 13:30:48.517 posi (EURUSD,M15)       CurrentProfit 109
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ИТОГО 66.37614678899082
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionSymbol EURJPY
2017.07.27 13:30:48.517 posi (EURUSD,M15)       SymbolCurrencyProfit JPY
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionTP 130.940
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionOpen 130.440
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionProfit -0.90
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ProfitPoint 500
2017.07.27 13:30:48.517 posi (EURUSD,M15)       CurrentProfit -9
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ИТОГО 50.0


НО!!! К сожалению к моменту закрытия позиции никто никогда не угадает какая будет котировка валюты прибыли к валюте депозита. В связи с этим абсолютно точное значение определить невозможно. Ну не получается заглянуть в будущее.

 
Vitaly Muzichenko:

Нет, для расчёта прибыли/убытка до открытия позиции, но в валюте депозита, а не инструмента

 

А зачем знать прибыль/убыток в вашем случае, не для контроля рисков? - просто стало любопытно - про валюту депозита ясно, хотя не ясно в каких реальных условиях это использовать.