Ренат, это самый плохой вариант. Если в mql4 есть только ордер и его тикет по которому в истории можно найти всё что надо, то в mql5 есть ордер открывающий позицию, сделка открывающая позицию, сама позиция, ордер закрывающий и сделка закрывающая. Позиции в истории нет. Ни тикета её нет, ни цены, ни времени. И что даст изменение количества открытых позиций? Только головную боль и гемор…
хотя не, вот чуток листинга с моего некогда боевого эксперта, писанного на MQL-5 :
здесь просто принцип - как знать что было до того, и как запинать в массив все необходимые данные
надеюсь остальное дописать не составит труда
Вот именно в этом и есть трудность.
Когда позиция закрылась, её в истории нет, есть только ордера и сделки. Для того чтобы определить. что позиция закрылась по тейку, надо выбрать все сделки относящиеся к этой позиции, определить, что именно эта сделка является закрывающей и только потом определить как она закрыта. Вот и весь гемор. А в функции OnTradeTransaction() сделка уже вот она… Только проверить и определить.
Когда позиция закрылась, её в истории нет, есть только ордера и сделки. Для того чтобы определить. что позиция закрылась по тейку, надо выбрать все сделки относящиеся к этой позиции, определить, что именно эта сделка является закрывающей и только потом определить как она закрыта. Вот и весь гемор. А в функции OnTradeTransaction() сделка уже вот она… Только проверить и определить.
я ведь сказал уже выше
история не нужна, мы ее для себя сделали самостоятельно и как нам надо
и привел пример - как это сделать
не стало позиции с тейк-профитом таким то в массиве по отношению к открытым, вот и все
история не нужна, мы ее для себя сделали самостоятельно и как нам надо
и привел пример - как это сделать
не стало позиции с тейк-профитом таким то в массиве по отношению к открытым, вот и все
в чем трудность то?, не понимаю
Позиция закрылась по стопу «не стало позиции с тейк-профитом таким то в массиве» И что? А надо определить, что позиция закрылась именно по тейку… И никак иначе, не советником или скриптом закрыта, не рукамине по стоп-ауту, а именно по тейку.
Позиция закрылась по стопу «не стало позиции с тейк-профитом таким то в массиве» И что? А надо определить, что позиция закрылась именно по тейку… И никак иначе, не советником или скриптом закрыта, не рукамине по стоп-ауту, а именно по тейку.
да вроде нет :-) (я сам давно еще на это внимание обратил) он сам выборку делает через
DEAL_REASON_TР
, что по ТР закрылась...
"Добрый вечер. Как отследить событие закрытия рыночной позиции по тейку? Только не просто сработка тейка, а уточнение какой тип позиции закрылся (покупка или продажа).
Я пользуюсь своими классами для написания кода. В общем, прилагаю метод из своего класса, чтобы пояснить что у меня написано:
//=======================================================================================================================================================================================================// Возвращает true, если позиция согласно данных в реализованной сделке закрылась по Take-Profit, иначе false. ==========================================================================================bool Event :: isPositionAcquireTP(constMqlTradeTransaction& transaction, // Транзакцияconst SymbolInstance *ptrSymbol, // Указатель на класс свойств торгового инструментаconstulong magic) { // Magic number позиции//---if (transaction.type == TRADE_TRANSACTION_DEAL_ADD) {
if (!historyDeals.choiceDealPrimary(ptrSymbol.getName(), magic, transaction.deal))
returnfalse;
if (historyDeals.selectedHistoryDealEntry(transaction.deal) == DEAL_ENTRY_OUT) {
if (historyDeals.selectedHistoryDealReason(transaction.deal) == DEAL_REASON_TP)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
В MT5 позиция может закрываться частично по TP/SL.
Например, позиция на 10 лотов закрывается так:
В MT5 позиция может закрываться частично по TP/SL.
Например, позиция на 10 лотов закрывается так:
Остальное - по стопаут :)
Точно! Забыл.
Ренат, это самый плохой вариант. Если в mql4 есть только ордер и его тикет по которому в истории можно найти всё что надо, то в mql5 есть ордер открывающий позицию, сделка открывающая позицию, сама позиция, ордер закрывающий и сделка закрывающая. Позиции в истории нет. Ни тикета её нет, ни цены, ни времени. И что даст изменение количества открытых позиций? Только головную боль и гемор…
хотя не, вот чуток листинга с моего некогда боевого эксперта, писанного на MQL-5 :
ArrayResize(Buys,0);
ArrayResize(Sells,0);
idxBuy=-1;
idxSell=-1;
for(i=OR-1; i>=0; i--)
{
tktOr=(int)PositionGetTicket(i);
if(PositionGetString(POSITION_SYMBOL)==_Symbol)
{
profitOr=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_COMMISSION)+PositionGetDouble(POSITION_SWAP);
lotOr=NormalizeDouble(PositionGetDouble(POSITION_VOLUME),LS);
priceOr=NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),DGT);
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
idxSell=idxSell+1;
ArrayResize(Sells,idxSell+1);
Sells[idxSell,0]=lotOr;
Sells[idxSell,1]=priceOr;
Sells[idxSell,2]=tktOr;
Sells[idxSell,3]=profitOr;
}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
idxBuy=idxBuy+1;
ArrayResize(Buys,idxBuy+1);
Buys[idxBuy,0]=lotOr;
Buys[idxBuy,1]=priceOr;
Buys[idxBuy,2]=tktOr;
Buys[idxBuy,3]=profitOr;
}
}
}
lenBuys=ArraySize(Buys)/4;
if(lenBuys>0)ArraySort(Buys);
lenSells=ArraySize(Sells)/4;
if(lenSells>0)ArraySort(Sells);
for (iSell=0; iSell<=lenSells-1; iSell++)
{
for(iBuy=0; iBuy<=lenBuys-1; iBuy++)
{
Вот и сравнивай то что было и то что есть
История не нужна
;)
хотя не, вот чуток листинга с моего некогда боевого эксперта, писанного на MQL-5 :
И в какой строке определяется что позиция закрылась по ТР?
И в какой строке определяется что позиция закрылась по ТР?
здесь просто принцип - как знать что было до того, и как запинать в массив все необходимые данные
надеюсь остальное дописать не составит труда
здесь просто принцип - как знать что было до того, и как запинать в массив все необходимые данные
надеюсь остальное дописать не составит труда
Вот именно в этом и есть трудность.
Когда позиция закрылась, её в истории нет, есть только ордера и сделки. Для того чтобы определить. что позиция закрылась по тейку, надо выбрать все сделки относящиеся к этой позиции, определить, что именно эта сделка является закрывающей и только потом определить как она закрыта. Вот и весь гемор. А в функции OnTradeTransaction() сделка уже вот она… Только проверить и определить.
Вот именно в этом и есть трудность.
Когда позиция закрылась, её в истории нет, есть только ордера и сделки. Для того чтобы определить. что позиция закрылась по тейку, надо выбрать все сделки относящиеся к этой позиции, определить, что именно эта сделка является закрывающей и только потом определить как она закрыта. Вот и весь гемор. А в функции OnTradeTransaction() сделка уже вот она… Только проверить и определить.
я ведь сказал уже выше
история не нужна, мы ее для себя сделали самостоятельно и как нам надо
и привел пример - как это сделать
не стало позиции с тейк-профитом таким то в массиве по отношению к открытым, вот и все
в чем трудность то?, не понимаю
я ведь сказал уже выше
история не нужна, мы ее для себя сделали самостоятельно и как нам надо
и привел пример - как это сделать
не стало позиции с тейк-профитом таким то в массиве по отношению к открытым, вот и все
в чем трудность то?, не понимаю
Позиция закрылась по стопу «не стало позиции с тейк-профитом таким то в массиве» И что? А надо определить, что позиция закрылась именно по тейку… И никак иначе, не советником или скриптом закрыта, не руками не по стоп-ауту, а именно по тейку.
Позиция закрылась по стопу «не стало позиции с тейк-профитом таким то в массиве» И что? А надо определить, что позиция закрылась именно по тейку… И никак иначе, не советником или скриптом закрыта, не руками не по стоп-ауту, а именно по тейку.
да вроде нет :-) (я сам давно еще на это внимание обратил) он сам выборку делает через
DEAL_REASON_TР, что по ТР закрылась...
"Добрый вечер. Как отследить событие закрытия рыночной позиции по тейку? Только не просто сработка тейка, а уточнение какой тип позиции закрылся (покупка или продажа).
Я пользуюсь своими классами для написания кода. В общем, прилагаю метод из своего класса, чтобы пояснить что у меня написано: