
이 전략은 평균선과 이동 평균선에 기반한 금색 포크 데드 포크를 입점으로 하고, 파워를 이용한 방법으로 스톱포드 손실을 설정한다. 이 전략의 주요 특징은:
이 전략은 크게 4가지로 구성되어 있습니다.
동선을 이용한 황금 십자 및 사각지대가 동향을 판단하고, 시장의 흔들림을 필터링한다.
수익을 잠금하고 위험을 통제하기 위해 일정 비율의 이동식 스톱로스를 사용하여 자금의 동적 관리를 구현하십시오.
포지션 필터를 열 수 있는지 설정할 수 있다. 이전 포지션이 다목적이라면, 다음 신호가 공백으로 포지션을 열 수 있어야 하며, 일방적인 포지션을 피한다.
ATR을 사용하여 최대 손실 범위를 제한하여 과도한 손실을 피하십시오.
구체적으로 말하면, 전략은 먼저 평균선을 계산하고, 평균선이 금색으로 교차할 때 더하고, 사각지대에 공백을 낸다. 출장 후, 일정 비율로 이동한 스톱과 스톱 라인을 설정한다. 가격이 스톱 라인을 만지면 스톱 라인을; 스톱 라인을 만지거나 ATR 스톱 범위를 넘으면 스톱 라인을 한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략의 많은 파라미터는 사용자 자신의 거래 스타일에 따라 조정할 수 있습니다.
모바일 스톱 스톱 및 ATR 스톱을 사용하여 단일 스톱 손실을 효과적으로 제어하여 우수한 자금 관리를 구현합니다.
평행선 전략은 그 자체로 유동성이 강한 시장에 적합하며, 흔들림을 효과적으로 필터링 할 수 있습니다.
이 전략에는 다음과 같은 위험도 있습니다.
평균선 자체는 복잡한 상황을 판단하는 데 완벽하지 않으며, 잘못된 판단이 발생할 수 있습니다. 이 경우 평균선 파라미터를 적절히 조정하거나 다른 지표와 결합하여 판단해야합니다.
이동 스톱은 흔들림에서 부정될 수 있으며, ATR 파라미터와 결합하여 스톱 범위를 설정해야 한다.
포지션 필터를 개설하는 것은 거래 빈도에 영향을 미치며, 장기간 단독 포지션을 보유하는 것은 추가적인 위험을 초래할 수 있다.
이 전략의 주요 최적화 방향은 다음과 같습니다.
평균 라인 기간, ATR 파라미터, 스톱 스톱 손실 비율과 같은 파라미터를 조정하여 전략 효과를 최적화하십시오.
CMF, OBV 등의 지표를 추가하여 재원 흐름을 판단하여 과도한 손실을 피하십시오.
트렌드가 안정된 후 추적하는 브레이크와 같은 전략과 결합하면 더 좋은 효과를 얻을 수 있습니다.
이 전략은 전반적으로, 일률적인 필터링과 모바일 스톱 손실 방식으로, 트렌드 기반의 동적 자금 관리를 구현한다. 융합성이 강하며, 합리적인 투자자가 자신의 스타일에 따라 조정하여 사용한다. 일반적인 양적 전략으로서, 최적화 여지가 넓으며, 깊이 있는 연구의 가치가 있다.
/*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)