この戦略は均線に基づくトレンド追跡戦略である.異なる周期のEMA均線を利用して複数の取引信号を構築し,トレンド追跡取引を実現する.価格がより長い周期の均線を下回るときに徐々にポジションを増やすことで,価格平均コストの低下を実現する.戦略は,同時にストップ・ロスの条件を設定し,短周期の均線が転じるときにストップ・ロスの退出を行い,利益をロックする.
この戦略は,5つの異なる周期のEMA平均線を用いて取引信号を構築する.それぞれ,10日線,20日線,50,100日線,200日線である.この戦略は,価格とこれらの平均線の関係に応じて4組の買い条件を設定し,ピラミッド加仓を実現する.
価格が20日線以下で50日線以上であるとき,第1組の買いを触発する.価格が50日線以下で100日線以上であるとき,第2組の買いを触発する.価格が100日線以下で200日線以上であるとき,第3組の買いを触発する.価格が200日線以下であるとき,第4組の買いを触発する.また,購入の数は徐々に大きくなり,それぞれqt1,qt2,qt3およびqt4である.
売却の面で,戦略は同時に2組のストップ条件を使用する.第一組は,価格が10日線より高く,そして10日線が他の平均線より高いときにストップする.第二組は,価格が前日の10日線より低く,そして10日線が他の平均線より高いときにストップする.この2組は,効率的に中間のショートラインの利潤をロックする.
この戦略の最大の利点は,市場動向を自動で追跡できるロングラインの保有である.複数の購入条件のグループと分期加仓を通じて,購入コストを継続的に削減し,余分な収益を得ることができる.同時に,単一の購入ポイントがもたらす価格リスクも回避できる.
ストップ・ロスの面でも,戦略は最適化設計が行われている.短期平均線のターニングポイントを上方追いかけることで,迅速にストップ・ロスをして利益をロックすることができる.これは,損失のさらなる拡大のリスクを回避する.
この戦略が直面する最大のリスクは,長線調整の状況に困ることである.大盘が振動または下行通路にあるとき,均線信号は信頼できない.このとき,継続的に買い出し,ポジションを保持し,大きな損失を負う可能性がある.
もう一つのリスク点は,平均線は必ずしも正確ではないということです.短期間の価格の飛躍または拡大の動きは,平均線が誤った信号を発信する可能性があります.これは,他の技術指標と組み合わせて検証および最適化する必要があります.
取引量指数,Bollinger Bands信号など,他の技術指標判断を購入条件に追加することを考えることができます. これは,購入の成功率をさらに向上させることができます.
販売条件では,Boll上線または重要な支柱位置を二次ストップラインとして追加することもできます。これは,不要な小ストップを減らすことができます。または,モバイルストップ機能を追加して,ストップラインをリアルタイムで調整することもできます。さらに利益をロックすることもできます.
この戦略は均線システムを使用してトレンドを追跡する.ピラミッド式の分量加仓により,トレンドの動きから最大限の利益を得ることができる.同時に,二重の停止条件が設定され,資金の安全が保護される.これは長期にわたって追跡し,実物検証する価値のある戦略である.実際の状況に応じてパラメータとモデルを継続的に最適化できる.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)
// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true
// Profit condition
profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed
// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)
// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]
// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]
// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)
strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)