Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
double CurrentPositionTotalCommission(string comment="",string symb="",int type=-1)
{
if(symb=="")symb=_Symbol;
int total=0; // Всего сделок в списке выбранной истории
double commission=0; // Счетчик сделок по символу позиции
string deal_symbol=""; // символ сделки
for(int i=0; i<PositionsTotal(); i++)
{
ulong pt=PositionGetTicket(i);
long ID=PositionGetInteger(POSITION_IDENTIFIER);
if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
{
//--- Получим количество сделок в полученном списке
total=HistoryDealsTotal();
//--- Пройдем по всем сделкам в полученном списке
for(int i=0; i<total; i++)
{
ulong dt = HistoryDealGetTicket(i);
long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
if(did==pt && in_out==DEAL_ENTRY_IN && (StringFind(HistoryDealGetString(HistoryDealGetTicket(i),DEAL_COMMENT),comment)!=-1 || comment=="")
&& (HistoryDealGetInteger(HistoryDealGetTicket(i),DEAL_TYPE)==type || type==-1))
{
commission+=HistoryDealGetDouble(HistoryDealGetTicket(i),DEAL_COMMISSION)+HistoryDealGetDouble(HistoryDealGetTicket(i),DEAL_SWAP);
}
}
}
}
//---
return(commission*2);
}
считаю так, комиссию и своп,
*2 потому что при закрытии снимается та же комиссия по второму разу.
Спасибо, оба варианта пашут.
Спасибо, оба варианта пашут.
считаю так, комиссию и своп
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как узнать размер комиссии не открывая позицию по инструменту?
fxsaber, 2016.11.08 20:30
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(CurrentPositionTotalCommission());
}
считаю так, комиссию и своп,
*2 потому что при закрытии снимается та же комиссия по второму разу.
А своп снимается 1 раз, его не надо *2. К тому же он нарастает каждый день. Мне кажется их надо отдельно учитывать.
работать не будет с частичным закрытием. Попробуйте
сорри, но я не закрываю частично, наверно поэтому не продумывал этот момент. А Вы разобрались почему не будет считать при частичном закрытии? что там не так?
А Вы разобрались почему не будет считать при частичном закрытии? что там не так?
Так сразу видно - out-сделки не учитываются. Честно говоря, очень и очень не оптимальный код у Вас.
Один HistorySelect чего стоит.