プレッシャーバランスに基づく高確率の突破取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-11-13 11:40:53
タグ:

img

概要

この戦略は,トレンド方向と取引機会を決定するために複数の指標の組み合わせを使用して,取引の勝利率を高めるためにプレッシャーバランスアプローチを採用します. 主に判断のためにMACD,PSARおよびEMA指標を使用し,効果的な収益性を達成するためにストップロスを実装し,利益を上げます.

戦略の論理

  1. EMA を使って移動平均を計算し,全体的なトレンド方向を決定する.より大きな EMA 値は上昇傾向を示し,より小さな EMA 値は下落傾向を示します.

  2. MACD を使って,高速移動平均値とスロー移動平均値の違いを計算します.差が0を超えると上昇傾向を示し,0未満の場合下落傾向を示します.

  3. 連続変数点を計算するためにPSARを使用します.PSAR値が大きいときは下落傾向を示し,PSAR値が小さいときは上昇傾向を示します.

  4. 上記の3つの指標を組み合わせて傾向の一貫性を決定します. 3つの指標の判断が一貫している場合,入場取引を可能にする明確な傾向を表します.

  5. 購入・販売基準に基づいて取引を入力し,ストップ・ロストとテイク・プロフィートポイントを設定します. 利益を実現するためにストップ・ロストまたはテイク・プロフィートの条件が満たされたときに取引を終了します.

  6. 特別規則は次のとおりです.

    • 買い条件: 上向きではない,MACDヒストグラム < 0,閉値 > EMA
    • 売り条件:上昇傾向,MACDヒストグラム > 0,閉値 < EMA
    • ストップ・ロスの条件:価格が次のPSAR値に達
    • 利益を得る条件: 既定の利益を得る比率に達する

戦略 の 利点

  1. 傾向を判断するために複数の指標を使用することで 精度が向上します

  2. プレッシャーバランスによって特定された確固たる傾向に基づいて取引を開始すると 勝率が上昇します

  3. ストップ・ロスを設定して 利益を取ることで 損失を制限し 利益を固定できます

  4. 明確で体系的な取引ルールにより アルゴリズム取引に適しています

  5. パラメータは,異なる製品と時間枠に適応するように最適化できます.

戦略 の リスク

  1. トレンド判断が間違って,不正な取引方向に繋がる可能性があります.

  2. 極端な市場動向は,指標から誤った信号を生む可能性があります.

  3. ストップ損失が大きすぎて 間に合わない

  4. パラメータの調整が不適切である場合,取引が過度に多すぎたり,失敗したりします.

  5. 流動性のない商品は,ストップ・ロストと収益計画を実行することはできません.

  6. パラメータを最適化し ストップを調整し 液体製品を選択することで リスクを軽減できます

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

  1. 傾向の精度を最適化するために EMA 期間を調整する.

  2. 感度を向上させるため,MACDの高速と遅い期を調整します.

  3. ストップ・ロスを最適化して 利潤率を取って 理想的なバランスをとります

  4. 入力のタイミングを良くするために他の補助指標を追加します.

  5. 流動性が良くて変動が大きい商品を選びます

  6. 異なる製品特性に合わせて タイムフレームを調整します

概要

この戦略は,トレンド分析のための複数の指標を統合し,前もって設定されたストップ損失と利益を取ることにより,明確なトレンドに基づいて取引を行う.これは,特定の収益性を確保しながら,市場の動きを効果的に把握し,良い収益を達成することができます.パラメータチューニングと追加の指標を通じて安定性と収益性のさらなる改善を達成することができます.明確な取引規則は,この戦略をアルゴリズム取引に非常に適しています.


/*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')

	

もっと