
この戦略は,99周期のシンプル移動平均 ((MA99) をベースに取引信号を判断する.価格がMA99に触れたときにポジションを開くことができるが,2つのK線で確認する必要はない.止損は,動的ストップを採用する.つまり,価格がMA99を破り,次のK線で確認されると平仓ストップである.この戦略は,MA99の近くの価格の変動を捕捉し,同時に動的ストップでリスクを制御することを目的としている.
MA99接触とダイナミックストップ戦略は,価格とMA99の関係を判断してポジションを開き,ダイナミックストップを使用してリスクを制御する.この戦略は,使いやすいし,中長期のトレンドをたどることができるが,不安定な市場では頻繁に取引される問題に直面する可能性がある.他の指標のフィルタリング,最適化パラメータ,ポジション管理,コストを考慮するなどの措置を導入することによって,この戦略のパフォーマンスをさらに向上させ,安定性を高めることができる.
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=5
strategy("MA99 Temas ve Dinamik Stop-Loss Stratejisi", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// MA99 hesaplayalım
ma99 = ta.sma(close, 99)
plot(ma99, color=color.blue, title="MA99")
// Fiyatın MA99'a temas edip etmediğini kontrol edelim
priceTouchedMA99 = (low <= ma99 and high >= ma99)
// Long ve short koşullarını tanımlayalım
longCondition = priceTouchedMA99 and close > ma99
shortCondition = priceTouchedMA99 and close < ma99
var float longStopLoss = na
var float shortStopLoss = na
var int longStopTriggered = 0
var int shortStopTriggered = 0
// Alım veya satım sinyallerine göre işlemleri başlatalım ve stop-loss ayarlayalım
if (longCondition)
strategy.entry("Long Entry", strategy.long)
longStopLoss := ma99
longStopTriggered := 0
if (shortCondition)
strategy.entry("Short Entry", strategy.short)
shortStopLoss := ma99
shortStopTriggered := 0
// Stop-loss koşullarını ve iki mum kuralını kontrol edelim
if (not na(longStopLoss))
if (close < longStopLoss)
longStopTriggered := 1
else
longStopTriggered := 0
if (longStopTriggered[1] == 1 and close < longStopLoss) // Bir önceki mumda tetiklendi ve hala altında
strategy.close("Long Entry", comment="Stop Loss Long")
longStopLoss := na
longStopTriggered := 0
if (not na(shortStopLoss))
if (close > shortStopLoss)
shortStopTriggered := 1
else
shortStopTriggered := 0
if (shortStopTriggered[1] == 1 and close > shortStopLoss) // Bir önceki mumda tetiklendi ve hala üstünde
strategy.close("Short Entry", comment="Stop Loss Short")
shortStopLoss := na
shortStopTriggered := 0