
この戦略は,超トレンド指標に基づいて入場点を判断し,指標が逆転したときに多空を行う.また,3つの異なる比率のストップカードを設定し,それぞれ,2%,5%,および10%のストップカードを固定し,異なるレベルの利益をロックする.
この戦略は超トレンド指標を用いて市場動向を判断する.超トレンド指標は,平均実際の波幅と倍数因子に基づいており,価格が上線を超えると超買い状態で,価格が下線を下回ると超売り状態である.したがって,この戦略は,超トレンド指標の方向の変化を監視して,超買いと空売りを判断する.
具体的には,超トレンド指標の変化が0未満であるとき,指数は上から下へ反転し,多値シグナルを形成する.超トレンド指標の変化が0以上であるとき,指数は下から上へ反転し,空値シグナルを形成する.多値または空値シグナルを受信した後,入場価格を記録し,下位入場注文を行う.
この戦略は3つの異なる割合のストップオードを同時に設定し,それらのストップ価格は入場価格の1.02倍,1.05倍,および1.10倍で,固定ストップ2% ,5% ,および10%の利益に対応する.この3つのストップオードの手数量の割合はそれぞれ25%,50%および25%に設定されている.ポジション開設シグナルを受信した後,この戦略は,異なるレベルの利益をロックすることを意図して3つのストップオードを同時に掛ける.
この戦略には以下の利点があります.
超トレンド指標を用いて入場を判断し,トレンドの逆転点を効果的に捉え,精密に空き場を空けること.
複数のストップ・オーダー比率を設定することで,異なるレベルの利益をロックし,撤回を減らすことができます.
ストップフード設定は保守的で,2%,5%および10%の目標利益を主として,過度の利益を追求による損失拡大を避ける.
策略の論理はシンプルでわかりやすく,理解しやすく,変更しやすく,量化取引の初心者向けに適しています.
この戦略にはいくつかのリスクがあります.
超トレンド指標は正しく設定されず,トレンドの反転点を逃す可能性があり,入場が不正確になる.
停車位設定が保守的すぎると,より大きな利益をもたらす機会を逃してしまう可能性があります.
突発的な出来事は,急速な空飛ぶまたは断絶を引き起こし,超トレンドの指標は反応しなくなり,止損が引き起こされる.
ストップ・ロスの条件が設定されていない戦略で,無限損失のリスクがある.
この戦略は,以下の点で最適化できます.
様々な超トレンド指標のパラメータをテストし,指標の感度を最適化します.
ストップ・ロスの条件を増やし,最大負債額を設定し,リスクをコントロールする.
異なる品種と取引周期に応じて,ストップの比率とストップの数を調整する.
他の指標のフィルタを追加して,震動の時に頻繁にポジションを開くのを避ける.
戦略のデフォルト取引額を調整することで,単一リスクを下げる.
この戦略は,全体的に比較的シンプルで実用的です。入場時刻を判断する超トレンド指標を使用し,その後,利益をロックするために複数のストップカードを使用し,リスクを効果的に制御できます。しかし,戦略には,さらに最適化できる場所もあります.例えば,ストップ損失設定,最適化パラメータなど,これらは,将来的な改善のための方向性を提供します。全体として,この戦略は,量化取引の初心者の学習と実践に適しています。
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy( "Supertrend with TP", overlay=true )
// Supertrend Settings
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)
// TP's
tp1Open = input.bool(true, "TP1")
tp1 = input.float(2.0, "TP Level (%)", step = 0.1) / 100
tp1Amount = input.int(25, "Amount (%)", step = 1)
tp2Open = input.bool(true, "TP2")
tp2 = input.float(5.0, "TP Level (%)", step = 0.1) / 100
tp2Amount = input.int(50, "Amount (%)", step = 1)
tp3Open = input.bool(true, "TP3")
tp3 = input.float(10.0, "TP Level (%)", step = 0.1) / 100
tp3Amount = input.int(25, "Amount (%)", step = 1)
[_, direction] = ta.supertrend(factor, atrPeriod)
entryPrice = 0.0
entryPrice := entryPrice[1]
if ta.change(direction) < 0
strategy.entry("Long", strategy.long)
entryPrice := close
if ta.change(direction) > 0
strategy.entry("Short", strategy.short)
entryPrice := close
if (tp1Open)
strategy.exit ("TP1", from_entry="Long", limit=entryPrice * (1 + tp1), qty_percent=tp1Amount)
strategy.exit ("TP1", from_entry="Short", limit=entryPrice * (1 - tp1), qty_percent=tp1Amount)
if (tp2Open)
strategy.exit ("TP2", from_entry="Long", limit=entryPrice * (1 + tp2), qty_percent=tp2Amount)
strategy.exit ("TP2", from_entry="Short", limit=entryPrice * (1 - tp2), qty_percent=tp2Amount)
if (tp3Open)
strategy.exit ("TP3", from_entry="Long", limit=entryPrice * (1 + tp3), qty_percent=tp3Amount)
strategy.exit ("TP3", from_entry="Short", limit=entryPrice * (1 - tp3), qty_percent=tp3Amount)