См. сабж.
См. сабж.
В некоторых случаях в МТ никак, а можно только по информации от ДЦ.
Ну, я и сам знаю, что никак.
Разработчики, ауу!
Извините, но можно же просто погуглить? (Результатов: примерно 18 700.)
Извините, но можно же просто погуглить? (Результатов: примерно 18 700.)
Вы советником гуглите? - это реально круто!, но, я надеюсь, что разработчики дадут штатный механизм.
Как узнать комиссию по открытой позиции?
делаю так:
void OnStart()
{
PositionSelect (Symbol ());
//PositionGetDouble (
//Commission ();
Print (PositionGetDouble(POSITION_COMMISSION));
CPositionInfo PosInfo;
PosInfo.Select(Symbol());
PosInfo.Commission();
Print (PosInfo.Commission());
}
По всякому пробую, результат 0.0.
Как узнать комиссию по открытой позиции?
делаю так:
void OnStart()
{
PositionSelect (Symbol ());
//PositionGetDouble (
//Commission ();
Print (PositionGetDouble(POSITION_COMMISSION));
CPositionInfo PosInfo;
PosInfo.Select(Symbol());
PosInfo.Commission();
Print (PosInfo.Commission());
}
По всякому пробую, результат 0.0.
Только открыть, закрыть, потом в истории у сделки посмотреть комиссию.
Так сложно потому что комиссия - это что-то невообразимое и трудно прогнозируемое и как правило заранее сам чёрт ногу сломит, если захочет рассчитать комиссию.
Только открыть, закрыть, потом в истории у сделки посмотреть комиссию.
Так сложно потому что комиссия - это что-то невообразимое и трудно прогнозируемое и как правило заранее сам чёрт ногу сломит, если захочет рассчитать комиссию.
А почему в МТ4 показывает комиссию в окне Инструменты->Торговля а в МТ5 нет? Почему непонятно, учтена комиссия в плавающей прибыли в колонке прибыли или нет? Почему такие сложности то? Почему штатный скрипт PositionInfoSample.mq5 даже не показывает комиссию у открытой позиции?
Сломал вот клавиатуру, процентов 45 клавиш не работает теперь после удара кулаком. Набираю со смартфона.
Сломал вот клавиатуру, процентов 45 клавиш не работает теперь после удара кулаком. Набираю со смартфона.
void OnStart()
{
const int Ticket = OrderSend(_Symbol, OP_BUY, 1, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0, 0);
OrderClose(Ticket, 0.3, SymbolInfoDouble(_Symbol, SYMBOL_BID), 0, clrNONE);
Sleep(1000); // ждем обновления истории
if (OrderSelect(Ticket, SELECT_BY_TICKET))
Alert(OrderCommission());
}
Осталось залезть в исходник OrderCommission и посмотреть. Вспомнил, что недавно это делал
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2016.10.29 17:09
{
double Commission = ::PositionGetDouble(POSITION_COMMISSION);
// На случай, если POSITION_COMMISSION не работает
if (Commission == 0)
{
const ulong Ticket = MT4ORDERS::GetPositionDealIn();
if (Ticket > 0)
{
const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME);
if (LotsIn > 0)
Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn;
}
}
return(Commission);
}
{
ulong Ticket = 0;
if ((PositionIdentifier == 0) ? ::HistorySelectByPosition(::PositionGetInteger(POSITION_IDENTIFIER)) : ::HistorySelectByPosition(PositionIdentifier))
{
const int Total = ::HistoryDealsTotal();
for (int i = 0; i < Total; i++)
{
const ulong TicketDeal = ::HistoryDealGetTicket(i);
if (TicketDeal > 0)
if ((ENUM_DEAL_ENTRY)::HistoryDealGetInteger(TicketDeal, DEAL_ENTRY) == DEAL_ENTRY_IN)
{
Ticket = TicketDeal;
break;
}
}
}
return(Ticket);
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования