Morse code - страница 3

 

Сделать два параметра. Один для человека - строковый, второй для машины - инт. Третью переменную - для выбора типа. В любом случае при запуске индикатора выводить принтом второй вариант кодировки комбинации. Если последовтаельность зхадается стока, то выводить дополнительные сведения - от скольки до скольки может меняться параметр инт.

Для свечи с равным открытием и закрытием можно считать, что она имеет направление ближайшей свечи с неравными открытием и закрытием. Если одну свечу кодировать тремя числами, 0- для равенства открытия и закрытия, то будет слишком много редких последовательностей.

 

Что бы гонять в оптимизаторе надо два параметра: длинна комбинации и счетчик. Допустим у нас длина комбинации равна 4, тогда 2^4 = 16. Значит счетчик должен быть от 0 до 15. Перебирая в его в оптимизаторе мы получим все комбинации 4 значных паттернов.

Что бы не путать пользователя нужно добавить структуру ENUM_PATTERN_TYPE задающую тип паттерна: числовой либо строковой. Если выбран строковой паттерн, то параметр счетчки и длину комбинаций не используем. И наоборот, если нужно прогнать в оптимизаторе выбираем тип числового паттерна.

 

Что то подобное я уже где то  видел, ищется в яндексе  по запросу "candlecode"

 
Vasiliy Sokolov:

Что бы гонять в оптимизаторе надо два параметра: длинна комбинации и счетчик. Допустим у нас длина комбинации равна 4, тогда 2^4 = 16. Значит счетчик должен быть от 0 до 15. Перебирая в его в оптимизаторе мы получим все комбинации 4 значных паттернов.

Что бы не путать пользователя нужно добавить структуру ENUM_PATTERN_TYPE задающую тип паттерна: числовой либо строковой. Если выбран строковой паттерн, то параметр счетчки и длину комбинаций не используем. И наоборот, если нужно прогнать в оптимизаторе выбираем тип числового паттерна.


Структуру ENUM_PATTERN_TYPE добавил, а вот параметр типа "int", который задаёт тип комбинации свечей предлагаю вообще скрыть от пользователя, ибо:

  • всё равно тип "int" - это число и для пользователя оно никак не коррелируется с бинарным видом строкового параметра 
  • тип "int" нужен только при оптимизации.

а оставить только эти параметры:

CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Enum pattern type: numerical or string                           |
//+------------------------------------------------------------------+
enum ENUM_PATTERN_TYPE
  {
   PATTERN_TYPE_NUMERICAL=0,  // numerical
   PATTERN_TYPE_STRING=1,     // string 
  };
//---
input ENUM_PATTERN_TYPE    InpPatternType          = PATTERN_TYPE_STRING;  // pattern type
input string               InpsMorseCode           = "101";                // string Morse code (max 5 characters)
input ENUM_POSITION_TYPE   InpPosType              = POSITION_TYPE_BUY;    // posinion type
input double               InpLot                  = 0.1;                  // lot
sinput ulong               m_magic                 = 88430400;             // magic number
input ulong                m_slippage              = 30;                   // slippage
//---
string sExtMorseCode="";
int max_string_len=5;         // limitation of the length of the pattern "string"
int i_morse_code=0;           // int Morse code (use only if pattern type=numerical)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(InpPatternType==PATTERN_TYPE_STRING)
     {

Inputs Morse code 1.002

 

Что-то я не вполне пойму - тут программисты или лохи ?

Зачем что-то там переводить куда-то ???

Если нам нужен код 101 - то это обычное значение 5. Все.  Какие проблемы ? Перевести мысленно десятичный в двоичный ???

Я подобные эксперименты проводил, только у меня свеча еще имела четыре размера - от маленького до большого. Соответственно, восемь вариантов свечей. И, стало быть, три бита. В паттерне пишем число (ulong) - сетка больше, чем на двадцатибарный паттерн.

Проблема, на мой взгляд, надуманна.

 
George Merts:

Что-то я не вполне пойму - тут программисты или лохи ?

Зачем что-то там переводить куда-то ???

Если нам нужен код 101 - то это обычное значение 5. Все.  Какие проблемы ? Перевести мысленно десятичный в двоичный ???

Я подобные эксперименты проводил, только у меня свеча еще имела четыре размера - от маленького до большого. Соответственно, восемь вариантов свечей. И, стало быть, три бита. В паттерне пишем число (ulong) - сетка больше, чем на двадцатибарный паттерн.

Проблема, на мой взгляд, надуманна.


Обычные пользователи мысленно десятичный в двоичный переводить не умеют :)
 
George Merts:

Что-то я не вполне пойму - тут программисты или лохи ?

Зачем что-то там переводить куда-то ???

Если нам нужен код 101 - то это обычное значение 5. Все.  Какие проблемы ? Перевести мысленно десятичный в двоичный ???

Я подобные эксперименты проводил, только у меня свеча еще имела четыре размера - от маленького до большого. Соответственно, восемь вариантов свечей. И, стало быть, три бита. В паттерне пишем число (ulong) - сетка больше, чем на двадцатибарный паттерн.

Проблема, на мой взгляд, надуманна.


Программой будет пользоваться обычный пользователь, не программист (об этом было сказано выше и не один раз) - и для него "101" и "5" это две разные цифры, при этом для него "5" вообще никакой информации о взаимном расположении свеч не несёт, а вот "101" четко говорит "бычья, медвежья,бычья".

 

А додж как кодируете?

Например паттерн "вечерняя звезда" может быть бычья-додж (или волчек или пин бар)-медвежья. Если игнорировать додж (волчок или пин бар)  то паттерн не верно опознается. Думаю 1-го бита для кодирования свечи мало будет надо 2 бита на 1-ну свечу.

Например бычья 01, медвежья 10, остальные свечи 11. Тогда, "вечерняя звезда" будет 01 11 10, "утренняя звезда" будет 10 11 01.

....

Еще тут подумал. А модель поглощение как кодировать? Простая комбинация бычья-медвежья ни о чем не говорит, а вот бычья-большая медвежья уже говорит о поглощении бычьей медвежьей. Или как вариант суммировать эти две свечи в одну в результате получится пин бар и кодировать эту суммированную свечу как 11.


 
Vitalii Ananev:

А додж как кодируете?

Например паттерн "вечерняя звезда" может быть бычья-додж (или волчек или пин бар)-медвежья. Если игнорировать додж (волчок или пин бар)  то паттерн не верно опознается. Думаю 1-го бита для кодирования свечи мало будет надо 2 бита на 1-ну свечу.

Например бычья 01, медвежья 10, остальные свечи 11. Тогда, "вечерняя звезда" будет 01 11 10, "утренняя звезда" будет 10 11 01


Тени никак не кодируются (по крайней мере на данном этапе). Может быть потом ...
 
Vladimir Karputov:

Тени никак не кодируются (по крайней мере на данном этапе). Может быть потом ...


Надо сразу все предусмотреть, что бы потом не переделывать.

....

Опят же если вернутся к паттерну "вечерняя звезда" то его можно рассматривать, как бычья-мелкая свеча-медвежья и как бычья-медвежье поглощение. То есть получается составной паттерн состоящий из бычьей свечи и медвежьего поглощения. А если все три свечи из паттерна суммировать то опять получается пин бар.


Причина обращения: