А нашел. надо оказывается сначала сделать - HistorySelectByPosition( position );
Про комиссии и свопы всё равно не понятно, они включены в профит или нет. В History они отдельно показываются.
И как вы ловите Начало и Конец сделки ?
А нашел. надо оказывается сначала сделать - HistorySelectByPosition( position );
Про комиссии и свопы всё равно не понятно, они включены в профит или нет. В History они отдельно показываются.
И как вы ловите Начало и Конец сделки ?
Не могу достать профит и время закрытия сделки. Вот так я ловлю открытие и закрытие сделки.
Как достать тикет ? И как достать профит ?
Внимательно почитайте документацию по OnTradeTransaction() в частности по типам транзакций. Отловите тип транзакции TRADE_TRANSACTION_DEAL_ADD, затем отловите закрытие позиции DEAL_ENTRY_OUT и по тикету этой сделки получите профит, своп и комиссию. Но не забывайте, что комиссия берётся не только при закрытии позиции, но и при открытии…
DEAL_ENTRY_OUT в onTradeTransaction не появляется никак.
В истории в списке Deal есть Type IN и OUT. . https://i.imgur.com/6jsBCO0.png
Вот как тут их достать . В переменых trans, request, result оно не появляется. А так это хорошие ориентиры для входа и выхода.
void OnTradeTransaction(const MqlTradeTransaction & trans, const MqlTradeRequest & request, const MqlTradeResult & result)
Не могу достать профит и время закрытия сделки. Вот так я ловлю открытие и закрытие сделки.
Как достать тикет ? И как достать профит ?
Внимательно почитайте документацию по OnTradeTransaction() в частности по типам транзакций. Отловите тип транзакции TRADE_TRANSACTION_DEAL_ADD, затем отловите закрытие позиции DEAL_ENTRY_OUT и по тикету этой сделки получите профит, своп и комиссию. Но не забывайте, что комиссия берётся не только при закрытии позиции, но и при открытии…
Здесь для вас все есть - см. также CTrade().
2 Alexey Viktorov #: ему другое надо: Как достать тикет ? И как достать профит ?
- www.mql5.com
Не могу достать профит и время закрытия сделки. Вот так я ловлю открытие и закрытие сделки.
Как достать тикет ? И как достать профит ?
вот свежак читаете и достаете через перебор в цикле по позициям.....
- www.mql5.com
Не могу достать профит и время закрытия сделки. Вот так я ловлю открытие и закрытие сделки.
Как достать тикет ? И как достать профит ?
вот в примере есть
в примере - аналогично и тикет и профит и комиссию и своп ловите...
ниже там на страничке смотрите
/+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- запрашиваем историю сделок и ордеров if(!HistorySelect(0, TimeCurrent())) { Print("HistorySelect() failed. Error ", GetLastError()); return; } //--- в цикле по списку сделок в истории счёта int total=HistoryDealsTotal(); for(int i=0; i<total; i++) { //--- получаем тикет очередной сделки (сделка автоматически выбирается для получения её свойств) ulong ticket=HistoryDealGetTicket(i); if(ticket==0) continue; //--- получаем тип и направление сделки и выводим заголовок для списка вещественных свойств выбранной сделки string type=DealTypeDescription((ENUM_DEAL_TYPE)HistoryDealGetInteger(ticket, DEAL_TYPE)); string entry=DealEntryDescription((ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticket, DEAL_ENTRY)); PrintFormat("Double properties of an deal %s entry %s #%I64u:", type, entry, ticket); //--- распечатываем под заголовком все вещественные свойства выбранной сделки HistoryDealPropertiesDoublePrint(ticket, 12); }
- www.mql5.com
Не могу достать профит и время закрытия сделки. Вот так я ловлю открытие и закрытие сделки.
Как достать тикет ? И как достать профит ?
https://www.mql5.com/ru/docs/trading/historyselect
ловля профита:
void OnStart() { color BuyColor =clrBlue; color SellColor=clrRed; //--- request trade history HistorySelect(0,TimeCurrent()); //--- create objects string name; uint total=HistoryDealsTotal(); ulong ticket=0; double price; double profit; datetime time; string symbol; long type; long entry; //--- for all deals for(uint i=0;i<total;i++) { //--- try to get deals ticket if((ticket=HistoryDealGetTicket(i))>0) { //--- get deals properties price =HistoryDealGetDouble(ticket,DEAL_PRICE); time =(datetime)HistoryDealGetInteger(ticket,DEAL_TIME); symbol=HistoryDealGetString(ticket,DEAL_SYMBOL); type =HistoryDealGetInteger(ticket,DEAL_TYPE); entry =HistoryDealGetInteger(ticket,DEAL_ENTRY); profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); //--- only for current symbol if(price && time && symbol==Symbol()) { //--- create price object name="TradeHistory_Deal_"+string(ticket); if(entry) ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,time,price,0,0); else ObjectCreate(0,name,OBJ_ARROW_LEFT_PRICE,0,time,price,0,0); //--- set object properties ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0); ObjectSetInteger(0,name,OBJPROP_BACK,0); ObjectSetInteger(0,name,OBJPROP_COLOR,type?BuyColor:SellColor); if(profit!=0) ObjectSetString(0,name,OBJPROP_TEXT,"Profit: "+string(profit)); } } } //--- apply on chart ChartRedraw(); }
и два
тикет как ловить
- www.mql5.com
Как вы любите усложнять себе жизнь. Вот это из моего советника. Всё лишнее удалено…
void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if(trans.type == TRADE_TRANSACTION_DEAL_ADD) { HistoryDealSelect(trans.deal); if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN) { // Что-то делаем тут, если позиция открылась… } if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_OUT) { // Что-то делаем тут, если позиция закрылась… } } }/******************************************************************/Профит может быть только в сделке DEAL_ENTRY_OUT…
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу достать профит и время закрытия сделки. Вот так я ловлю открытие и закрытие сделки.
Как достать тикет ? И как достать профит ?