Ответ
 
Опции темы
Старый 21.04.2013, 12:31   #1201 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от tommy27 Посмотреть сообщение
С глобальными чёт не клеитса то не запишется то не вызовется, а через статистические пробовал делать но тож чет в тупик зашел всегда 0 возвращает почему не понял
PHP код:
int SIGNAL()
  {
   static 
int CurrentSignal ;
   static 
int LastSignal ;
   if(
sign1()==1)  CurrentSignal 1
   if(
sign1()==2)  CurrentSignal 2
   if(
sign1()==0&&LastSignal==1)CurrentSignal 1;
   if(
sign1()==0&&LastSignal==2)CurrentSignal 2;
   if(
LastSignal != CurrentSignalLastSignal CurrentSignal;
      return(
LastSignal);
   } 
попробую через циклы мож получится
Всегда 0 будет возвращать если sign1() возвращает всегда 0.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 08:55   #1202 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Требуется совет. Пишу функцию, которую попутно додумываю. Ситуация такая:
Нужно чтоб функция считала бары соответствуют канкретным условиях и идущие в подряд друг за другом, (не через один, через 2, или через сколько-н. , а друг за другом..).
Рассмотрим вариант когда тренд предполагаемый вниз. Нужно, если идёт коррекция, допустим, 5 баров в подряд бычьих, и размер которых не меньше некоторого значения, то выйти с функции. Я сделал вот так:

Скрытый текст

PHP код:
int LastCandlesType()
{
   
bool up,                            // Свеча направлена вверх
        
dn;                            // Свеча направлена вниз
   
int cnt,                            // Счётчик идущих друг за другом бычьих свечей
       
i_AnyBarsToHistory 30;        // Количество используемых баров  из истории для рассчёта сигнала
   
double i_sizeOfCurrBar 10;        // Размер текущего бара
   
   
for (int i=Bars-1i>=Bars-AnyBarsToHistoryi--)
   {
      if ((
Close[i] - Open[i]) <= i_sizeOfCurrBar Point)    // Пропускаем все бары, размера меньше заданного внешним параметром
          
continue;
      
      if (
Close[i] > Open[i])                               // Если условие соблюдается, значит текущий бар направлен вверх
          
up true;

      if (
up)                                               // Если бар направлен вверх, значит к счётчик увеличивается
          
cnt++;
   }
   if (
cnt == 5)                                            // Если 5 баров вподряд бычьи..
       
return (BULL_CANDLES);                               //..Выходим из функции

[свернуть]



Может есть какой-то ещё способ большее гибкий? И всё ли у меня верно? Интересно мнение программистов с большим опытом чем у меня.

Последний раз редактировалось NSerega; 24.04.2013 в 12:59.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 11:03   #1203 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 917
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от hoz Посмотреть сообщение
Требуется совет. Пишу функцию, которую попутно додумываю. Ситуация такая:
Нужно чтоб функция считала бары соответствуют канкретным условиях и идущие в подряд друг за другом, (не через один, через 2, или через сколько-н. , а друг за другом..).
Рассмотрим вариант когда тренд предполагаемый вниз. Нужно, если идёт коррекция, допустим, 5 баров в подряд бычьих, и размер которых не меньше некоторого значения, то выйти с функции. Я сделал вот так:

Скрытый текст

PHP код:
int LastCandlesType()
{
   
bool up,                            // Свеча направлена вверх
        
dn;                            // Свеча направлена вниз
   
int cnt,                            // Счётчик идущих друг за другом бычьих свечей
       
i_AnyBarsToHistory 30;        // Количество используемых баров  из истории для рассчёта сигнала
   
double i_sizeOfCurrBar 10;        // Размер текущего бара
   
   
for (int i=Bars-1i>=Bars-AnyBarsToHistoryi--)
   {
      if ((
Close[i] - Open[i]) <= i_sizeOfCurrBar Point)    // Пропускаем все бары, размера меньше заданного внешним параметром
          
continue;
      
      if (
Close[i] > Open[i])                               // Если условие соблюдается, значит текущий бар направлен вверх
          
up true;

      if (
up)                                               // Если бар направлен вверх, значит к счётчик увеличивается
          
cnt++;
   }
   if (
cnt == 5)                                            // Если 5 баров вподряд бычьи..
       
return (BULL_CANDLES);                               //..Выходим из функции

[свернуть]



Может есть какой-то ещё способ большее гибкий? И всё ли у меня верно? Интересно мнение программистов с большим опытом чем у меня.
Зачем используется кол-во баров для подсчета=30. Если нужно 5 баров подряд бычьих то и используй для расчёта 5 баров. Как только они появятся выходим из функции. А в твоем варианте насчитает просто 5 баров бычьих из 30. И не факт что они будут подряд.

Последний раз редактировалось NSerega; 24.04.2013 в 12:59.
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 11:10   #1204 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от alexshell Посмотреть сообщение
Зачем используется кол-во баров для подсчета=30. Если нужно 5 баров подряд бычьих то и используй для расчёта 5 баров. Как только они появятся выходим из функции. А в твоем варианте насчитает просто 5 баров бычьих из 30. И не факт что они будут подряд.

alexshell, прочитай по внимательнее условия. Мне нужно не 5 любых баров, а 5 баров с требуемым признаком. Признаки в перспективе будут разные.
На данный момент должны быть 5 баров с признаками:
1. Все бары одного типа. В данном случает бычьи.
2. Длинна каждого бара большей внешней переменной некоторой.
Если я буду просчитывать только 5 баров, не факт, что там будут 5 последовательных именно таких баров...
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 11:28   #1205 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 917
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от hoz Посмотреть сообщение
alexshell, прочитай по внимательнее условия. Мне нужно не 5 любых баров, а 5 баров с требуемым признаком. Признаки в перспективе будут разные.
На данный момент должны быть 5 баров с признаками:
1. Все бары одного типа. В данном случает бычьи.
2. Длинна каждого бара большей внешней переменной некоторой.
Если я буду просчитывать только 5 баров, не факт, что там будут 5 последовательных именно таких баров...
Да вроде внимательно прочитал. Ключевое слово подряд.Бары же появляются по очереди.Как только появиться заданное кол-во барав с задаными признаками, условие выполниться.А в твоем варианте допустим появилось 3 бара бычьих, затем два медвежьих, потом опять 2 бычьих .У тебя сработало условие выхода из ф-ии.Но ведь они не подряд.
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 11:34   #1206 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от alexshell Посмотреть сообщение
Да вроде внимательно прочитал. Ключевое слово подряд.Бары же появляются по очереди.Как только появиться заданное кол-во барав с задаными признаками, условие выполниться.А в твоем варианте допустим появилось 3 бара бычьих, затем два медвежьих, потом опять 2 бычьих .У тебя сработало условие выхода из ф-ии.Но ведь они не подряд.

А мне разницы нет. Если 2 бара допустим размеров по 10пп., потом бар размером 1пп., другой 0.3пп., потом 4 бара по 0.1. - 0.5пп., а дальше 4 больше 10пп. То Значится будет 6 баров просчитано вподряд идущих с заданным размеров и заданный типом. Вся шелуха, отсеится данным фильтром.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
alexshell (24.04.2013)
Старый 24.04.2013, 11:38   #1207 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 917
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от hoz Посмотреть сообщение
А мне разницы нет. Если 2 бара допустим размеров по 10пп., потом бар размером 1пп., другой 0.3пп., потом 4 бара по 0.1. - 0.5пп., а дальше 4 больше 10пп. То Значится будет 6 баров просчитано вподряд идущих с заданным размеров и заданный типом. Вся шелуха, отсеится данным фильтром.
Ну ясно. Подряд я понял по другому
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 11:52   #1208 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от alexshell Посмотреть сообщение
Ну ясно. Подряд я понял по другому
Мыслить "как все" я не нанимался. У меня свой взгляд на мир.
В общем, суть такая. Вставил в эксперт эту функцию. Вот принт:

PHP код:
2013.04.24 13:47:25    2012.04.20 00:52  Scalper_M1 EURUSD,M1cnt 2
2013.04.24 13
:47:24    2012.04.20 00:51  Scalper_M1 EURUSD,M1cnt 2
2013.04.24 13
:47:21    2012.04.20 00:50  Scalper_M1 EURUSD,M1cnt 2
2013.04.24 13
:47:19    2012.04.20 00:49  Scalper_M1 EURUSD,M1cnt 2
2013.04.24 13
:47:18    2012.04.20 00:48  Scalper_M1 EURUSD,M1cnt 2
2013.04.24 13
:47:15    2012.04.20 00:47  Scalper_M1 EURUSD,M1cnt 

Как такое может быть? Переменная cnt всегда одинаковая.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 12:24   #1209 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Вот так сейчас функция выглядит:

Скрытый текст

PHP код:
int LastCandlesType()
{
   
bool up,                            // Свеча направлена вверх
        
dn;                            // Свеча направлена вниз
   
int cnt,                            // Счётчик идущих друг за другом бычьих свечей
       
i_AnyBarsToHistory 30;        // Количество используемых баров  из истории для рассчёта сигнала
   
double i_sizeOfCurrBar 10;        // Размер текущего бара
   
   
for (int i=Bars-1i>=Bars-AnyBarsToHistoryi--)
   {
      if ((
Close[i] - Open[i]) <= i_sizeOfCurrBar Point)    // Пропускаем все бары, размера меньше заданного внешним параметром
          
continue;
      
      if (
Close[i] > Open[i])                               // Если условие соблюдается, значит текущий бар направлен вверх
          
up true;

      if (
up)                                               // Если бар направлен вверх, значит к счётчик увеличивается
          
cnt++;
   }
   if (
cnt == 5)                                            // Если 5 баров вподряд бычьи..
       
return (BULL_CANDLES);                               //..Выходим из функции

[свернуть]



Принт:

Скрытый текст

PHP код:
2013.04.24 14:22:43    2012.04.20 00:05  Scalper_M1 EURUSD,M1990up 2cnt 2
2013.04.24 14
:22:43    2012.04.20 00:05  Scalper_M1 EURUSD,M11005up 1cnt 1
2013.04.24 14
:22:42    2012.04.20 00:04  Scalper_M1 EURUSD,M1989up 2cnt 2
2013.04.24 14
:22:42    2012.04.20 00:04  Scalper_M1 EURUSD,M11004up 1cnt 1
2013.04.24 14
:22:40    2012.04.20 00:03  Scalper_M1 EURUSD,M1988up 2cnt 2
2013.04.24 14
:22:40    2012.04.20 00:03  Scalper_M1 EURUSD,M11003up 1cnt 1
2013.04.24 14
:22:31    2012.04.20 00:02  Scalper_M1 EURUSD,M1987up 2cnt 2
2013.04.24 14
:22:31    2012.04.20 00:02  Scalper_M1 EURUSD,M11002up 1cnt 1
2013.04.24 14
:22:23    2012.04.20 00:01  Scalper_M1 EURUSD,M1986up 2cnt 2
2013.04.24 14
:22:23    2012.04.20 00:01  Scalper_M1 EURUSD,M11001up 1cnt 1
2013.04.24 14
:22:04    2012.04.20 00:00  Scalper_M1 EURUSD,M1985up 2cnt 2
2013.04.24 14
:22:04    2012.04.20 00:00  Scalper_M1 EURUSD,M11000up 1cnt 
[свернуть]


Получается какая-то чушь. up - булева переменная. Значит она принимает значения только 0 (т.е. false) или 1 (true).
В принте у неё значение 1 и 2... Что тут вообще за хрень?

Последний раз редактировалось NSerega; 24.04.2013 в 13:00.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 13:34   #1210 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
Получается какая-то чушь. up - булева переменная. Значит она принимает значения только 0 (т.е. false) или 1 (true).
В принте у неё значение 1 и 2... Что тут вообще за хрень?
Покажите код вместе с оператором Print.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 13:38   #1211 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 917
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от hoz Посмотреть сообщение
Вот так сейчас функция выглядит:

Скрытый текст

int LastCandlesType()
{
bool up, // Свеча направлена вверх
dn; // Свеча направлена вниз
int cnt, // Счётчик идущих друг за другом бычьих свечей
i_AnyBarsToHistory = 30; // Количество используемых баров из истории для рассчёта сигнала
double i_sizeOfCurrBar = 10; // Размер текущего бара

for (int i=Bars-1; i>=Bars-AnyBarsToHistory; i--)
{
if ((Close[i] - Open[i]) <= i_sizeOfCurrBar * Point) // Пропускаем все бары, размера меньше заданного внешним параметром
continue;

if (Close[i] > Open[i]) // Если условие соблюдается, значит текущий бар направлен вверх
up = true;

if (up) // Если бар направлен вверх, значит к счётчик увеличивается
cnt++;
}
if (cnt == 5) // Если 5 баров вподряд бычьи..
return (BULL_CANDLES); //..Выходим из функции
}
[свернуть]





Получается какая-то чушь. up - булева переменная. Значит она принимает значения только 0 (т.е. false) или 1 (true).
В принте у неё значение 1 и 2... Что тут вообще за хрень?
1: выделил красным.
2: У тебя цикл в расчёте идет по всем свечам истории кроме последних 30.
Если нужны последние30 то я б сделал так:
PHP код:
 for (int i=1i<=i_AnyBarsToHistoryi++) 
3:булевая переменная в цикле не обнуляется т.есть появился бар с нужными параметрами стала труе и всё. И дальше по идее все бары будут считаться как удовлетворяющие условию.И зачем вообще использовать булевую переменную.
Вот сов который считает бары по твоему условию

Скрытый текст

PHP код:
int start ()                       
             {                     
// Свеча направлена вниз 
   
int cnt;int i_AnyBarsToHistory 30;                            // Счётчик идущих друг за другом бычьих свечей 
       // Количество используемых баров  из истории для рассчёта сигнала 
   
double i_sizeOfCurrBar 1;        // Размер текущего бара 
    
   
for (int i=1i<=i_AnyBarsToHistoryi++) 
   { 
      if (
Close[i] - Open[i]>= i_sizeOfCurrBar Point)   
         
       {
      if (
Close[i] > Open[i])                             
                                                
          
cnt++; 
      }     
   } 
    
Comment("снт=",cnt)  ;   
   
       
    return (
0);                                   //..Выходим из функции 

[свернуть]

Повесил на график,считает.Но опять же он считает просто кол-во баров с заданными параметрами. Про подряд здесь условий нет.
4: про принт я вообще хрен знает что у тебя пишет Так как не вижу откуда принтуется и что там прописано.
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 14:20   #1212 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
Покажите код вместе с оператором Print.

Скрытый текст

PHP код:
//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
int LastCandlesType()
{
   
bool up,                            // Свеча направлена вверх
        
dn;                            // Свеча направлена вниз
   
int cnt;                            // Счётчик идущих друг за другом бычьих свечей
   
   
for (int i=Bars-1i>=Bars-i_AnyBarsToHistoryi--)
   {
      if ((
Close[i] - Open[i]) <= i_sizeOfCurrBar Point)    // Пропускаем все бары, размера меньше заданного внешним параметром
          
continue;
     
      if (
Close[i] > Open[i])                               // Если условие соблюдается, значит текущий бар направлен вверх
          
cnt++;
      Print(
"i = "i"; up = "cnt"; cnt = "cnt);
   }
 
//  Print("cnt = ", cnt);
   
if (cnt == 5)                                            // Если 5 баров вподряд бычьи..
    
return (REQUIRED_SEQUENTIAL_BEAR_CANDLE);           //..Выходим из функции

[свернуть]

Последний раз редактировалось NSerega; 24.04.2013 в 16:15.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 14:25   #1213 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Ну так у вас в принте ошибка, разве не заметно?
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 14:35   #1214 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
Ну так у вас в принте ошибка, разве не заметно?

Заметно. Исправил.

Скрытый текст

PHP код:
int LastCandlesType()
{
   
bool up,                            // Свеча направлена вверх
        
dn;                            // Свеча направлена вниз
   
int cnt;                            // Счётчик идущих друг за другом бычьих свечей
   
   
for (int i=Bars-1i>=Bars-i_AnyBarsToHistoryi--)
   {
      if ((
Close[i] - Open[i]) <= i_sizeOfCurrBar Point)    // Пропускаем все бары, размера меньше заданного внешним параметром
          
continue;
     
      if (
Close[i] > Open[i])                               // Если условие соблюдается, значит текущий бар направлен вверх
          
cnt++;
      Print(
"i = "i"; up = "up"; cnt = "cnt);
   }
 
//  Print("cnt = ", cnt);
   
if (cnt == 5)                                            // Если 5 баров вподряд бычьи..
    
return (REQUIRED_SEQUENTIAL_BEAR_CANDLE);           //..Выходим из функции

[свернуть]



Но почему-то всё-равно не так как требуется функция работает.

Скрытый текст

PHP код:
2013.04.24 16:29:45    2012.04.20 00:03  Scalper_M1 EURUSD,M1988up 0cnt 2
2013.04.24 16
:29:45    2012.04.20 00:03  Scalper_M1 EURUSD,M11003up 0cnt 1
2013.04.24 16
:29:41    2012.04.20 00:02  Scalper_M1 EURUSD,M1987up 0cnt 2
2013.04.24 16
:29:41    2012.04.20 00:02  Scalper_M1 EURUSD,M11002up 0cnt 1
2013.04.24 16
:29:38    2012.04.20 00:01  Scalper_M1 EURUSD,M1986up 0cnt 2
2013.04.24 16
:29:38    2012.04.20 00:01  Scalper_M1 EURUSD,M11001up 0cnt 1
2013.04.24 16
:29:29    2012.04.20 00:00  Scalper_M1 EURUSD,M1985up 0cnt 2
2013.04.24 16
:29:29    2012.04.20 00:00  Scalper_M1 EURUSD,M11000up 0cnt 
[свернуть]



Но переменная cnt почему-то постоянно 1 и 2. Даже когда свечи вообще медвежьи, и условие:

PHP код:
if (Close[i] > Open[i]) 

Не соблюдается.

Последний раз редактировалось NSerega; 24.04.2013 в 16:16.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 15:01   #1215 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,523
Репутация: 3644
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,648 раз(а) в 1,469 сообщениях
Поинты: 2007
Сообщение от hoz Посмотреть сообщение
Заметно. Исправил.

Скрытый текст

PHP код:
int LastCandlesType()
{
   
bool up,                            // Свеча направлена вверх
        
dn;                            // Свеча направлена вниз
   
int cnt;                            // Счётчик идущих друг за другом бычьих свечей
   
   
for (int i=Bars-1i>=Bars-i_AnyBarsToHistoryi--)
   {
      if ((
Close[i] - Open[i]) <= i_sizeOfCurrBar Point)    // Пропускаем все бары, размера меньше заданного внешним параметром
          
continue;
     
      if (
Close[i] > Open[i])                               // Если условие соблюдается, значит текущий бар направлен вверх
          
cnt++;
      Print(
"i = "i"; up = "up"; cnt = "cnt);
   }
 
//  Print("cnt = ", cnt);
   
if (cnt == 5)                                            // Если 5 баров вподряд бычьи..
    
return (REQUIRED_SEQUENTIAL_BEAR_CANDLE);           //..Выходим из функции

[свернуть]
Но почему-то всё-равно не так как требуется функция работает.

Скрытый текст

PHP код:
2013.04.24 16:29:45    2012.04.20 00:03  Scalper_M1 EURUSD,M1988up 0cnt 2
2013.04.24 16
:29:45    2012.04.20 00:03  Scalper_M1 EURUSD,M11003up 0cnt 1
2013.04.24 16
:29:41    2012.04.20 00:02  Scalper_M1 EURUSD,M1987up 0cnt 2
2013.04.24 16
:29:41    2012.04.20 00:02  Scalper_M1 EURUSD,M11002up 0cnt 1
2013.04.24 16
:29:38    2012.04.20 00:01  Scalper_M1 EURUSD,M1986up 0cnt 2
2013.04.24 16
:29:38    2012.04.20 00:01  Scalper_M1 EURUSD,M11001up 0cnt 1
2013.04.24 16
:29:29    2012.04.20 00:00  Scalper_M1 EURUSD,M1985up 0cnt 2
2013.04.24 16
:29:29    2012.04.20 00:00  Scalper_M1 EURUSD,M11000up 0cnt 
[свернуть]
Но переменная cnt почему-то постоянно 1 и 2. Даже когда свечи вообще медвежьи, и условие:

PHP код:
if (Close[i] > Open[i]) 
Не соблюдается.
Та ошибка ничего не значит.

А мне интересно что такое "Bars" и "REQUIRED_SEQUENTIAL_BEAR_CANDLE)"
От какого значения ты начинаешь проверять высоту баров и что выводишь из функции?

Последний раз редактировалось NSerega; 24.04.2013 в 16:16.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 15:01   #1216 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение

Но переменная cnt почему-то постоянно 1 и 2. Даже когда свечи вообще медвежьи, и условие:

PHP код:
if (Close[i] > Open[i]) 

Не соблюдается.
Если до этой проверки дело дошло, то она всегда даст true, поскольку предыдущее условие с continue более жесткое.
Я готов поверить, что на рассматриваемом отрезке в 1000-Х минутных баров действительно только две бычьих свечки больше порога.

Последний раз редактировалось qqmber; 24.04.2013 в 15:06.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 15:28   #1217 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
А мне интересно что такое "Bars"

_http://docs.mql4.com/ru/predefined/variables/bars

Сообщение от AlexeyVik Посмотреть сообщение
А мне интересно что такое "REQUIRED_SEQUENTIAL_BEAR_CANDLE"
Тока тут нужно было REQUIRED_SEQUENTIAL_BULL_CANDLE
С английского необходимое количество последовательных бычьих баров


Сообщение от AlexeyVik Посмотреть сообщение
Та ошибка ничего не значит.
PHP код:
if (Close[i] > Open[i]) 
Где ошибка??? Как это ниего не значит?


Сообщение от AlexeyVik Посмотреть сообщение
От какого значения ты начинаешь проверять высоту баров и что выводишь из функции?
Проверяется высота каждого бара.. Я ж в цикле это дела, что тут не понятного то?

Последний раз редактировалось NSerega; 24.04.2013 в 16:16.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 15:31   #1218 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
Если до этой проверки дело дошло, то она всегда даст true, поскольку предыдущее условие с continue более жесткое.
Я готов поверить, что на рассматриваемом отрезке в 1000-Х минутных баров действительно только две бычьих свечки больше порога.

Там не 1000 минутные свечек, а всего 29! Значение i_AnyBarsToHistory= 30

Так жёсткое или не жёсткое, но условие есть условие. Как можно проверяя цену закрытия и открытия бара, получить значение, что цена закрытия ниже, в то время, когда оно выше на самом деле?

Как тогда верно написать?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 15:52   #1219 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,523
Репутация: 3644
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,648 раз(а) в 1,469 сообщениях
Поинты: 2007
Сообщение от hoz Посмотреть сообщение
Bars - Документация на MQL4



Тока тут нужно было REQUIRED_SEQUENTIAL_BULL_CANDLE
С английского необходимое количество последовательных бычьих баров




Где ошибка??? Как это ниего не значит?




Проверяется высота каждого бара.. Я ж в цикле это дела, что тут не понятного то?
Зачем ты мене даёшь ссылку на документацию? Это у тебя индикатор?
Ну ты сам рассуди. Если ты считаешь от количества баров на графике, а смотришь, наверняка, на последние... Какое совпадение ты можешь увидеть...
Дословный перевод с аглицкого твоей переменной тоже ни о чём не говорит. Это всего-лишь набор символов, а что в ней должно быть это только тебе известно. Но я не вижу чтобы этой переменной присваивалось какое-либо значение перед выводом её из функции.
А что касается ошибки, так я цитировал твой ответ об ошибке в принте. Вот эта ошибка и не имеет никакого критического значения.

Так-что получается ты на мои вопросы не ответил.
Если сможешь ответить, может и поймёшь свою ошибку.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 24.04.2013, 16:22   #1220 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
Там не 1000 минутные свечек, а всего 29! Значение i_AnyBarsToHistory= 30

Так жёсткое или не жёсткое, но условие есть условие. Как можно проверяя цену закрытия и открытия бара, получить значение, что цена закрытия ниже, в то время, когда оно выше на самом деле?

Как тогда верно написать?
Приблизительно понятно
Вы желаете анализировать 30 последних баров, но вместо этого берете 30 самых дальних в истории. Нужно
for (int i=i_AnyBarsToHistory; i>=0; i--)
Кроме того, первое условие в цикле отсеивает все медвежьи свечки и все бычьи свечки недостаточного размера. Второе условие просто не нужно.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 18:36. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO