Подскажите в отношении Timeframe

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

Я написал этот код


#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict



extern int    Dig      = 2;

extern double Risk     = 0.02;

extern int    sl       = 250;

extern int    tilt     = 60;

extern int    bpt      = 15;

extern int    bpc1     = 50;

extern int    bpc2     = 5;

extern int    m1       = 101;

extern int    m2       = 102;


void OnTick()

  {

//---

   int s = 0, s1 = 0, t = bpt;

double h1, h2, l1, l2;

for(int i = bpc2; i < bpc1; i++)

  {

  h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)];

  l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)];

  h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)];

  l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];

 

  if((h2 - l2)/(h1 - l1) > 2)

    {

     {

     if(Bid - h1 > (h1 - l1)/10)

     {

     s = 1;

     break;

     }

     if(l1 - Ask > (h1 - l1)/10)

     {

     s = -1;

     break;

     }

     }

   }

 }

 Comment(h1,"   ",l1,"   ",h2,"   ",l2,"   ",s);

  }

но проблема в том что при внесении параметра bpt (timeframe)  и при изменении TF в терминале

меняются показания при этом не меняя bpt.  

Что сделать чтобы это не происходило, потому что получается какой бы ТФ не выставлял для функции 

берется ТФ на котором открыт терминал.

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Советники: SAR trading v2.0 SAR trading v2.0: Торговые...
Che555
712
Che555  
kastaneda:

Я написал этот код


#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict



extern int    Dig      = 2;

extern double Risk     = 0.02;

extern int    sl       = 250;

extern int    tilt     = 60;

extern int    bpt      = 15;

extern int    bpc1     = 50;

extern int    bpc2     = 5;

extern int    m1       = 101;

extern int    m2       = 102;


void OnTick()

  {

//---

   int s = 0, s1 = 0, t = bpt;

double h1, h2, l1, l2;

for(int i = bpc2; i < bpc1; i++)

  {

  h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)];

  l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)];

  h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)];

  l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];

 

  if((h2 - l2)/(h1 - l1) > 2)

    {

     {

     if(Bid - h1 > (h1 - l1)/10)

     {

     s = 1;

     break;

     }

     if(l1 - Ask > (h1 - l1)/10)

     {

     s = -1;

     break;

     }

     }

   }

 }

 Comment(h1,"   ",l1,"   ",h2,"   ",l2,"   ",s);

  }

но проблема в том что при внесении параметра bpt (timeframe)  и при изменении TF в терминале

меняются показания при этом не меняя bpt.  

Что сделать чтобы это не происходило, потому что получается какой бы ТФ не выставлял для функции 

берется ТФ на котором открыт терминал.


у тебя bpt глобальная переменная. она не изменяется на каждом тике.

и каждый тик у тебя происходит такое t = bpt;

в t заносится 15.


kastaneda
57
kastaneda  

Так я о том же (что должно не менятся),

а выдаваемые данные меняются при

изменении ТФ в терминале не смотря

на то что bpt остается без изменения.

Che555
712
Che555  
kastaneda:

Так я о том же (что должно не менятся),

а выдаваемые данные меняются при

изменении ТФ в терминале не смотря

на то что bpt остается без изменения.


с чего ты взял, что они у тебя меняются?

пропиши вот так и посмотри значения

 h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)];
  Alert(t);

  l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)];

  h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)];

  l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];
Konstantin Erin
2161
Konstantin Erin  
kastanedaЯ написал этот код
     if(Bid - h1 > (h1 - l1)/10)
     {
     s = 1;
     break;
     }
Скажите пожалуйста, а что у Вас здесь break; делает? Может быть проще
     if(Bid - h1 > (h1 - l1)/10)  s = 1;
kastaneda
57
kastaneda  

Почему тогда переменные вставленные

в Comment меняются?

Konstantin Erin
2161
Konstantin Erin  
kastaneda:  Почему тогда переменные вставленные в Comment меняются?

Это у Вас советник или скрипт. Прикрепите весь файл, попробую. И скажите, как Вы его используете!!!

Konstantin Erin
2161
Konstantin Erin  
Выбросил все лишнее - получилось так
#property strict

extern int    tilt     = 60;
extern int    bpt      = 15;
extern int    bpc1     = 50;
extern int    bpc2     = 5;

void OnTick()
{
   int s = 0, s1 = 0, t = bpt;
   double h1, h2, l1, l2;
   for(int i = bpc2; i < bpc1; i++)
   {
      h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)];
      l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)];
      h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)];
      l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];

      if((h2 - l2)/(h1 - l1) > 2)
      {
         if(Bid - h1 > (h1 - l1)/10) s = 1;
         if(l1 - Ask > (h1 - l1)/10) s = -1;
      }
   }
  Comment(h1,"   ",l1,"   ",h2,"   ",l2,"   ",s);
}

Если Вы согласны, что это эквивалентно Вашему коду - начну проверять

Konstantin Erin
2161
Konstantin Erin  
Нашел в чем дело
#property strict

void start()
{
   int t = 15, bpc2=10;
   double h1 = iHigh(_Symbol,t,iHighest(Symbol(), t, MODE_HIGH, bpc2, 1));
   Comment(h1);
}
High - это таймфрейм, на котором сидит программа. Если другой (постоянный) - надо iHigh
kastaneda
57
kastaneda  

прикреплен

Файлы:
64kkkjh.mq4 8 kb
Konstantin Erin
2161
Konstantin Erin  
kastaneda:  прикреплен

Так уже написал в чем дело ...

High - это таймфрейм, на котором сидит программа. Если другой (постоянный) - надо iHigh

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