資源の読み込みに... 荷物...

無意味なSSLチャネル取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月27日 16:42:34
タグ:

img

概要

これはSSLチャネル指標に基づいたトレンドフォロー戦略です. 安定した資本成長のために利益をロックするためにストップ損失と利益管理を取り入れます.

戦略の論理

このコードの主なロジックは,SSL上部と下部帯の黄金の十字架を使用してトレンド方向を決定することである.特に,SSL上部帯がSSL下部帯の上部を横切るときは長行し,SSL下部帯がSSL上部帯を下部を横切るときは短行する.

ポジションに入ると,ストップ・ロストとテイク・プロフィート価格を設定するために,戦略はATRを係数で掛け合わせる.例えば,ストップ・ロスト価格は価格マイナスATR * 1.5で,テイク・プロフィート価格は価格プラスATR * 1です.これは単一の損失を効果的に制御し,利益をロックすることができます.

SSLチャネルが横断すると,ポジションを閉じる.これは,タイミングでストップ損失を起こすためにトレンドの inflection point を追跡することができます.

利点分析

  1. SSLチャネルはトレンド方向を決定するのに非常に正確です
  2. リスクを効果的に制御するために,ストップ・ロストと得益設定が合理的である
  3. タイムリーストップ損失は,トレンドの転換点を追跡します.

リスク分析

  1. トレンド トレーディング は 簡単に 過剰 トレーディング に 繋がる
  2. SSLチャネル判定に失敗する可能性がある
  3. ATR係数は最適化する必要がある

対応する解は:

  1. 保持期間を適切に調整する
  2. 確認のために他の指標を組み込む
  3. ATR係数の異なる組み合わせを試験する

オプティマイゼーションの方向性

  1. 最適なパラメータ組み合わせを見つけるためにATRパラメータを最適化
  2. シグナルをフィルタリングし確認するための他の指標を増やす
  3. 保有期間を異なる市場に応じて調整する
  4. ストップ・ロスの戦略を最適化し,利益を得る

概要

この戦略の全体的な論理は明確で,SSLチャネルを使用してトレンドを決定し,合理的なストップ・ロストとテイク・プロフィートを設定する.しかし,誤った信号をフィルタリングし,最適なパラメータ組み合わせを見つけるために他の指標を組み込み,さらなるテストと最適化が必要である.同時に,パラメータは,戦略をより柔軟にするために異なる市場に応じて調整されるべきである.全体的に,この戦略は安定した収入を達成するための信頼できる枠組みを提供します.


/*backtest
start: 2022-11-26 00:00:00
end: 2023-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Designed per No Nonsense Forex VP rules
//For testing your individual indicators before the full system
//Originated from causecelebre
//Tried to put in as much VP rules as possible

///////////////////////////////////////////////////
//Rules Implemented:
///////////////////////////////////////////////////
// - SL 1.5 x ATR
// - TP 1 x ATR
//
// - Entry conditions
//// - Entry from 1 x confirmation
// - Exit conditions
//// - Exit on confirmation flip 

///////////////////////////////////////////////////
//Trades entries
///////////////////////////////////////////////////
// - First entry L1 or S1 with standard SL and TP

///////////////////////////////////////////////////
//Included Indicators and settings
///////////////////////////////////////////////////
// - Confirmtion = SSL 10

///////////////////////////////////////////////////
//Credits
// Strategy causecelebre https://www.tradingview.com/u/causecelebre/
// SSL Channel ErwinBeckers https://www.tradingview.com/u/ErwinBeckers/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Change log
//First release. Testing of indicators
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

strategy(title="NNFX Strategy Indicator | jh", overlay = true )

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Set the main stuff  ****
///////////////////////////////////////////////////

//Price
price = close

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ATR stuff
///////////////////////////////////////////////////

slMultiplier = input(1.5, "SL")
tpMultiplier = input(1, "TP")

atrlength = input(title="ATR Length", defval=14, minval=1)
atrsmoothing = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])

ma_function(source, atrlength) => 
    if atrsmoothing == "RMA"
        rma(source, atrlength)
    else
        if atrsmoothing == "SMA"
            sma(source, atrlength)
        else
            if atrsmoothing == "EMA"
                ema(source, atrlength)
            else
                wma(source, atrlength)

//plot(ma_function(tr(true), atrlength), title = "ATR", color=#991515, transp=0)

atr = ma_function(tr(true), atrlength)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Confirmation ****
///////////////////////////////////////////////////

ssllen=input(title="SSL Length Period", defval=10)
smaHigh=sma(high, ssllen)
smaLow=sma(low, ssllen)
Hlv = na
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh: smaLow
sslUp   = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, "SSL Down", linewidth=1, color=red)
plot(sslUp, "SSL Up", linewidth=1, color=lime)

///////////////////////////////////////////////////
//Confirm Signals
///////////////////////////////////////////////////

c_Up = sslUp
c_Down = sslDown

//Signals based on crossover
c_Long = crossover(c_Up, c_Down)
c_Short = crossover(c_Down, c_Up)

//Signals based on signal position
trendLong = c_Up > c_Down ? 1 : 0
trendShort = c_Down > c_Up ? 1 : 0

confirmLong = c_Long
confirmShort = c_Short

plotshape(trendLong, color = green, style=shape.triangleup, location=location.bottom)
plotshape(trendShort, color = red, style=shape.triangledown, location=location.bottom)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Entries and Exits
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (year>2009)

    //Long entries with standard 1.5 ATR for SL, 1 ATR for TP
    long_sl = price - (atr * slMultiplier)
    long_tp = price + (atr * tpMultiplier)
    strategy.order("L1", strategy.long, when = confirmLong)
    strategy.close("L1", when = confirmShort)
    strategy.exit("L Limit Exit", "L1", stop = long_sl, limit = long_tp)

    
    //Short entries with standard 1.5 ATR for SL, 1 ATR for TP
    short_sl = price + (atr * slMultiplier)
    short_tp = price - (atr * tpMultiplier)
    strategy.order("S1", strategy.short, when = confirmShort)
    strategy.close("S1", when = confirmLong)
    strategy.exit("S Limit Exit", "S1", stop = short_sl, limit = short_tp)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//End
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    




もっと