Что-то не пойму, как запросить програмно, какой цене торгового
инструмента соответствует уровень, например,38,2 натянутого
на волну объекта уровней фибоначчи? Есть способ, или надо рассчитывать
самому? Начал делать скрипт, дошёл до ObjectGet() и словно в ступор
вошёл. Может кто разъяснит?
- Глупые вопросы от Fduch
- Канал Фибоначчи. Нужна помощь
- Будущее пересечение трендовой линии и уровня фибо.
Странно, у меня такая мысль не возникала. Хотя она вполне естественна.
Я - просто считаю. Хотя логично было бы что-то типа
Pr2 = ObjectGet( "1", OBJPROP_FIRSTLEVEL+1 );Но эта конструкция дает только сами Фибы, т.е. пропорции, а не цены...
Просто рассчитать уровень и все.
void FIBO_calculate() { int digits = MarketInfo(Symbol(),MODE_DIGITS); double bid=MarketInfo(Symbol(),MODE_BID); //текущая цена Bid High_day=iHigh(NULL,1440,0); //максимум текущего дня Low_day=iLow(NULL,1440,0); //минимум текущего дня middle_day=NormalizeDouble((High_day + Low_day)/2,digits);//среднее текущего дня Shi_Fibo = MathRound((High_day - Low_day)/Point); //ширина ФИБО дня if(bid > middle_day) {UP_trend=1; DN_trend=0;} //тенденция вверх else {UP_trend=0; DN_trend=1;} //тенденция вниз //рассчитаем уровни ФИБО Fibo25 = NormalizeDouble(Low_day + (High_day - Low_day)*0.25, digits); Fibo38 = NormalizeDouble(Low_day + (High_day - Low_day)*0.382,digits); Fibo50 = middle_day; Fibo62 = NormalizeDouble(Low_day + (High_day - Low_day)*0.618,digits); Fibo75 = NormalizeDouble(Low_day + (High_day - Low_day)*0.75, digits); }
Спасибо парни. Понял.
Предложение к разработчикам. Предлагаю ввести в язык функцию, которая будет возвращать цену инструмента, соответствующую уровню фибоначчи, указанному в её параметрах.
// ------------- PriceLevelFiboUp() ---------------------------------------------------------------- // На вход функции постпуает уровень фибо, напр. 61,8 // функция возвращает его цену по данной валютной паре // В переменные Price_0 и Price_100 подают заранее вычисленную цену нулевого и сотого уровней фибо // Если на вход подан нкорректный Level, то функция вернёт -1 //--------------------------------------------------------------------------------- double PriceLevelFiboUp(double Level,double Price_0,double Price_100){ double Rst=0,Price=-1; string SMB=Symbol(),FunctionName="PriceLevelFiboUp()"; if(Price_0>=Price_100){ Print("Ошибка. В переменные Price_0 и Price_100 поданы некорректные цены = ",Price_0," и ",Price_100); Print("==================== ",FunctionName," ===================="); return(Price); } int DGS=MarketInfo(SMB,MODE_DIGITS); Rst=Price_100-Price_0; if(Level==0){ Price=NormalizeDouble(Price_0,DGS); } if(Level==23.6){ Price=NormalizeDouble(Price_0+Rst*0.236,DGS); } if(Level==38.2){ Price=NormalizeDouble(Price_0+Rst*0.382,DGS); } if(Level==50){ Price=NormalizeDouble(Price_0+Rst*0.5,DGS); } if(Level==61.8){ Price=NormalizeDouble(Price_0+Rst*0.618,DGS); } if(Level==100){ Price=NormalizeDouble(Price_100,DGS); } if(Level==123.6){ Price=NormalizeDouble(Price_0+Rst*1.236,DGS); } if(Level==138.2){ Price=NormalizeDouble(Price_0+Rst*1.382,DGS); } if(Level==150){ Price=NormalizeDouble(Price_0+Rst*1.5,DGS); } if(Level==161.8){ Price=NormalizeDouble(Price_0+Rst*1.618,DGS); } if(Level==180.9){ Price=NormalizeDouble(Price_0+Rst*1.809,DGS); } if(Level==200){ Price=NormalizeDouble(Price_0+Rst*2.000,DGS); } if(Level==223.6){ Price=NormalizeDouble(Price_0+Rst*2.236,DGS); } if(Level==238.2){ Price=NormalizeDouble(Price_0+Rst*2.382,DGS); } if(Level==250){ Price=NormalizeDouble(Price_0+Rst*2.5,DGS); } if(Level==261.8){ Price=NormalizeDouble(Price_0+Rst*2.618,DGS); } if(Level==280.9){ Price=NormalizeDouble(Price_0+Rst*2.809,DGS); } if(Level==300){ Price=NormalizeDouble(Price_0+Rst*3.000,DGS); } if(Level==323.6){ Price=NormalizeDouble(Price_0+Rst*3.236,DGS); } if(Level==338.2){ Price=NormalizeDouble(Price_0+Rst*3.382,DGS); } if(Level=350){ Price=NormalizeDouble(Price_0+Rst*3.5,DGS); } if(Level==361.8){ Price=NormalizeDouble(Price_0+Rst*3.618,DGS); } if(Level==380.9){ Price=NormalizeDouble(Price_0+Rst*3.809,DGS); } if(Level==400){ Price=NormalizeDouble(Price_0+Rst*4.000,DGS); } if(Level==423.6){ Price=NormalizeDouble(Price_0+Rst*4.236,DGS); } return(Price); } //--------------------------------------------------------------------------------- // ------------- PriceLevelFiboDown() ---------------------------------------------------------------- // На вход функции постуает уровень фиоб, напр. 61,8 // функция возвращает его цену по данной валютной паре // В переменные Price_0 и Price_100 подают заранее вычисленную цену нулевого и сотого уровней фибо // Причём Price_0 > Price_100 // Если на вход подан нкорректный Level, то функция вернёт -1 //--------------------------------------------------------------------------------- double PriceLevelFiboDown(double Level,double Price_0,double Price_100){ double Rst=0,Price=-1; string SMB=Symbol(),FunctionName="PriceLevelFiboDown()"; if(Price_0<=Price_100){ Print("Ошибка. В переменные Price_0 и Price_100 поданы некорректные цены = ",Price_0," и ",Price_100); Print("==================== ",FunctionName," ===================="); return(Price); } int DGS=MarketInfo(SMB,MODE_DIGITS); Rst=Price_0-Price_100; if(Level==0){ Price=NormalizeDouble(Price_0,DGS); } if(Level==23.6){ Price=NormalizeDouble(Price_0-Rst*0.236,DGS); } if(Level==38.2){ Price=NormalizeDouble(Price_0-Rst*0.382,DGS); } if(Level==50){ Price=NormalizeDouble(Price_0-Rst*0.5,DGS); } if(Level==61.8){ Price=NormalizeDouble(Price_0-Rst*0.618,DGS); } if(Level==100){ Price=NormalizeDouble(Price_100,DGS); } if(Level==123.6){ Price=NormalizeDouble(Price_0-Rst*1.236,DGS); } if(Level==138.2){ Price=NormalizeDouble(Price_0-Rst*1.382,DGS); } if(Level==150){ Price=NormalizeDouble(Price_0-Rst*1.5,DGS); } if(Level==161.8){ Price=NormalizeDouble(Price_0-Rst*1.618,DGS); } if(Level==180.9){ Price=NormalizeDouble(Price_0-Rst*1.809,DGS); } if(Level==200){ Price=NormalizeDouble(Price_0-Rst*2.000,DGS); } if(Level==223.6){ Price=NormalizeDouble(Price_0-Rst*2.236,DGS); } if(Level==238.2){ Price=NormalizeDouble(Price_0-Rst*2.382,DGS); } if(Level==250){ Price=NormalizeDouble(Price_0-Rst*2.5,DGS); } if(Level==261.8){ Price=NormalizeDouble(Price_0-Rst*2.618,DGS); } if(Level==280.9){ Price=NormalizeDouble(Price_0-Rst*2.809,DGS); } if(Level==300){ Price=NormalizeDouble(Price_0-Rst*3.000,DGS); } if(Level==323.6){ Price=NormalizeDouble(Price_0-Rst*3.236,DGS); } if(Level==338.2){ Price=NormalizeDouble(Price_0-Rst*3.382,DGS); } if(Level=350){ Price=NormalizeDouble(Price_0-Rst*3.5,DGS); } if(Level==361.8){ Price=NormalizeDouble(Price_0-Rst*3.618,DGS); } if(Level==380.9){ Price=NormalizeDouble(Price_0-Rst*3.809,DGS); } if(Level==400){ Price=NormalizeDouble(Price_0-Rst*4.000,DGS); } if(Level==423.6){ Price=NormalizeDouble(Price_0-Rst*4.236,DGS); } return(Price); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь