Мальчик buybuy
Мальчик buybuy личный блог
05 июня 2023, 17:58

Приношу свои глубочайшие извинения уважаемому 3Qu

Данный пост написан в обуздание моего гонора и обозначение технического гения уважаемого 3Qu.

А именно — выражаю всяческое согласие с тезисами:
1. Рынки устроены просто
2. Для формирования индикатора на минутках достаточно 15 баров

Теперь пару слов о причинах моего coming out.

Мне удалось построить стабильный (и весьма прибыльный) кубический индикатор (индикатор = знак кубического полинома от приращений цен).
Который сильно опережает по качеству прогноза будущего приращения цены и (самое главное) по доходности эквити и эквити/ДД линейные и квадратичные индикаторы.
Так вот, мало того, что по финрезультатам этот индикатор кроет линейные и линейно-квадратичные аналоги, как бык — овцу, так он еще и самодостаточен на прошлом 15-20 баров (суб-оптимальные квадратичные индикаторы имеют глубину до 300 баров, линейные — до 8000 баров....)

Результат подтвержден на FX и на крипте.
Будет свободная минутка — проверю результат на часовках Ri и вернусь к дискуссии с уважаемым А. Г.

Что вы думаете по этому поводу, коллеги?

С уважением

 
49 Комментариев
  • What Is Love
    05 июня 2023, 18:02
    ChatGPT4 за минуту выдает 


    #property description «RunningBB»
    //---
    #property indicator_chart_window
    #property indicator_buffers 4
    #property indicator_plots 4
    #property indicator_type1 DRAW_LINE
    #property indicator_type2 DRAW_LINE
    #property indicator_type3 DRAW_LINE
    #property indicator_label1 «RBB middle»
    #property indicator_label2 «RBB upper»
    #property indicator_label3 «RBB lower»
    #property indicator_label4 «RBB ATR»


    class RunningMovingAverage
    {
    private:
    int count;
    double sum;

    public:
    RunningMovingAverage(): count(0), sum(0) {}

    double AddData(const double& x)
    {
    if(count == 0)
    sum = x;
    else
    sum += x;
    count++;
    return GetMovingAverage();
    }

    double GetMovingAverage()
    {
    if(count == 0)
    return 0;
    return sum / count;
    }
    };
    class RunningVariance
    {
    private:
    int count;
    double mean;
    double M2;

    public:
    RunningVariance(): count(0), mean(0), M2(0) {}

    double AddData(const double& x)
    {
    count++;
    double delta = x — mean;
    mean += delta / count;
    double delta2 = x — mean;
    M2 += delta * delta2;
    return GetVariance();
    }

    double GetVariance()
    {
    if(count < 2)
    return 0;
    return M2 / (count — 1);
    }

    double GetStandardDeviation()
    {
    return sqrt(GetVariance());
    }
    };

     

    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    delete rv;
    delete rma;
    }


    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int OnInit()
    {
    //--- indicator buffers mapping
    SetIndexBuffer(0, buffer1);
    SetIndexBuffer(1, buffer2);
    SetIndexBuffer(2, buffer3);
    SetIndexBuffer(3, buffer4);
    PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
    PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
    PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_LINE);
    PlotIndexSetInteger(3,PLOT_DRAW_TYPE,DRAW_LINE);

    //--- initialize running variance objects
    rv = new RunningVariance();
    rma = new RunningMovingAverage();

    return(INIT_SUCCEEDED);
    }

    //+------------------------------------------------------------------+
    //| Custom indicator iteration function |
    //+------------------------------------------------------------------+
    int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[])
    {
    //--- calculate running standard deviation and moving average of the close prices
    for(int i = prev_calculated; i < rates_total; i++)
    {
    rv.AddData(close[i]);
    double stdev = rv.GetStandardDeviation();
    rma.AddData(close[i]);
    double ma = rma.GetMovingAverage();

    buffer1[i] = ma + 2.0 * stdev;
    buffer2[i] = ma;
    buffer3[i] = ma — 2.0 * stdev;
    buffer4[i] = buffer1[i] — buffer3[i];
    }

    return(rates_total);
    }

    //+------------------------------------------------------------------+
    //| Indicator buffers |
    //+------------------------------------------------------------------+
    double buffer1[];
    double buffer2[];
    double buffer3[];
    double buffer4[];
    RunningVariance* rv;
    RunningMovingAverage* rma;

    • Vkt
      05 июня 2023, 18:38
      Nurlan, и как, работает?
      • What Is Love
        05 июня 2023, 18:43
        Vkt, да. На эффективных рынках лучше всего.
        • Vkt
          05 июня 2023, 18:57
          Nurlan, 

          У меня такая картинка получилась:



           Не понимаю как оно работает.


          • Дмитрий Ермаков
            05 июня 2023, 19:13
            Vkt, как и боллинджер
            • Vkt
              05 июня 2023, 19:32
              Дмитрий Ермаков, так они на текущей цене в точку сходятся, а если ТФ поменять, то наоборот разлетаются. Не рабочий индикатор ИМХО
          • What Is Love
            05 июня 2023, 20:08
            Vkt, кто его знает как это работает
          • What Is Love
            06 июня 2023, 12:22
            Vkt, У меня по другому работает. Это целый индикатор для мт5 его не надо переделывать. 
            • Vkt
              06 июня 2023, 17:17
              Nurlan, а я его в МТ4 засунул...
              Только синтаксические ошибки исправил, на которые компилятор ругался.

  • dim800
    05 июня 2023, 18:03
    не переживайте, скоро из бана выходит маэстро, он вас и рассудит.
      • SergeyJu
        05 июня 2023, 18:24
        Мальчик buybuy, и в каких же предположениях доказали? 
        Как-то уже сама формулировка мне странна. Как проигрывает, в чем проигрывает, непонятно. 
          • SergeyJu
            05 июня 2023, 18:43
            Мальчик buybuy, хитро все у Вас выходит. 
            Вот кажите, если цена выше скользяшки, это паттерн или не паттерн по Вашему? 
            По мне так это бинарный признак.
            И под корреляцией Вы подразумеваете автокорреляцию или что-то многомерное. 
      • Дмитрий Ермаков
        05 июня 2023, 18:53
        Мальчик buybuy, это же очевидные вещи. Может, он пошутил
          • Дмитрий Ермаков
            05 июня 2023, 19:15
            Мальчик buybuy, я про первичность движения.
              • Дмитрий Ермаков
                05 июня 2023, 19:24
                Мальчик buybuy, что тут понимать. Одна шестерня толкает другую. Проехали
  • wistopus
    05 июня 2023, 20:06
    Данный пост написан в обуздание моего гонора и обозначение технического гения уважаемого 3Qu.
    я всегда знал, что  3ку один из самых тута умных....

    а зачем цену предсказывать?.. достаточно иметь положительное математическое ожидание и эквити прет залюбуешься...
    п.с.
    Если Вы, Мальчишка, не ошиблися со своим кубическим конем… то поздравляю…
  • T-800
    05 июня 2023, 19:40
    Не забываем, что МальчикБуйБуй нашампурил овер 900 телочек. И на пенсии останавливаться на этой цифре не собирается)
  • Игрок
    05 июня 2023, 20:11
    Как скачать?
  • Matrica
    05 июня 2023, 20:11
    Заскринил бы, чего там индюк на экран выдает.
      • Beach Bunny
        05 июня 2023, 20:33
        Мальчик buybuy, типа вот так



  • Schurik
    05 июня 2023, 22:00
    И на каких таймфреймах работает данный кубический индикатор?
  • Synthetic
    05 июня 2023, 22:08
    arrangement of hyperplanes (на русском термина нет).


    Типа Ж… есть, а слова нет.

    С. А. Юзвинский
    «Алгебры Орлика–Соломона в алгебре и топологии»
    Обзор посвящен алгебрам Орлика–Соломона конфигураций гиперплоскостей.
    На english:
    This is a survey of Orlik–Solomon algebras of hyperplane arrangements.
  • Теперь пару слов о причинах моего coming out.

    Ка́минг-а́ут, также ка́мин-а́ут, ка́минг а́ут и камина́ут (от англ. сoming out of the closet, обычно сокращаемого до сoming out) — процесс открытого и добровольного признания человеком своей принадлежности к сексуальному или гендерному меньшинству, либо результат такого процесса.
  • vlad1024
    05 июня 2023, 22:26
    Взяли первые три момента распределения, сделали из них один линейный(в том смысле что эти факторы входят как линейная сумма) индикатор, он в принципе конечно работает, но очень слабо. По большей части curve fitting.
  • Василий Баранов
    05 июня 2023, 22:50
    Не погружён в суть дискуссии, но когда человек без иронии публично признаёт свою неправоту — моё уважение!
    • Damian D
      06 июня 2023, 14:17
      Василий Баранов, да просто хитрый способ пропиарить свой индикатор
  • Errar
    06 июня 2023, 00:38
    Даешь индикатор 4-го порядка, для которого будет хватать одного бара! )
    • Daniil Lazarev
      06 июня 2023, 00:54
      Сложно сказать. Я не смог получить улучшение результата путем повышения степени полинома. Без конкретики вообще что либо сказать невозможно. Но даже если есть улучшение, все равно без секретного ингредиента на минутках с учетом костов будут убытки
  • svgr
    06 июня 2023, 09:52
    Думаем, что коэффициенты этого кубического индикатора — результат подгонки. Со всеми вытекающими для иных участков, иных инструментов.
    • Damian D
      06 июня 2023, 14:27
      svgr, со стороны может показаться, что тут что-то интересное, похоже на споры инженеров. а если вникать, то это просто какие-то фокусы. просто это сильно выглядит, когда всякие волны, символы и стрелочки. а суть всегда одна: когда смотрим на линию цены, мы видим логику. а когда смотрим на индикаторы, видим магию статистики
      • svgr
        06 июня 2023, 16:32
        Damian Ershov, ну, я понимаю о чём тут хотели сказать. Попытки открыть волшебный шаблон, который ухватит внутреннюю суть колебаний цены.
        Однако нет никаких причин ему быть кубическим или каким-либо ещё. Получится просто переформулировка 'скользящей средней' в новых терминах с другим поведением. Которое преимущества всё равно не даст.
        Нужна модель, отражающая резкие всплески цены в какую-то сторону. После которых торгующие 'возврат к среднему' улетают в глубокие минуса. Только такая модель может что-то дать.
        • Daniil Lazarev
          07 июня 2023, 10:12
          svgr, на самом деле логика есть — кубический индикатор быстрее реагрирует на изменение цены, а значит теоретически может более точно описать прибыльный паттерн.
          Но, повторю, без пруфов или хотя бы деталей реализации это всего лишь гипотеза. Которая к меня подтверждения не нашла.
          • svgr
            07 июня 2023, 12:14
            Daniil Lazarev, так и должно быть. За счёт нелинейности происходит перераспределение результатов сделок. Становится больше выигрывающих подряд, но больше по размеру и проигрывающие, которые урежаются. Как при применении Мартингейла — приблизительная аналогия.
            А потом предъявляется выигрывающий участок торговли (благо что легко это сделать) и говорится, что в итоге что-то улучшилось.
        • RKS_01
          09 июня 2023, 18:22
          svgr, 
          мысль-то верная...
          выделение, точки нейтральности
          плюс, приоритет направления
          плюс, разница тейк/лосс
          вполне достаточно?)))
  • RKS_01
    09 июня 2023, 18:18
    что, сказать можно… поздравления!
    прошлую формулу, вы показали
    очень хотелось бы, увидеть данную

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн