Если цена не дотянула 5 пунктов

 

Я хотел бы рассмотреть ситуацию которая встречается довольно часто. Допустим у нас есть базовый уровень при торговле на коррекции относительно основного тренда , но цена допустим не дотянула 3-5 пунктов до сигнала открытия позиции и начинает разворачиваться .Может кто выразит свою мысль как можно в функции описать подобную ситуацию когда желательно дождаться базового уровня но если не дошла цена то взять на 5 пунктов выше .Я привожу пока только вариант до которого пока додумался т.к. начинающий " экспертописатель " .Но я не решаю ей своей цели дождаться базы или брать на развороте подскажите пожайлуста

bool  LevelKorM5Bay()//функция разрешает покупку или нет
  {
  if(GlobalVariableCheck(LevelKorM5)&& GlobalVariableGet(LevelKorM5)!=2147483647 )//проверяем наличие базового уровня я его получаю  
    {                                                                             //из глобальной переменной 
    if(Bid<= GlobalVariableGet(LevelKorM5)+5*Point)return(true);//добавляю к нему 5 пунктов     
    }
    else
    {   
   return(false);
   }
 }
 
Никак не выразить, если ты только не умеешь предвидеть будущее.
Цена коснулась базовый уровень минус 5 пунктов. Коснется ли она базового уровня ты не знаешь. Т.е. ты либо ждешь базового уровня, либо заранее ставишь его на 5 пунктов выше, все равно ждешь базового уровня и действуешь соотвенственно. Погоня за этими 5 пунктами - это мираж, который сводит с ума, но никогда не дается в руки. Если цена не дошла до твоего уровня - значит это была не твоя сделка, забудь про нее...
 
timbo:
Никак не выразить, если ты только не умеешь предвидеть будущее.
Цена коснулась базовый уровень минус 5 пунктов. Коснется ли она базового уровня ты не знаешь. Т.е. ты либо ждешь базового уровня, либо заранее ставишь его на 5 пунктов выше, все равно ждешь базового уровня и действуешь соотвенственно. Погоня за этими 5 пунктами - это мираж, который сводит с ума, но никогда не дается в руки. Если цена не дошла до твоего уровня - значит это была не твоя сделка, забудь про нее...
А если в место Bid использовать Low[i+1]
 
timbo
...Если цена не дошла до твоего уровня - значит это была не твоя сделка, забудь про нее...


 100%
 
Можно попробовать вот так, если очень хочется.Только не забывай на всякий случай сбросить Flag перед первым вызовом функциии в основной программе.
bool  LevelKorM5Bay()
 {
  static bool Flag;
  if(GlobalVariableCheck(LevelKorM5)) 
   {     
    double L=GlobalVariableGet(LevelKorM5)
    if(L !=2147483647)
     {
      if(Bid<=L) { Flag=false; return(true);}      
      if(Bid<L+5*Point)Flag=true;
      if(Flag && Bid>L+5*Point) {Flag=false;return(true);}
     }     
   }
  return(false); 
 }
 

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

 
Sepulca:
Можно попробовать вот так, если очень хочется.Только не забывай на всякий случай сбросить Flag перед первым вызовом функциии в основной программе.
bool  LevelKorM5Bay()
 {
  static bool Flag;
  if(GlobalVariableCheck(LevelKorM5)) 
   {     
    double L=GlobalVariableGet(LevelKorM5);
    if(L !=2147483647)
     {
      if(Bid<=L) { Flag=false; return(true);}      
      if(Bid<L+5*Point)Flag=true;
      if(Flag && Bid>L+5*Point) {Flag=false;return(true);}
     }     
   }
  return(false); 
 }


Благодарю Михаил компельнул советник сейчас подгоню условия посмотрю как сработает.А как ты смотриш на то чтобы использовать Low[i+1] у советнака бар на размышление будет если ниже пойдет по базовому уровню сработает а не пойдет тоже сработает

 
Если использовать предыдущий бар - получишь дополнительную задержку. Вот еще вариант. Функция возвращает количество тиков, в течении которых цена не подымалась выше уровня плюс 5 поинтов, или 999999 если коснулась уровня, или -1, если что-то не так. И на основе этого значения принимать решение.
int  LevelKorM5Bay()
 {
  static int Flag;
  if(GlobalVariableCheck(LevelKorM5)) 
   {     
    double L=GlobalVariableGet(LevelKorM5)
    if(L !=2147483647)
     {
      if(Bid<=L+5*Point && Bid>=L)Flag++;else Flag=0;
      if(Bid<=L) { Flag=0; return(999999);}      
      return(Flag);
     }     
   }
  return(-1); 
 }
 
Sepulca:
Если использовать предыдущий бар - получишь дополнительную задержку. Вот еще вариант. Функция возвращает количество тиков, в течении которых цена не подымалась выше уровня плюс 5 поинтов, или 999999 если коснулась уровня, или -1, если что-то не так. И на основе этого значения принимать решение.
int  LevelKorM5Bay()
 {
  static int Flag;
  if(GlobalVariableCheck(LevelKorM5)) 
   {     
    double L=GlobalVariableGet(LevelKorM5)
    if(L !=2147483647)
     {
      if(Bid<=L+5*Point && Bid>=L)Flag++;else Flag=0;
      if(Bid<=L) { Flag=0; return(999999);}      
      return(Flag);
     }     
   }
  return(-1); 
 }




Сижу сейчас этот пример обдумываю и не пойму какой резурьтат вернёт функция когда цена была между уровней но не коснулась базы и ушла на верх
 
Как только ушла наверх, сразу 0
Причина обращения: