この戦略は,スーパートレンドとフィッシャー・トランスフォームの指標を組み合わせて,長期的取引戦略の後に比較的安定したトレンドを実装する.スーパートレンド指標が購入信号を与え,フィッシャー・トランスフォームの指標が-2.5を下回って上昇するときに購入信号を生成する.この戦略はストップ・ロストとテイク・プロフィートでポジションを適切に管理する.
スーパートレンドインジケーターは,価格傾向の方向性を決定するために使用されます.価格が上部帯を超えると,それは上昇信号です.価格が下部帯を超えると,それは下落信号です.この戦略は,スーパートレンドが上昇しているときに購入信号を発信します.
フィッシャー・トランスフォーマー指標は,価格変動が消費者の心理に与える影響を反映する. (-2.5,2.5) のフィッシャー値は中立市場を表し,-2.5以下はパニック市場を表し,2.5以上はユーフォリック市場を表します.この戦略は,フィッシャーが-2.5を下回り,上昇するときに購入信号を発信し,パニックから中立への転換点を捕捉します.
ストップ・ロスは,ストップ・ロスは,ストップ・ロスは,ストップ・ロスは,ストップ・ロスは,ストップ・ロスは,ストップ・ロスは,エントリー価格マイナスATR値をATR倍数で掛け合わせ,ストップ・ロスはエントリー価格プラスATR値をATR倍数で掛け合わせ,ストップ・ロスの幅は,トレンドフォロー戦略のリスク管理理念を反映した,ストップ・ロスの幅より大きい.
リスク額管理も考慮します. ATRとリスク額に基づいてポジションサイズを計算し,単位リスクが設定されたリスク額を超えないようにします.
複数の指標を組み合わせることで,単一の指標によって引き起こされる頻繁な取引は避けられます.スーパートレンドはトレンド方向を決定し,フィッシャートランスフォームは安定した取引信号を形成するために市場心理を決定します.
適切なストップ・ロストとテイク・プロフィートを設定することで,長期保有の傾向を把握し,同時にリスクをコントロールできます.
リスク額管理と最小切符サイズを使用することで,各取引のリスクを制御し,手頃な価格を超えた大きな損失を回避できます.
取引シグナルは安定し,長期保有に適しています.フィッシャー変換はスムーズな指標で,市場のノイズをフィルターし,誤ったシグナルを避けるのに役立ちます.
インディケーターパラメータのための大きな最適化空間.スーパートレンドのATR期間と倍数,およびフィッシャーのスムーズさは,最適なパラメータ組み合わせを見つけるために異なる製品とタイムフレームに従って調整できます.
トレンドフォロー戦略として,範囲に限定された期間中に小さな損失を蓄積します.明らかな傾向を持つ製品と時間枠を選択する必要があります.
フィッシャー変換は極端な状況では効果的ではありません.市場が長時間同じ状態でいると,フィッシャー値は中立地帯から逸脱し続けます.この場合,戦略は中止する必要があります.
ストップ損失があまりにも近ければ,早速退出を引き起こす可能性があります.ストップ損失に十分なバッファを確保するために,ATR期間とATR倍数を合理的に設定する必要があります.
トランザクションコストを無視すると,収益性の高い取引が損をする.製品のトランザクションコストを考慮し,それに応じて利益を調整する必要があります.
戦略の利点を実現するには,長期的市場参加が必要です.長期的取引をサポートし,安定した考え方を維持するために十分な資本を確保します.
ATR 期間,ATR マルチプリキュアを調整し,ストップ・ロストを最適化し,利益を上げます.バックテストまたは動的に最適化します.
より安定した取引信号を見つけるために,平らな期間のように異なるフィッシャーパラメータを試してみます. 市場の変動に基づいて動的に調整することができます.
市場が不確実であるときに間違った取引を避けるためにフィルターとして他の指標を追加します.MA,変動等を使用して市場の傾向を判断します.
収益性の向上のために 移動,部分,ATRの遅れなど 利益を得る戦略をテストします
固定分数,ケリー式などの資本管理戦略を最適化して リスク/リターン比率を高めます
トランザクションコストを最適化して 小規模なポジションで収益を上げます
この戦略は,スーパートレンド,フィッシャー・トランスフォームおよび他の指標の利点を統合し,長期的取引戦略に従って安定したトレンドを形成する.ストップ損失,利益とリスク管理を通じて,良いリスク報酬比を達成することができる.戦略は,パラメータ,信号フィルタリング,資本管理などにさらなる最適化が必要で,実用的なパフォーマンスを向上させる.しかし,全体的な論理は堅牢であり,実用的な検証と継続的な最適化に価値がある.利益とリスクのマインドセットを適切に管理すれば,戦略は安定した長期的リターンを達成する可能性がある.
/*backtest start: 2023-10-26 00:00:00 end: 2023-11-02 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend and Fisher_LONG", overlay=true) //This block is for Fisher Transformation Calculation. len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you. high_ = ta.highest(hl2, len) low_ = ta.lowest(hl2, len) round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val value = 0.0 value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1])) fish1 = 0.0 fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1]) fish2 = fish1[1] // Buy condition for Fisher transformation. buy_signal = (fish1 < -2.5) and (fish1 > fish2) durum = 0 //just for the situation. if (buy_signal) durum := 1 // now it changes from 0 to 1. // Supertrend indicator inputs and calculations (same as in the indicator) Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it src = input(hl2, title='Source') Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it changeATR = input(title='Change ATR Calculation Method ?', defval=true) atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 up = src - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn = src + Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend // Calculate position size based on risk amount riskPerContract = atr * Multiplier contracts = RiskAmount / (riskPerContract * syminfo.mintick) //short signal condition buySignal = trend == 1 and trend[1] == -1 and durum == 1 plotshape(buySignal, title='Buy Signal', location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) // variables var float entryPrice = na var float stopLoss = na var float takeProfit = na var float atr1 = na var float takeProfit2 = na var float takeProfit3 = na //it calculates the stop level and reward profit levels using atr. if (buySignal) entryPrice := close atr1 := atr stopLoss := entryPrice - atr1 * Multiplier contracts := entryPrice / (entryPrice - stopLoss) * RiskAmount / entryPrice takeProfit := entryPrice + atr1 * Multiplier takeProfit2 := entryPrice + 2 * atr1 * Multiplier takeProfit3 := entryPrice + 3 * atr1 * Multiplier if (buySignal) strategy.entry("Buy", strategy.long, qty=contracts) // if (close <= stopLoss) strategy.close("Buy", comment="Stop Loss Hit") else if (close >= takeProfit) strategy.close("Buy", comment="Take Profit Hit") // draw the stop, entry and profit levels plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr) plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr) plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr) plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr) plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)