Как автоматически определить сколько пипсов в 1 пункте для любых котировок?

 

Здравствуйте, не могу решить проблему, хочу установить круглые уровни например с заданной дистанцией, но так чтобы на любом графике дистанция сама добавляла/убавляла 0, будь то 4х или 5 знак, с голдой проблемы например с двух и трёх знаком, помогите решить задачу плизз!!!
Для Йены например с тремя знаками 1000 пипсов, а для голды с тремя знаками это уже 10000 пипсов

 

Самый простой путь - завести специальный настроечный параметр, который указывает множитель для пунктов.

Если же обязательно делать это автоматически, то потребуется создание небольшой БД, в которой будут перечислены названия символов и ожидаемая характеристика. Что-то вроде такого: EURUSD - 0.0001 (это четырехзнак; далее делим ожидаемое значение на реально полученное из Point(), так и получаем множитель). Минус подобного подхода - необходимость поддержки БД, т. к. сразу все символы не получится учесть.

 
Maksim Mihajlov:

Здравствуйте, не могу решить проблему, хочу установить круглые уровни например с заданной дистанцией, но так чтобы на любом графике дистанция сама добавляла/убавляла 0, будь то 4х или 5 знак, с голдой проблемы например с двух и трёх знаком, помогите решить задачу плизз!!!
Для Йены например с тремя знаками 1000 пипсов, а для голды с тремя знаками это уже 10000 пипсов

В одном пункте - один пункт. 1-н сленговый "пипс" равен 1-у пункту.

Ссылка для просветления.

Что Вы подразумеваете под термином пипс (pips) ? При пятизначной котировке.
Что Вы подразумеваете под термином пипс (pips) ? При пятизначной котировке.
  • 2019.09.23
  • www.mql5.com
пипс - это 4-й знак котировки. (1 пипс = 10 пунктам), пипс - это 5-й знак котировки...
 
Maksim Mihajlov:

Здравствуйте, не могу решить проблему, хочу установить круглые уровни например с заданной дистанцией, но так чтобы на любом графике дистанция сама добавляла/убавляла 0, будь то 4х или 5 знак, с голдой проблемы например с двух и трёх знаком, помогите решить задачу плизз!!!
Для Йены например с тремя знаками 1000 пипсов, а для голды с тремя знаками это уже 10000 пипсов

Задавайте параметр в процентах %

 
Vitaly Muzichenko:

Задавайте параметр в процентах %

% от цены? тогда же они не круглые получатся.

Как вариант решения задачи для практической торговли - исходить из цены пункта на минлот, т.к. по сути нам пункт только затем и нужен чтобы определить возможные прибыль/убыток.

Тогда круглые урвони д.б. такие чтобы давали прибыль/убыток одного порядка, если отличие на порядок- применим множитель.

 

Я уже пробовал как то делать привязку к АТР, попробовал вроде норм. получается, просто результат не совсем надёжный, но в большинстве случаев будет правильно определять.
Просто думал может есть точная формула определения сколько пипсов в пункте.

 

Еще бы определиться, что такое "пункт", а что такое "пипс", а то ведь каждый под этим понимает что-то свое.

Лично я - задаю проценты, как тут уже предлагалось.

И, как правило, привязываюсь к дневному ATR(25) - это достаточно надежный и медленно изменяющийся параметр.

 
Georgiy Merts:

Еще бы определиться, что такое "пункт", а что такое "пипс", а то ведь каждый под этим понимает что-то свое.

Лично я - задаю проценты, как тут уже предлагалось.

Объясните пожалуйста по подробнее, с примером если можно!
За ранее спасибо!

 
Maksim Mihajlov:

Объясните пожалуйста по подробнее, с примером если можно!
За ранее спасибо!

Ну что там сложного-то ?

Берем размер дневного ATR(25), на евродолларе сейчас это 0,0045, и все ценовые величины внутри эксперта задаем в процентах от этой величины.

Скажем, СЛ - 30% от дневного ATR, а внутри эксперта на евродолларе эта величина будет преобразована в 135 пятизначных пунктов.

Если символ другой, скажем, иенадоллар, то там эта же цифра будет преобразована в 150 трехзначных пунктов, поскольку дневной ATR(25) на иенадолларе равен 0,5

 
Понял, спасибо, всё тот же АТР! )
 

Предполагаю, что Вы спрашивали это:

//перевод из старых пунктов в пункты текущего счёта
int ConvertFromOldPoints(double ePoints, string eSymbol)
   {
   int eFactor;
   int eDigits=(int)SymbolInfoInteger(eSymbol,SYMBOL_DIGITS);
   //если это форекс и количество знаков после запятой нечётное, тогда домножаем на 10
   #ifdef __MQL4__
      eFactor=(MarketInfo(eSymbol,MODE_MARGINCALCMODE)==0 && MarketInfo(eSymbol,MODE_PROFITCALCMODE)==0 && eDigits%2==1)?10:1;
   #else
      eFactor=((SymbolInfoInteger(eSymbol,SYMBOL_TRADE_CALC_MODE)==SYMBOL_CALC_MODE_FOREX || SymbolInfoInteger(eSymbol,SYMBOL_TRADE_CALC_MODE)==SYMBOL_CALC_MODE_FOREX_NO_LEVERAGE) && eDigits%2==1)?10:1;
   #endif 
   return((int)(ePoints*eFactor+0.5));
   }

Во входных параметрах Вашей программы указывайте величины 4-х значной котировки. А эта функция будет переводить эти величины в зависимости от точности котировки Вашего счёта:

input double Distance=20.5;

.......

int CountDistance=ConvertFromOldPoints(Distance,Symbol());

//результат может быть 21 в 4-х знаке или 205 в 5-ти знаке 



Причина обращения: