2026-08-03

Как умирают стратегии

Многие думают что если стратегия умирает, то она начинает сливать. Либо, наоборот, если стратегия начинает сливать, то она умирает. Но, думаю, это не так. Стратегия в этом случае просто начинает колебаться у нуля, типа генератора случайных действий. Например, как эта:


Почему? Все просто. Кто-то придумывает стратегию, которая подогнана под прошлые данные, особенно, если это стратегия с очень малым количеством сделок. Например, в этой стратегии менее одной сделки в месяц. И публикует ее. Люди копируют код (условия стратегии), начинает торговать, а толку никакого -- ни зарабатывает, ни сливает.

Помню, условия этой стратегии для QQQ появились в 2022 году в Твиттере и потом кто-то закодировал ее в P123. И, с тех пор стратегия больше не зарабатывает, типа сломалась. Но ломается то что находится в работе, а так как в работе она вряд ли находилась, то и нельзя сказать что сломалась. Просто была подгонка под прошлые данные.

Когда-то закодировал ее в WL, даже пытался торговать, но так как долго не было сделок в 2022 году, то забросил. Иногда проверяю старые стратегии, вот и вылезла недавно.

У кого есть WL, могут проверить:

------------------------------------------------

using WealthLab.Backtest;

using System;

using WealthLab.Core;

using WealthLab.Data;

using WealthLab.Indicators;

using System.Collections.Generic;


namespace WealthScript1 

{

    public class MyStrategy : UserStrategyBase

    {

        //create indicators and other objects here, this is executed prior to the main trading loop

        public override void Initialize(BarHistory bars)

        {

ma50 = new SMA(bars.Close, 50);

ma125 = new SMA(bars.Close, 125);

zROC = new ROC(bars.Close, 5);

zRSI = new RSI(bars.Close, 2);

HROC = new Highest(zROC, 5);

        }


        //execute the strategy rules here, this is executed once for each bar in the backtest history

        public override void Execute(BarHistory bars, int idx)

        {

            if (!HasOpenPosition(bars, PositionType.Long))

            {

if (ma50[idx] > ma125[idx])

if (zROC[idx] < zROC[idx -1])

if (HROC[idx] < 0)

PlaceTrade(bars, TransactionType.Buy, OrderType.Market);

            }

            else

            {

                if (zRSI[idx] > 70)

PlaceTrade(bars, TransactionType.Sell, OrderType.Market);

            }

        }


//declare private variables below

private TimeSeries HROC;

private IndicatorBase ma50, ma125, zROC, zRSI ;


    }

}

2 комментария:

  1. а сколько до этого был процент годовых в среднем по этой стратегии?

    ОтветитьУдалить