
この戦略は,均線と移動平均の金叉デッドフォークをベースにポジションを開設し,横断の方法を使用してストップ・ストローを設定します.主な特徴は:
この戦略は主に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)