Страница 3 из 5

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 11:37
Den
Открытием не будет. Вы просто недопонимаете немного.

В том-то и дело, что несмотря на то, что это одно и то же, Close свечей отличаются от формируемой скользящими средними Close.

На формируемой скользящей линии число возникаемых волн не соответствует числу закрытий Close каждой свечи. В этом загвоздка .

Закрыв правую часть я скажу что будет дальше , ведь есть правило - Три верх, три вниз или 4 вверх 4 вниз ( в зависимости от фрейма).

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

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 11:40
evge
Den писал(а):Вы просто недопонимаете немного.


Вероятно в этом проблема.

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 11:43
Den
Да, все верно. Только проблема в том, что не все CLose формируют волны.
Есть плоские интервалы, которые НЕ являются волнами ( то есть они не считаются). А робот считает все.
Тут видимо необходимо задать ему условие при котором он не будет считать плоские интервалы. Вот это выход, кстати.

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 12:15
Den
Как задать ему условие, чтобы он не считал плоские интервалы Close???

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 12:20
evge
Den писал(а):плоские интервалы


плоские это понятие растяжимое и относительное :) 1-2 пункта разницы - это плоское , а 3 уже не плоское?

Как я говорил до этого уже не один раз. Пишется свой индикатор, который отвечает на эти вопросы и дает сигналы для стратегии.

Это субъективные вещи. У вас это плоское, у Васи - кривое, у Пети - косое.

Всё таки Вам надо понять как работают роботы в АД4. Ранее не раз уже здесь писал, нужно лишь услышать...

Можно побывать на вебинаре, прослушать и не попробовать и не понять.

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 12:28
evge
Вот пример

результат:

NePloskoe-01.png
NePloskoe-01.png (35.78 КБ) 21432 просмотра


Код стратегии

Код: Выделить всё

/**
NePloskoe
Developed by evge;
Hash code 0EDD9B5ED15722A4B2F200B2533F6B75
**/
function Initialize()
{
   StrategyName = "NePloskoe";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 0;
   ShortLimit = 0;
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (Input1.Close[2] < Input1.Close[1]) && (Input1.Close[1] > Input1.Close) )
   {
      EnterShort();
   }

   /// ПРАВИЛО 2
   if ( (Input1.Close[2] > Input1.Close[1]) && (Input1.Close[1] < Input1.Close) )
   {
      EnterLong();
   }

}


Результат тестирования:

NePloskoe-02.png
NePloskoe-02.png (50.12 КБ) 21432 просмотра


Грааля, как видите, не получилось :)

Конечно это не та идея, что у Вас. Это просто пример Плоское или нет, как вариант по анализу свечей со сдвигом

анализ 3х последних свечей.

вход с запаздыванием на 1 свечу

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 12:43
Den
Плоский это не от забора до обеда - плоский это менее 1 рубля на Sih6, менее 1 коп на сбере ( например ) - это же очевидно.
Именно такие интервалы скользящая средняя не рисует вершинами, а рисует примерно горизонтальную линию.

На этой стратегии конечно ничего не получится - она не учитывает волны. Это просто входы-выходы на свечах.

КАК ЗАДАТЬ УСЛОВИЕ РОБОТУ НЕ СЧИТАТЬ ПЛОСКИЕ ИНТЕРВАЛЫ НА СКОЛЬЗЯЩЕЙ СРЕДНЕЙ?

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 13:27
evge
Den писал(а):Плоский это не от забора до обеда - плоский это менее 1 рубля на Sih6, менее 1 коп на сбере ( например ) - это же очевидно.


Вася и Петя с Вами не согласны. Я соглашусь, но Васю и Петю не проигнорирую.

evge писал(а):КАК ЗАДАТЬ УСЛОВИЕ РОБОТУ НЕ СЧИТАТЬ ПЛОСКИЕ ИНТЕРВАЛЫ НА СКОЛЬЗЯЩЕЙ СРЕДНЕЙ?


Чем Вас не устраивает пример игнорирования, продемонстрированный мною выше? Вместо Input.Close я мог взять SMA(1) :) что равнозначно

Привожу код:

Код: Выделить всё

/**
NePloskoe
Developed by evge;
Hash code 4C53B824DC314A574DE61BB98BD9FAFB
**/
function Initialize()
{
   StrategyName = "NePloskoe";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 1;
   ShortLimit = -1;
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (SMA(Input1.Close, 1)[2] < SMA(Input1.Close, 1)[1]) && (SMA(Input1.Close, 1)[1] > SMA(Input1.Close, 1)) )
   {
      EnterShort();
   }

   /// ПРАВИЛО 2
   if ( (SMA(Input1.Close, 1)[2] > SMA(Input1.Close, 1)[1]) && (SMA(Input1.Close, 1)[1] < SMA(Input1.Close, 1)) )
   {
      EnterLong();
   }

}


Что здесь происходит!

На каждом закрытии свечи проверяется:

ЕСЛИ
Правило 1. SMA (один момент назад) БОЛЬШЕ чем SMA (текущий и 2 момента назад) ТО это вершина волны :). Надо срочно открывать SHORT

Правило 2. SMA (один момент назад) МЕНЬШЕ чем SMA (текущий и 2 момента назад) ТО это дно волны :). Надо срочно открывать LONG

скриншоты не стал, т.к. результат одинаковый что со свечами :)

ЭТО КАК ПРОСТЕЙШИЙ ПРИМЕР Вашего желания исключить плоские движения.

Вам не нравится? Придумали сложнее? Заложили в алгоритм! Хотите считать волны? Пожалуйста. Открываете редактор пишите считалку волн по SMA(1) в виде индикатора, добавляете её (его) в правила стратегии. Запускаете. Ждете профит. Идите в кассу за $. Всё элементарно и просто. :)

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 14:12
Den
Это не игнорирование плоского интервала - это просто заход в позицию на 3-х свечах ,если третья ниже второй, вторая выше первой.
Данная стратегия вообще не учитывает плоские интервалы.

Обычно, на трех волнах SMA примерно от 6 до 12 свечей - то есть часть из них плоские, рисуют линию примерно горизонтально.
Их необходимо роботу проигнорировать.
Вот только в этом случае получится разволновка.

Re: Подсчет роботом точек Input1.Close

Добавлено: 10 фев 2016, 14:15
evge
Ну не думаю что в N раз стоит говорить что надо делать.
Как работает робот и на что реагирует примеры я дал. Далее дело за реализацией Ваших мыслей в код.