Стратегия прекращения прибыли на основе скользящей средней

Автор:Чао Чжан, Дата: 2021-12-21 12:26:18
Тэги:

img

Обзор

Эта стратегия открывает позиции, основанные на золотом кресте и смертном кресте скользящих средних, и настраивает получение прибыли и остановку убытков на пол.

  1. Использовать систему скользящей средней для фильтрации ударов
  2. Принять перемещение, получение прибыли и остановка потерь для динамического управления капиталом
  3. Конфигурируемая фильтрация положения для предотвращения одностороннего открытия

Принцип стратегии

Стратегия состоит из четырех частей:

  1. Система скользящих средних

    Используйте золотой крест и смертельный крест скользящих средних для определения тенденций и фильтрации шоков.

  2. Переезд приносит прибыль и не приносит убытков

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

  3. Фильтрация положения

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

  4. ATR Stop Loss

    Использовать ATR для ограничения максимального диапазона стоп-потери и избежать чрезмерной стоп-потери.

В частности, стратегия сначала рассчитывает скользящую среднюю, длинные на золотом кресте, и короткие на смертном кресте. После входа, установите движущиеся линии получения прибыли и остановки убытков с определенным процентом. Если цена касается линии получения прибыли, то возьмите прибыль; если касается линии остановки убытка или превышает диапазон остановки убытка ATR, то остановите убыток.

Преимущества

Основными преимуществами этой стратегии являются:

  1. Высокая настраиваемость

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

  2. Хорошее управление капиталом

    Принятие движущегося сбора прибыли и стоп-лосса и ATR стоп-лосса может эффективно контролировать амплитуду одного стоп-лосса и достичь отличного управления капиталом.

  3. Подходит для рынка с тенденциями

    Стратегия скользящей средней сама по себе более подходит для сильных тенденций рынков для эффективной фильтрации шоков.

Риски и контрмеры

В этой стратегии также есть некоторые риски:

  1. Ошибочная оценка тенденции

    В данный момент скользящие средние параметры должны быть соответствующим образом скорректированы или другие показатели могут быть объединены для оценки тенденций.

  2. Чрезмерная стоп-лосс

    Движущаяся стоп-потеря может быть отменена при ударах. Параметры ATR должны быть объединены для установки диапазона стоп-потерь.

  3. Односторонние риски открытия

    Разрешение на фильтрацию позиций окажет некоторое влияние на частоту торговли.

Руководство по оптимизации

Основными направлениями оптимизации являются:

  1. Оптимизация параметров

    Корректировать цикл скользящей средней, параметры ATR, коэффициенты получения прибыли и остановки убытков и другие параметры для оптимизации эффективности стратегии.

  2. Добавление показателей

    Добавьте такие показатели, как CMF, OBV, чтобы оценить поток капитала и избежать чрезмерного стоп-лосса.

  3. Сочетание с другими стратегиями

    Сочетать с стратегиями прорыва, чтобы следовать тенденциям после того, как тенденция стабилизируется, чтобы достичь лучших результатов.

Резюме

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


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MGULHANN

//@version=5

//İchimoku Leading Span 2 Hesaplaması ve Girişleri
strategy("Stairs Gain Strategy - MG", overlay=true, margin_long=100, margin_short=100)
laggingSpan2Periods = input.int(52, minval=1, title="Leading Periot")
displacement = input.int(1, minval=1, title="Displacement")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
leadLine2 = donchian(laggingSpan2Periods)
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")

// İşlem Tekrarını Filtrele	 
filtreUygula = input.bool(true,title="Pozisyon Sıra Filtresi Uygula")

//Kar Al / Zarar Durdur Seviyeleri Girişleri
zararDurdurmaYuzde = input.float(1.0, title='Zarar Durdurma %', step=0.01) / 100
karAlmaYuzde = input.float(2.0, title='Kar Alma %', step=0.01) / 100

//ATR Hesaplaması
atrCarpani = input.float(0.3, title="ATR Çarpanı", step= 0.01)
atrDegeri = ta.atr(14) * atrCarpani

//ATR Değer Girişleri
atrbuyukdeger = input.float(0.01, title="ATR Üst Limit", step=0.01)
atrkucukdeger = input.float(0.06, title="ATR Alt Limit", step=0.01)

//Buy ve Sell Şartları
buycross =   ta.crossover(close,leadLine2[displacement-1]) ? atrDegeri > atrbuyukdeger : strategy.position_size == 0
sellcross = ta.crossover(leadLine2[displacement-1],close) ? atrDegeri < atrkucukdeger : strategy.position_size == 0

//KONTROL
var sonPozisyonYonu = 0
//Son kapanan pozisyon long ise degiskenin degerini 1 olarak ata
if strategy.position_size[1] > 0 and strategy.position_size == 0
    sonPozisyonYonu := 1

//Son kapanan pozisyon short ise degiskenin degerini -1 olarak ata
if strategy.position_size[1] < 0 and strategy.position_size == 0
    sonPozisyonYonu := -1
    
//eger filtre uygulama seçiliyse ve son pozisyon yönü long ise 'longFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun long olmasını engelle
longFiltreSonuc = filtreUygula ? sonPozisyonYonu == 1 ? false : true : true

//eger filtre uygulama seçiliyse ve son pozisyon yönü short ise 'shortFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun short olmasını engelle
shortFiltreSonuc = filtreUygula ? sonPozisyonYonu == -1 ? false : true : true

//LONG GİRİŞ
strategy.entry("Long", strategy.long, when=buycross and longFiltreSonuc)
longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
strategy.exit("Long Exit","Long",limit=longKarAl, stop=longZararDurdur)

//SHORT GİRİŞ
strategy.entry("Short", strategy.short, when=sellcross and shortFiltreSonuc)
shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
strategy.exit("Short Exit","Short",limit=shortKarAl, stop=shortZararDurdur)

//Kar Al ve Zarar Durdur Seviyelerinin Grafikte İşaretlenmesi
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.navy, linewidth=2, style=plot.style_linebr, title="İşleme Giriş Seviyesi")
plot(strategy.position_size > 0 ? longKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Long Kar Alım Seviyesi")
plot(strategy.position_size > 0 ? longZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Long Zarar Durdurma Seviyesi")
plot(strategy.position_size < 0 ? shortKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Short Kar Alım Seviyesi")
plot(strategy.position_size < 0 ? shortZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Short Zarar Durdurma Seviyesi")

//plotshape(buycross,size=size.small,style=shape.labelup,location=location.belowbar,color=color.green,text="Al", offset = displacement-1, textcolor=color.white)
//plotshape(sellcross,size=size.small,style=shape.labeldown,location=location.abovebar,color=color.red,text="Sat", offset = displacement-1, textcolor=color.white)


Больше