この戦略は,トレンド方向と取引機会を決定するために複数の指標の組み合わせを使用して,取引の勝利率を高めるためにプレッシャーバランスアプローチを採用します. 主に判断のためにMACD,PSARおよびEMA指標を使用し,効果的な収益性を達成するためにストップロスを実装し,利益を上げます.
EMA を使って移動平均を計算し,全体的なトレンド方向を決定する.より大きな EMA 値は上昇傾向を示し,より小さな EMA 値は下落傾向を示します.
MACD を使って,高速移動平均値とスロー移動平均値の違いを計算します.差が0を超えると上昇傾向を示し,0未満の場合下落傾向を示します.
連続変数点を計算するためにPSARを使用します.PSAR値が大きいときは下落傾向を示し,PSAR値が小さいときは上昇傾向を示します.
上記の3つの指標を組み合わせて傾向の一貫性を決定します. 3つの指標の判断が一貫している場合,入場取引を可能にする明確な傾向を表します.
購入・販売基準に基づいて取引を入力し,ストップ・ロストとテイク・プロフィートポイントを設定します. 利益を実現するためにストップ・ロストまたはテイク・プロフィートの条件が満たされたときに取引を終了します.
特別規則は次のとおりです.
傾向を判断するために複数の指標を使用することで 精度が向上します
プレッシャーバランスによって特定された確固たる傾向に基づいて取引を開始すると 勝率が上昇します
ストップ・ロスを設定して 利益を取ることで 損失を制限し 利益を固定できます
明確で体系的な取引ルールにより アルゴリズム取引に適しています
パラメータは,異なる製品と時間枠に適応するように最適化できます.
トレンド判断が間違って,不正な取引方向に繋がる可能性があります.
極端な市場動向は,指標から誤った信号を生む可能性があります.
ストップ損失が大きすぎて 間に合わない
パラメータの調整が不適切である場合,取引が過度に多すぎたり,失敗したりします.
流動性のない商品は,ストップ・ロストと収益計画を実行することはできません.
パラメータを最適化し ストップを調整し 液体製品を選択することで リスクを軽減できます
傾向の精度を最適化するために EMA 期間を調整する.
感度を向上させるため,MACDの高速と遅い期を調整します.
ストップ・ロスを最適化して 利潤率を取って 理想的なバランスをとります
入力のタイミングを良くするために他の補助指標を追加します.
流動性が良くて変動が大きい商品を選びます
異なる製品特性に合わせて タイムフレームを調整します
この戦略は,トレンド分析のための複数の指標を統合し,前もって設定されたストップ損失と利益を取ることにより,明確なトレンドに基づいて取引を行う.これは,特定の収益性を確保しながら,市場の動きを効果的に把握し,良い収益を達成することができます.パラメータチューニングと追加の指標を通じて安定性と収益性のさらなる改善を達成することができます.明確な取引規則は,この戦略をアルゴリズム取引に非常に適しています.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 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/ // © exlux99 //@version=4 strategy(title = "Crypto Scalper", overlay = true, pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03) len = input(60, minval=1, title="Length EMA") src = input(close, title="Source") out = ema(src, len) // fast_length = input(title="Fast Length MACD", type=input.integer, defval=12) slow_length = input(title="Slow Length MACD", type=input.integer, defval=26) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"]) sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal start = input(0.02) increment = input(0.02) maximum = input(0.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) tplong=input(0.245, step=0.005) sllong=input(1.0, step=0.005) tpshort=input(0.055, step=0.005) slshort=input(0.03, step=0.005) if (uptrend and hist >0 and close < out) strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short") strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort') if (not uptrend and hist <0 and close > out) strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long") strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closelong')