Вопрос к асам программирования - Как програмно найти уровни???

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Martingeil
1171
Martingeil  

Я только начинаю изучать язык мкл. Прошу сильно не пинать.

У меня вопрос есть уровень к примеру

Х = 1.12654; я хочу прибавить к этому уровню Y= 0.00250; пунктов, итд к каждому новому уровню прибавляем пункты Y. Получаем сетку уровней.

S1,S2,S3,S4,S5 ......S100

Вопрос как можно программно вычислить эти уровни, не расписывая каждый его по отдельности.

К примеру цена Bid подошла к уровню S57 или к уровню S92 - как сделать проще, или есть какой нибудь пример уже реализованный.

Помогите пожалуйста, я уже неделю ломаю голову, вы тоже были когда то начинающими программистами, надеюсь на вашу помощь. Спасибо.

Vladimir Karputov
Модератор
194422
Vladimir Karputov  

Посмотрите пример использования функций:

  • MathCeil - возвращает ближайшее сверху целое числовое значение;
  • MathRound - округляет число до ближайшего целого;
  • MathFloor - возвращает ближайшее снизу целое числовое значение.

в коде MathCeilRoundFloor. Это чтобы сначала понять как производятся округления и как получить ближайшее сверху, снизу или просто ближайшее значение.


Потом это пригодится для расчёта уровней.

Vladimir Karputov
Модератор
194422
Vladimir Karputov  

И пример расчёта уровней в коде Renko Level

Расчет ближайшей границы осуществляется по следующей схеме:

Renko level

Martingeil
1171
Martingeil  
Vladimir Karputov:

Посмотрите пример использования функций:

  • MathCeil - возвращает ближайшее сверху целое числовое значение;
  • MathRound - округляет число до ближайшего целого;
  • MathFloor - возвращает ближайшее снизу целое числовое значение.

в коде MathCeilRoundFloor. Это чтобы сначала понять как производятся округления и как получить ближайшее сверху, снизу или просто ближайшее значение.


Потом это пригодится для расчёта уровней.

Спасибо, я не знал что можно так округлять, пойду почитаю про эти функции.
Martingeil
1171
Martingeil  
Vladimir Karputov:

И пример расчёта уровней в коде Renko Level

Расчет ближайшей границы осуществляется по следующей схеме:

А на языке МКЛ 4 нет? я изучаю Мкл4. Мкл 5 для меня будущий этап после МКЛ4.
Vladimir Karputov
Модератор
194422
Vladimir Karputov  
Lehfr:
А на языке МКЛ 4 нет? я изучаю Мкл4. Мкл 5 для меня будущий этап после МКЛ4.

Это форум MQL5, поэтому ВЫ получили ответ для MQL5. Вопросы по старому терминалу обсуждаются в спец. разделе MQL4 и MetaTrader 4

Martingeil
1171
Martingeil  
Vladimir Karputov:

Это форум MQL5, поэтому ВЫ получили ответ для MQL5. Вопросы по старому терминалу обсуждаются в спец. разделе MQL4 и MetaTrader 4

Извините, я плохо ориентируюсь на этом форуме вроде находишься на МТ4 потом стоит переключится и обновить страницу ты уже на МТ5.

Но вы мне очень помогли ваша функция 

MathCeilRoundFloor  - я ее изучаю она как раз мне подходит

можно вопрос как из нее вытащить уровень который находится рядом с ценой Бид?

  double price=1.01561;
   Print("\n","Start price: ",DoubleToString(price,5));
   for(int i=0;i<10;i++)
     {
      Print("MathCeil(",DoubleToString(price,5),") ->  ",MathCeil(price));
      Print("MathRound(",DoubleToString(price,5),") ->  ",MathRound(price));
      Print("MathFloor(",DoubleToString(price,5),") ->  ",MathFloor(price));
      Print("");
      price+=1.9;
     }

if(Bid == price) open = 1; else open = 0; <<<---- так будет правильно?

Martingeil
1171
Martingeil  
Lehfr:

Извините, я плохо ориентируюсь на этом форуме вроде находишься на МТ4 потом стоит переключится и обновить страницу ты уже на МТ5.

Но вы мне очень помогли ваша функция 

MathCeilRoundFloor  - я ее изучаю она как раз мне подходит

можно вопрос как из нее вытащить уровень который находится рядом с ценой Бид?

if(Bid == price) open = 1; else open = 0; <<<---- так будет правильно?

Кто нибудь знает как теперь узнать, что цена находится рядом с этим уровнем. 

void OnStart()
  {
//---
   double price=1.2;
   Print("\n","Start price: ",DoubleToString(price,5));
   for(int i=0;i<20;i++)
     {
      Print("MathCeil(",DoubleToString(price,5),") ->  ",MathCeil(price));
      Print("MathRound(",DoubleToString(price,5),") ->  ",MathRound(price));
      Print("MathFloor(",DoubleToString(price,5),") ->  ",MathFloor(price));
      Print("");
      price+=0.0005;
     }
  }

Получили 20 уровней, теперь как прописать в коде чтобы узнать что цена Бид рядом с этим уровнем к примеру 9?

Martingeil
1171
Martingeil  
Lehfr:

Кто нибудь знает как теперь узнать, что цена находится рядом с этим уровнем. 

Получили 20 уровней, теперь как прописать в коде чтобы узнать что цена Бид рядом с этим уровнем к примеру 9?

   int Levels=20; // количество уровней от цены

   double price=(1.12600-300*Levels); // цена старт 

   Print("\n","Цена, начало старта: ",DoubleToString(price,5));


   for(int i=0;i<Levels*2;i++)

     {

      double Math_Ceil,Math_Floor;

      

      Math_Ceil  = (price+10*Point);

      Math_Floor = (price-10*Point);

      Print("\n","Math_Ceil: ",DoubleToString(Math_Ceil,5),"  Math_Floor: ",DoubleToString(Math_Floor,5));

      в принте все уровни Levels*2 = 40 показаны

         

      if(Math_Ceil-Bid>=0 && Math_Floor-Bid<=0) //<<-------  что здесь не правильно??? почему не видит уровни???

         

      levelRange = 1; else levelRange = 0; 

         

         price+=300; // будем добавлять пункты к каждому следующему уровню

        }

         



Renat Akhtyamov
16184
Renat Akhtyamov  

...

if(Math_Ceil-Bid>=0 && Math_Floor-Bid<=0) //<<-------  что здесь не правильно??? почему не видит уровни???

{

    Print("Level...., Price...")

    break;

}

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий