Столкнулся с проблемой
Есть робот, который делал расчет расстояния от цены последней сделки, до предпоследней.
Цену нахожу данным методом
Далее берем и выводим это обычным комментом в трех вариациях на чарт.
Запускаем визуальное тестирование и видим следующую картину
Ждем открытия позиции
В журнале все четко, 1.12070
Но в первых двух случаях ноль обрезался цена 1.1207
В третьем через
Тоже все четко отображается с нулем
Такое происходит только когда цена попадает на целочисленный уровень, ноль обрезается.
Это баг терминала или я что то не так делаю ??????????
А чем отличается 1.1 от 1.10 ?
Или используйте
DoubleToString(pos.last_deal_price,Digits())
А чем отличается 1.1 от 1.10 ?
Или используйте
Встречный вопрос, как мне вычислить расстояние между ценами открытия ордеров
1-я цена по аналогии выше 1.12070
2-я цена 1.12055
1.12070 - 1.12055 = получаем 15п между ценами
А теперь посчитайте получу ли я правильное значение, если мне функция вместо 1.12070 выдает 1.1207
1.1207 - 1.12055 = я получаю иное значение если точно то - 0,0048, которое рушит всю логику работы программы.
просто есть советник, который усредняет позицию к примеру первые 3 ордера он это делает через 100п, далее условия что бы следующие 3 ордера он усреднил через 100, но при открытии каждого добавлял по 50
150 200 250
дак вот, после этого мне нужно узнать, что между последними 2-мя ордерами расстояние 250п
я нахожу цену последнего ордера и цену предпоследнего, согласно направления позиции отнимаю от большего меньшее значение и получаю нужное кол-во, далее его беру и делю на пополам и подставляю роботу как окончательное значение для открытия последующих ордеров.
с обрезанием у котировки нуля, последний этап отваливается.
Может вы знаете иной способ вычислить кол-во пунктов между ценами открытия 2-х ордеров подскажите
- www.mql5.com
Столкнулся с проблемой
Есть робот, который делал расчет расстояния от цены последней сделки, до предпоследней.
Цену нахожу данным методом
Далее берем и выводим это обычным комментом в трех вариациях на чарт.
Запускаем визуальное тестирование и видим следующую картину
Ждем открытия позиции
В журнале все четко, 1.12070
Но в первых двух случаях ноль обрезался цена 1.1207
В третьем через
Тоже все четко отображается с нулем
Такое происходит только когда цена попадает на целочисленный уровень, ноль обрезается.
Это баг терминала или я что то не так делаю ??????????
Попробуйте так получать цену позиции
//+------------------------------------------------------------------+ //| Expert Get position price function | //+------------------------------------------------------------------+ double GetPositionPrice(const string aSymbol) { double price_in = 0; double volume_in = 0; if(PositionSelect(aSymbol)) { ulong pos_id = ulong(PositionGetInteger(POSITION_IDENTIFIER)); if(pos_id > 0) { if(HistorySelectByPosition(pos_id)) { int deals = HistoryDealsTotal(); for(int i = 0; i < deals; i++) { ulong deal_ticket = HistoryDealGetTicket(i); ulong order_ticket = ulong(HistoryDealGetInteger(deal_ticket, DEAL_ORDER)); if(order_ticket > 0) { ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY(HistoryDealGetInteger(deal_ticket, DEAL_ENTRY)); if(deal_entry == DEAL_ENTRY_IN) { double price = HistoryDealGetDouble(deal_ticket, DEAL_PRICE); double volume = HistoryDealGetDouble(deal_ticket, DEAL_VOLUME); price_in += price * volume; volume_in += volume; } } } if(volume_in > 0) { //int digits=int(SymbolInfoInteger(aSymbol, SYMBOL_DIGITS )); return(NormalizeDouble(price_in/volume_in, Digits())); } } else { Print(__FUNCTION__, ": Невозможно получить историю позиции по символу ", aSymbol); } } else { Print(__FUNCTION__, ": Невозможно определить идентификатор позиции по символу ", aSymbol); } } return(0); }
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Почему режется ноль в котировках билд 2470
Konstantin Seredkin, 2020.06.01 11:29
//+------------------------------------------------------------------+ //| Возвращает цену последней сделки текущей позиции | //+------------------------------------------------------------------+ double CurrentPositionLastDealPrice() { int total =0; // Всего сделок в списке выбранной истории string deal_symbol =""; // Символ сделки double deal_price =0.0; // Цена //--- Если история позиции получена if(HistorySelect(pos.time,TimeCurrent()))
При таком вызове запросто может не попасть последняя сделка. Если поставить INT_MAX - будет нормально.
..........
А теперь посчитайте получу ли я правильное значение, если мне функция вместо 1.12070 выдает 1.1207
1.1207 - 1.12055 = я получаю иное значение если точно то - 0,0048, которое рушит всю логику работы программы.
.........
У кого-то лыжи не едут....
Konstantin Seredkin:
с обрезанием у котировки нуля, последний этап отваливается.
Может вы знаете иной способ вычислить кол-во пунктов между ценами открытия 2-х ордеров подскажите
void OnStart() { //--- // _Point = 0.00001 Print(int((1.1125-1.11145)/_Point)); // 104 Print(int((1.11250-1.11145)/_Point)); // 104 }В чем разница не понятно. Есть, или нет последний ноль.
Встречный вопрос, как мне вычислить расстояние между ценами открытия ордеров
1-я цена по аналогии выше 1.12070
2-я цена 1.12055
1.12070 - 1.12055 = получаем 15п между ценами
А теперь посчитайте получу ли я правильное значение, если мне функция вместо 1.12070 выдает 1.1207
1.1207 - 1.12055 = я получаю иное значение если точно то - 0,0048, которое рушит всю логику работы программы.
просто есть советник, который усредняет позицию к примеру первые 3 ордера он это делает через 100п, далее условия что бы следующие 3 ордера он усреднил через 100, но при открытии каждого добавлял по 50
150 200 250
дак вот, после этого мне нужно узнать, что между последними 2-мя ордерами расстояние 250п
я нахожу цену последнего ордера и цену предпоследнего, согласно направления позиции отнимаю от большего меньшее значение и получаю нужное кол-во, далее его беру и делю на пополам и подставляю роботу как окончательное значение для открытия последующих ордеров.
с обрезанием у котировки нуля, последний этап отваливается.
Может вы знаете иной способ вычислить кол-во пунктов между ценами открытия 2-х ордеров подскажите
а что, с двумя классами образования тоже учат программированию советников?)
У меня хоть с нулем, хоть без, считает правильно.
Вот это вообще аут
1.1207 - 1.12055 = я получаю иное значение если точно то - 0,0048.
Автор что, в столбик считал?
У меня хоть с нулем, хоть без, считает правильно.
Вот это вообще аут
1.1207 - 1.12055 = я получаю иное значение если точно то - 0,0048.
Автор что, в столбик считал?
Не наезжайте на чела. Он "в столбик" ещё не умеет! Иначе он такого результата уж точно не получил бы )))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Столкнулся с проблемой
Есть робот, который делал расчет расстояния от цены последней сделки, до предпоследней.
Цену нахожу данным методом
Далее берем и выводим это обычным комментом в трех вариациях на чарт.
Запускаем визуальное тестирование и видим следующую картину
Ждем открытия позиции
В журнале все четко, 1.12070
Но в первых двух случаях ноль обрезался цена 1.1207
В третьем через
DoubleToString()
Тоже все четко отображается с нулем
Такое происходит только когда цена попадает на целочисленный уровень, ноль обрезается.
Это баг терминала или я что то не так делаю ??????????