
この取引戦略は,シンプルな移動平均と均線交差のシステムに基づくトレンド追跡戦略である.それは,異なる周期の急速な移動平均と遅い移動平均の交差を多空の信号として利用する.急速な移動平均が,下から遅い移動平均を横切るとき,多空する.そして,急速な移動平均が,上から下から遅い移動平均を横切るとき,空っぽにする.この戦略は,傾向がより明らかな品種に適用される.
この戦略は,60日間のシンプル・ムービング・アベアンのような急速な周期と,200日間のシンプル・ムービング・アベアンのようなゆっくりとした周期を使用する.速い移動平均は,最近の価格動向を反映して,価格変化により迅速に反応する.遅い移動平均は,中長期の傾向を反映して,価格変化に反応する.
短周期平均線が上から長周期平均線を横切るときは,短周期価格が上昇し始め,多頭市場に入ると,空売りする.
この戦略は,均線の交差原理を用いてトレンドの方向を判断する.短周期価格が上昇するより速く,短周期平均線は長周期平均線を向上させ,そして下からそれを通過する.このとき,市場が上昇傾向に入ることを示すとき,もっとするべきである.逆に,短周期価格が低下するより速く,短周期平均線は長周期平均線を低下させ,そして上からそれを通過することを示すとき,市場が低下傾向に入ることを示すとき,空空するべきである.
急速平均線と遅い平均線の交差によって価格トレンドの転換点を捉え,それに応じて多空ポジションを調整する.これは,トレンドを判断し,取引信号を生成するこの戦略の主要な原則である.
移動平均の周期パラメータを調整することで,異なる品種の波動頻度に対応することができる. ストップ・ロズとストップ・ストップ戦略を改良し,より複雑な指標を利用して誤信号を減らす. 取引量フィルターなどの方法を追加して,この戦略を最適化し,戦略の安定性を高める.
この戦略は,以下の点でさらに最適化できます.
移動平均の快慢周期パラメータを最適化して,異なる波動周波数の品種に適合する。より多くの組み合わせをテストして,最適なパラメータを見つける。
エントリー条件を改め,取引量急増などの指標を追加してフィルタリングすることで,誤った信号を減らす.
ストップ・ストップ・ストップ戦略の改善,例えば,ストップ・トラッキングやダイナミック・ストップなど,利益の効率化.
コストアセスメントモジュールを追加し,シミュレーションをよりリアルにします.
パラメーターユニバースの設計は,様々な品種特性を考慮して,最適なパラメータの組み合わせを探します.
局所的な特徴の認識を高め,トレンドの転換点を判断し,ポジションの開設と平定のタイミングを把握する.
システム戦略の最適化により,利率と安定性を大幅に高め,撤退を減らすことができます.
この取引戦略は,均線交差による価格動向の転換を判断する典型的トレンド追跡戦略である.これは,異なる周期均線の交差を多空信号として利用し,急速均線と遅い均線の組み合わせによってトレンド方向を判断し,効果的なトレンドキャプチャを実現する.この戦略は,安定し,信頼され,容易に理解され,実装され,パラメータ最適化によりほとんどの品種に適応し,量化取引の基本戦略の一種である.他の技術指標と組み合わせ,止損平衡策の最適化などによって,この戦略の利潤率と勝率をさらに向上させることができる.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 10m
basePeriod: 1m
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/
// © thebearfib
//
//@version=5
//
strategy("x-over 150d_200d_sma - Free", overlay = true)
repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)
fast_length = input(title="Fast Length", defval=60)
slow_length = input(title="Slow Length", defval=275)
_fast = ta.sma(srcmc, fast_length)
_slow = ta.sma(srcmc, slow_length)
plot(_fast,
title="Fast SMA",
color=color.red,
linewidth = 1)
plot(_slow,
title="Slow SMA",
color=color.white,
linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc = input.float(title="Long Stop (%)", minval=0.01, step=1.0, defval=13) * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc * (1 + longProfitPerc)
longStopPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 - longStopPerc) : srcmc * (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition = srcmc > _slow and ta.crossover(_fast, _slow)
closeCondition = ta.crossover(srcmc, _slow)
if (longCondition)
strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")
if (closeCondition)
strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")
if (strategy.position_size > 0)
strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Never the End Just the beginning —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//