Функция: Как посчитать количество открытых сделок на Хеджевом и Неттинговом счете 1 функцией, без выбора типа счета? РЕШЕНО
Решение пока только одно, это явно вычислять количество по типу счета
int CurrentPositionTotalDeals(string comment="",string symb="") { if(symb=="")symb=_Symbol; int total =0; // Всего сделок в списке выбранной истории int count =0; // Счетчик сделок по символу позиции string deal_symbol =""; // символ сделки //--- Если история позиции получена if(AccountInfoInteger(ACCOUNT_MARGIN_MODE)!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) { long ID=PositionGetInteger(POSITION_IDENTIFIER); if(HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60)) { //--- Получим количество сделок в полученном списке total=HistoryDealsTotal(); //--- Пройдем по всем сделкам в полученном списке for(int i=0; i<total; i++) { //--- Получим символ сделки deal_symbol=HistoryDealGetString(HistoryDealGetTicket(i),DEAL_SYMBOL); //--- Если символ сделки и текущий символ совпадают, увеличим счетчик if(deal_symbol==symb && (StringFind(HistoryDealGetString(HistoryDealGetTicket(i),DEAL_COMMENT),comment)!=-1 || comment=="")) { count++; // Print("total="+total+" CurrentPositionTotalDeals "+i+" count="+count+" comment="+HistoryDealGetString(HistoryDealGetTicket(i),DEAL_COMMENT)+" time="+PositionGetInteger(POSITION_TIME)+" pos ticket="+PositionGetInteger(POSITION_IDENTIFIER)+" ticket="+HistoryDealGetTicket(i)); } } } } if(AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) { int PosTotal=PositionsTotal(); for(int i=PosTotal-1;i>=0;i--) { if(PositionSelectByTicket(PositionGetTicket(i))==true && PositionGetSymbol(i)==symb && (StringFind(PositionGetString(POSITION_COMMENT),comment)!=-1 || comment=="")) { count++; } } } return(count); }
кстати вот что еще интересно по 2 разным счетам.
комиссия на неттинговом счете - больше чем на хеджевом :-)
Хеджевый счет:
Total Trades: | 43 |
Total Deals: | 86 |
Commission | Swap | Profit | Balance |
-3.02 | -0.01 | 22.33 | 10 019.30 |
Total Trades: | 36 |
Total Deals: | 79 |
Commission | Swap | Profit | Balance |
-3.05 | -0.01 | 22.33 | 10 019.27 |

- www.mql5.com
PositionsTotal()
гениально. а теперь попробуйте ту же функцию использовать на неттинговом счете
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция,
это значит что PositionsTotal - вернет 1
а мне нужно реальное количество сделок.
А лучше под хэдж-счета писать на идеально для этого подходящем MQL4.
не согласен. в мт5 теперь есть и неттинг и хеджинг. Это значит, что эксперт должен работать и на хеджевом счете и на неттинговом счете - одинаково.
в принципе, функция которую я приложил в втором сообщении подходит, это единственное решение пока что. Но мало ли, может кто-то использует другую функцию
Тогда это никак не согласуется с названием ветки "Количество позиций на Хеджевом и Неттинговом счете".
Напишите понятно, что Вам нужно.
PositionsTotal()
Это общее количество по всем символам. А задача, как я понимаю, отсеять позиции по одному символу.
На неттинговом счёте на одну позицию повлияли несколько сделок и ордеров, а на хежде каждая позиция отдельно. Мне кажется другого способа нет. Только условие по типу счёта и соответствующий алгоритм подсчёта.
Это общее количество по всем символам. А задача, как я понимаю, отсеять позиции по одному символу.
На неттинговом счёте на одну позицию повлияли несколько сделок и ордеров, а на хежде каждая позиция отдельно. Мне кажется другого способа нет. Только условие по типу счёта и соответствующий алгоритм подсчёта.
Спасибо, это единственный вариант на данный момент
кстати вот что еще интересно по 2 разным счетам.
комиссия на неттинговом счете - больше чем на хеджевом :-)
Хеджевый счет:
Total Trades: | 43 |
Total Deals: | 86 |
Commission | Swap | Profit | Balance |
-3.02 | -0.01 | 22.33 | 10 019.30 |
Total Trades: | 36 |
Total Deals: | 79 |
Commission | Swap | Profit | Balance |
-3.05 | -0.01 | 22.33 | 10 019.27 |
не согласен. в мт5 теперь есть и неттинг и хеджинг. Это значит, что эксперт должен работать и на хеджевом счете и на неттинговом счете - одинаково.
извините но я не понимаю Вашего поста? разницы где не будет? какого написания? написания по готовым классам? или разница между мт4 и мт5?
по готовым классам? понятное дело, там уже все написано до Вас. а если с 0 ?
извините но я не понимаю Вашего поста? разницы где не будет? какого написания? написания по готовым классам? или разница между мт4 и мт5?
по готовым классам? понятное дело, там уже все написано до Вас. а если с 0 ?
Любая ТС при очередном вызове опрашивает с нуля полное торговое окружение. Это же делает после любой торговой операции.
Какие проблемы на MQL4-функциях написать нетто-советник?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет,
работаю с хеджевыми счетам, столкнулся с проблемой как узнать количество текущих позиций на 2 счетах - одной функцией.
есть функция:
на неттинговом счете она работает нормально, считает количество сделок из истории по текущему символу
но на хеджевом она "подглючивает"
на картинке видно, что в комментарий я добавляю номер текущей позиции(чтобы видеть что и как)
так вот например при 5 октрытии дополнительной сделки - почему функция CurrentPositionTotalDeals возвращает не 5 а 4, Т.е.
первая красная линия там должен уже быть номер 5, но функция CurrentPositionTotalDeals теряет одну сделку.
с помощью принтов видно что он уже не берет в внимание первую сделку
2016.10.06 13:24:16.602 2016.01.05 11:00:18 total=4 CurrentPositionTotalDeals 3 count=4 comment=THE X Averager Num4 time=1451984420 pos ticket=16 ticket=19 2016.10.06 13:24:16.602 2016.01.05 11:00:18 total=4 CurrentPositionTotalDeals 2 count=3 comment=THE X Averager Num4 time=1451984420 pos ticket=16 ticket=18 2016.10.06 13:24:16.602 2016.01.05 11:00:18 total=4 CurrentPositionTotalDeals 1 count=2 comment=THE X Averager Num3 time=1451984420 pos ticket=16 ticket=17 2016.10.06 13:24:16.602 2016.01.05 11:00:18 total=4 CurrentPositionTotalDeals 0 count=1 comment=THE X Averager Num2 time=1451984420 pos ticket=16 ticket=16
Кто какие функции использует для подсчета количества позиций?
РЕШЕНИЕ:
РЕШЕНИЕ 2
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Функция: Как посчитать количество открытых сделок на Хеджевом и Неттинговом счете 1 функцией, без выбора типа счета? РЕШЕНО
Alexey Viktorov, 2016.10.06 14:35
Попробуй этот вариант на неттинге. На хедже работает.