
この戦略は本質的に均線交差戦略である. 価格の移動平均を計算し,一定の長期移動平均を設定することで,短期移動平均が下から長期移動平均を横切るときは多し,短期移動平均が上から下から長期移動平均を横切るときは空にする.
価格平均線交差策の核心思想は,価格の移動平均が価格変化のトレンドを効果的に反映できるというものである.戦略は,2つの異なる周期の移動平均を設定し,特定の取引論理を用い,市場状況のトレンドの変化を判断して取引信号を生成する.
この戦略は,より長期の平均線とより短期の平均線を計算する.長線は,主に大きなトレンドを判断し,短線は,大きなトレンドの過程で短期的な波動を捕捉するために使用される.戦略の取引シグナルは,主に,短線と長線の交差から生じる:短線上の長線を穿越して多信号,短線下の長線を穿越して空白信号を行う.さらに,戦略は,偽信号を避けるために,信号をさらにフィルタリングする.
具体的には,この戦略はSMA,EMA,VWMAなど7種類の異なる移動平均を採用しており,ユーザーは移動平均のタイプを選択することができます.移動平均の長さは柔軟に設定できます.さらに,この戦略は,一定の取引時間制限とポジション管理機構を提供します.これらの設定を通じて,ユーザーは,異なる品種と市場環境に合わせて戦略のパラメータを柔軟に調整できます.
価格平均線交差策の主要な利点は以下の通りである.
戦略の論理は明確でシンプルで,理解し,実行しやすいので,初心者向けの学習に適しています.
戦略の原理は堅牢で,十分に検証された均等取引法に基づいており,市場実務試験を経ている.
戦略のパラメータは柔軟に調整され,ユーザーは市場に対する判断と好みに応じて適切なパラメータを選択することができます.
戦略には,損失シート保持時間を短縮し,不必要な逆転ポジションの開設を防ぐためのリスク管理メカニズムがあります.
戦略には複数の平均型が含まれ,ユーザーは自分の取引品種に最も適した移動平均型を選択できます.
戦略は,特定の取引時間帯で取引ロジックを開くことをサポートし,主要な休日市場の異常な波動を回避します.
価格平均線交差策には多くの利点があるが,実際の取引にも一定のリスクがある.これは主に以下の2つの点で表れている.
移動平均の大半が遅滞しているため,交差信号は価格逆転が完了した後の遅い時期に現れる可能性があり,容易に封じ込められる.
パラメータが正しく設定されていない場合,交差シグナルが頻度が高くなり,取引活動が過度になり,取引コストが高くなる可能性があります.
上記のリスクは,以下の方法で制御・対応できます.
控えめな止損幅を設定することで,単一損失のリスクを制御する.
フィルタリング条件を増やし,取引頻度を低下させ,過剰取引を防止する.例えば,価格チャネルまたは価格変動幅の条件を設定する.
移動平均のパラメータを最適化し,自分の取引品種と周期に最も適したパラメータの組み合わせを選択します. 異なる市場条件下での戦略の安定性をテストします.
価格平均の交差策には,以下の点からさらに最適化できる余地があります.
価格の急激な変動時に取引を一時停止し,市場の異常期を回避するなど,過激な状況下での保護メカニズムを増やす.
フィルタリング条件をさらに加え,取引信号を組み合わせ,信号の質と安定性を向上させる.例えば,他の技術指標と組み合わせたトレンド性のあるクロス.
ダイナミックなパラメータシステムを使用する.市場条件と品種特性に応じて移動平均の長さ,取引スイッチなどの重要なパラメータを自動的に調整する.固定値を使用するのではなく.
この平均線交差信号を複合多種引などの高級戦略で適用する.他の情報と組み合わせて,深度戦略の最適化を行う.
これらの提案は,この戦略の適用環境を広め,取引効果を向上させ,リスクとリターンをよりよく統合することができます.
この記事では,Noro’s CrossMAの簡易均線交差戦略の詳細なコード解析と読み解きが行われている.我々は,その戦略の思想,原理構造,主要優位性,および可能な改善の方向を分析している.この戦略は,全体的に論理的に明確で,シンプルで実用的で,パラメータ調整が柔軟で,さまざまな取引環境に適応できる.我々は,戦略に存在する問題とリスクを分析し,標的の処理勧告を与えています.これらの総合的な分析と議論によって,トレーダーは,このタイプの戦略をより深く理解することができ,実体取引システムの継続的な最適化に役立ちます.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Noro's CrossMA", shorttitle = "CrossMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.1)
needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
type = input(defval = "SMA", options = ["SMA", "EMA", "VWMA", "DEMA", "TEMA", "KAMA", "PCMA"], title = "MA type")
src = input(close, defval = close, title = "MA Source")
len = input(30, defval = 30, minval = 1, title = "MA length")
off = input(00, defval = 00, minval = 0, title = "MA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)
//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3
//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
kama = 0.0
kama := nz(kama[1]) + nsmooth * (src - nz(kama[1]))
//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
sma_1 = sma(src, len)
ema_1 = ema(src, len)
vwma_1 = vwma(src, len)
ma2 = type == "SMA" ? sma_1 : type == "EMA" ? ema_1 : type == "VWMA" ? vwma_1 : type == "DEMA" ? dema : type == "TEMA" ? tema : type == "KAMA" ? kama : type == "PCMA" ? center : 0
ma = ma2[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)
//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)
//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend == 1 and trend[1] == -1
strategy.entry("Long", strategy.long, lot, when = needlong and truetime)
if trend == -1 and trend[1] == 1
strategy.entry("Short", strategy.short, lot, when = needshort and truetime)
if size > 0 and needshort == false and trend == -1
strategy.close_all()
if size < 0 and needlong == false and trend == 1
strategy.close_all()
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")