Сначала откомпилировать попробуйте
Сначала откомпилировать попробуйте
Чють подправил
//+------------------------------------------------------------------+ //| CL.mq4 | //| Kopanitskyy Evgeniy | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Kopanitskyy Evgeniy" #property link "https://www.mql5.com" #property version "1.00" #property strict extern datetime bar_time=D'2017.07.11 08:00'; extern double Level=100; extern double LotSize=0.01; extern double AfterComa=0.00001; extern int NormalizaDigi=5;//--- Digits after coma //extern double SHIFT=0; //+--------------------------------------------------- //---------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- int SHIFT=iBarShift(Symbol(),0,bar_time); double HIGHT=iHigh(Symbol(),0,SHIFT); double LOW=iLow(Symbol(),0,SHIFT); double CLOSE=iClose(Symbol(),0,SHIFT); double OPEN=iOpen(Symbol(),0,SHIFT); double normalLevel=Level*Point; double center = HIGHT-((HIGHT-LOW)/2); //Расчёт Уравня double LEVELUP=NormalizeDouble((HIGHT+normalLevel),NormalizaDigi); double LEVELDOWN=NormalizeDouble((LOW-normalLevel),NormalizaDigi); double SELL61_8=NormalizeDouble( (LOW-(((LOW-LEVELDOWN)/23.6)*61.8)),NormalizaDigi); //-------------------------Расчет просадки от центра до уравня для Лонга--------------------- double onePT=(LotSize*AfterComa)/CLOSE; //Стоимость 1 пункта расчёт от центральной оси double Prosadka61_8= (center-SELL61_8)*onePT;// Колличество пунктов от центра до уравня Comment(Symbol()," ",onePT," ",Prosadka61_8); //ExpertRemove(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { } //+------------------------------------------------------------------+
Если знаете ка считать и даже получается посчитать вручную на калькулятора, выводите через принт промежуточные результаты и сверяйтесь с ручным расчетом.
Много непонятного. Вот эта строчка кажется странной:
double SELL61_8=NormalizeDouble( (LOW-(((LOW-LEVELDOWN)/23.6)*61.8)),NormalizaDigi);
Вот эта еще страннее:
double onePT=(LotSize*AfterComa)/CLOSE; //Стоимость 1 пункта расчёт от центральной оси
Если знаете ка считать и даже получается посчитать вручную на калькулятора, выводите через принт промежуточные результаты и сверяйтесь с ручным расчетом.
Много непонятного. Вот эта строчка кажется странной:
Вот эта еще страннее:
Первая строка это расчет уровня по Фибоначчи. от определённой свечи рассчитывается уровень 61.8 вниз. Всё расчеты не могу озвучить так как цифра расчета вписывается в исходные данные
Вторая строка это формула по которой рассчитывают стоимость одного пункта.
LotSize=0.01
AfterComa - количество знаков после запятой по текущей валютной паре.
Close - понятно. Цена закрытия текущей свечи.
Это вроде SYMBOL_DIGITS
Посмотрите через принт промежуточные значения: чему равно onePT, в чем смысл делить CLOSE?
Посмотрите чему равно (center-SELL61_8).
Посмотрите через принт промежуточные значения: чему равно onePT, в чем смысл делить CLOSE?
Посмотрите чему равно (center-SELL61_8).
руками это выглядит вот так
Примеры вычисления стоимости пункта:
Валютная пара: GBPUSD Лот: 10000
Стоимость пункта = (10000*0.0001) / 1 = 1$
Где 10000- Колличество лотов умноженные на колличество знаков после запятой и поделённые на текущую цену. x=(a*b)/c;
В моём случаи я делаю тоже самое
Входные параметры перемножаю и делю на Закрытие свечи и получаю значение в onePT - стоимость одного пункта.
Далее по формуле
double SELL61_8=NormalizeDouble( (LOW-(((LOW-LEVELDOWN)/23.6)*61.8)),NormalizaDigi);
получаю колличество пунктов от точьки входа в рынок и умножаю на стоимость.
double Prosadka61_8= (center-SELL61_8)*onePT;
По идее должно получатся на выходе сумма в единице текущего инструмента.
а получается бог весть что. Не вижу где ошибка :(
Выведите через принт и посмотрите, какие там пункты получаются в SELL61_8 и в (center-SELL61_8)
Выведите через принт и посмотрите, какие там пункты получаются в SELL61_8 и в (center-SELL61_8)
Вот конкретный пример
Здесь явно видно что center - 1.175455 SELL61_8 - 1.17157
отнимаем по формуле и получаем 0,00388 - 388 пунктов просадки.
Как видим отнимание производится не корректно не пойму почему
Вот конкретный пример
Здесь явно видно что center - 1.175455 SELL61_8 - 1.17157
отнимаем по формуле и получаем 0,00388 - 388 пунктов просадки.
Как видим отнимание производится не корректно не пойму почему
1.175455 затем 1.17157, а третье число откуда такое? Оно даже не 0,00388.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В обще написал себе помогатор чтоб определять просадку от уравней фибаначи. Но скрипт щитает невесть что. Калькулятором щитаю всё гуд, формулы точьны, алгаритм выдаёт ересь. Гдето чтото упустил. Гляньте может наведёте меня на мысль.
В сути ввод данных вверху. Вводимые параметры это свечя. И определённый уравень. Протестиравать можно так как есть.