« Предыдущий пост | На главную страницу | Следующий пост »

Эксперт по теории Хаоса Б.Вильямса: магическое число

В прошлом выпуске я начал написание эксперта, торгующего по теории Хаоса Б.Вильямса. Я разбил большую задачу написания эксперта на несколько маленьких блоков и тем самым заложил план или структуру нашего эксперта.

Этим выпуском я начинаю практическую реализацию каждого блока. Вначале реализуем алгоритм вычисления магического числа, уникального для этого эксперта и периода графика.

Поскольку подобная задача определения магического числа является очень распространенной и часто используется при написании экспертов, нам надо различать ордера, открытые разными экспертами. Поэтому мы для каждого нашего эксперта определим его уникальный ID. Пусть для эксперта по теории Хаоса Б.Вильямса уникальный ID будет равен 1. Для этого мы определим константу EXPERT_ID:

   #define EXPERT_ID             1

Пусть значение магического числа для этого эксперта и периода графика вычисляется функцией GetMagicNumber() только один раз при вызове функции init() и запоминается в глобальной переменной MagicNumber:

   int     MagicNumber;

Теперь нам осталось лишь определиться с алгоритмом вычисления магического числа и написать функцию GetMagicNumber(). В нашем случае вполне будет достаточно, если младшие три разряда магического числа будут содержать уникальный ID эксперта (в нашем случае равен EXPERT_ID), а следующие пять разрядов - период графика (PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1 или PERIOD_MN1).

Вот исходный код функции GetMagicNumber(), которая вычисляет магическое число по такому алгоритму:

int GetMagicNumber()
  {
    int id;
// разряды 0-2 (младшие три разряда): уникальный ID эксперта id = EXPERT_ID;
// разряды 3-7 (следующие пять разрядов): период графика id = id + 1000*Period();
return(id); }

Ну а теперь выложим целиком то, что у нас получилось на данном этапе:

//+------------------------------------------------------------------+
//|                                                 BW-AV.mq4 |
//|                                          Andrey Vedikhin |
//|                                http://www.vedikhin.ru |
//+------------------------------------------------------------------+
#property copyright "Andrey Vedikhin"
#property link      "http://www.vedikhin.blog-forex.org"
//---- input parameters extern double Lots=1.0;
// существует три состояния, в которых мы можем находиться #define STATUS_LONG 0 // мы стоим в покупку #define STATUS_SHORT 1 // мы стоим в продажу #define STATUS_NO_POSITIONS 2 // у нас открытых позиций
// каждый нами написанный эксперт будет иметь свой ID номер от 000 до 999 // пусть эксперт по теории Хаоса имеет уникальный номер 1, // т.к. это наш первый "боевой" эксперт #define EXPERT_ID 1
// магическое число для этого эксперта и периода графика int MagicNumber;
//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- // Сформируем уникальное магическое число для этого эксперта с учетом периода MagicNumber = GetMagicNumber();
// Запомним последний сформировавшийся бар, как последний обработанный бар
// Пробежимся по всем открытым позиция, которые были открыты этим // экспертом (магическое число совпадает): в зависимости от их наличия // и направления установим текущий статус эксперта //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- // Если мы уже обрабатывали последний сформировавшийся бар, то выйдем // Если не обрабатывали, то запомним, что мы его сейчас начали обрабатывать
// Если наш текущий статус равен STATUS_NO_POSITIONS:
// Проверим, не сработал ли какой-нибудь из фракталов: на покупку // или на продажу.
// Если сработал по графику, то открываем соответствующую // позицию (сразу ставим стоп лосс), меняем статус и выходим
// Если не сработал, то просто выходим, т.к. первый сигнал всегда - // от фрактала
// Пробежимся по всем открытым позициям, открытым этим экспертом // по этому инструменту, и переставим стоп-лосс на новый уровень
// Если наш текущий статус равен STATUS_LONG, то:
// Если у нас сигнал в покупку из первого измерения, то открываем // еще одну позицию в покупку (сразу ставим стоп лосс)
// Если у нас сигнал в покупку из второго измерения, то открываем // еще одну позицию в покупку (сразу ставим стоп лосс)
// Если у нас сигнал в покупку из третьего измерения, то открываем // еще одну позицию в покупку (сразу ставим стоп лосс)
// Если у нас сигнал в покупку из четвертого измерения, то открываем // еще одну позицию в покупку (сразу ставим стоп лосс)
// Выходим
// Если наш текущий статус равен STATUS_SHORT, то:
// Если у нас сигнал в продажу из первого измерения, то открываем // еще одну позицию в продажу (сразу ставим стоп лосс)
// Если у нас сигнал в продажу из второго измерения, то открываем // еще одну позицию в продажу (сразу ставим стоп лосс)
// Если у нас сигнал в продажу из третьего измерения, то открываем // еще одну позицию в продажу (сразу ставим стоп лосс)
// Если у нас сигнал в продажу из четвертого измерения, то открываем // еще одну позицию в продажу (сразу ставим стоп лосс)
// Выходим //---- return(0); } //+------------------------------------------------------------------+ //| GetMagicNumber() - возвращает магическое | //| число, которое вычисляется по следующему | //| алгоритму: младшие три разряда - | //| уникальный ID эксперта (в нашем случае | //| равен EXPERT_ID), а следующие пять | //| разрядов - период графика | //+------------------------------------------------------------------+ int GetMagicNumber() { int id;
// разряды 0-2 (младшие три разряда): уникальный ID эксперта id = EXPERT_ID;
// разряды 3-7 (следующие пять разрядов): период графика id = id + 1000*Period();
return(id); } //+------------------------------------------------------------------+

В следующем выпуске я расскажу, как пределить текущие состояние эксперта (STATUS_LONG, STATUS_SHORT или STATUS_NO_POSITIONS) при инициализации эксперта.

« Предыдущий пост | На главную страницу | Следующий пост »

Комментарии по теме "Эксперт по теории Хаоса Б.Вильямса: магическое число"

Меня уже давно интересовала торговля по системе B.W. и написание советника по этой системе,
думаю, докажет её эффективность. К сожалению
я только начинаю осваивать
MQL и Ваш блог оказывает мне неоценимую поддержку. Спасибо!!!
Если не сложно, обьясните как построить "линию баланса" или она просто является 34-периодным скользящим средним?
С уважением.
Василий.

Спасибо за теплые слова.

Про Линию Баланса читайте в комметариях к посту http://www.vedikhin.ru/2006/03/chaos-theory.html

Спасибо за ссылку.
Но линия баланса осталась для меня загадкой.
В своей торговле буду ориентироваться на 34-периодное среднее. Пробовал построить 34+5/2, но результат не радует.
С уважением.
Василий.

К сожалению, Вы не одиноки. У меня тоже нет однозначного понимания по Линии Баланса.

А разве нельзя взять Линию из аллигатора в МТ4?

По последней информации:

Челюсти Аллигатора - Линия Баланса данного графика, Зубы - графика с таймфреймом на порядок ниже, Губы - еще на порядок ниже. Например, день - час - 12 минут на дневном графике.

И в чем проблема?

В том, что никто, кроме Билла Вильямса, не может на 100% утверждать, что Линия Баланса - это одна из линий Аллигатора.

Здравствуйте! Я сейчас изучаю книгу "FOREX от первого лица" теорию хаоса Б.Вильямса и застопорился на том, что не могу врубиться в такое понятие как "поражение" фрактала (стр.187 справа внизу)? Разъясните пожалуйста, что есть это такое?

Здравствуйте! Я сейчас изучаю книгу "FOREX от первого лица" теорию хаоса Б.Вильямса и застопорился на том, что не могу врубиться в такое понятие как "поражение" фрактала (стр.187 справа внизу)? Разъясните пожалуйста, что есть это такое?

Подписаться на мою рассылку



Размещение статьи "Эксперт по теории Хаоса Б.Вильямса: магическое число" на Вашем сайте

Размещение статьи "Эксперт по теории Хаоса Б.Вильямса: магическое число" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Эксперт по теории Хаоса Б.Вильямса: магическое число" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 5.04