この戦略は,トレンドと波動性を決定するために,異なる期間における移動平均と分散を計算することによって,価格の高値と低値を特定します.
この戦略の主な論理は,最近の異なる時間帯における移動平均と変動を計算することである.特に,5日,4日および3日移動平均 (ma,mb,mc) と変動 (da,db,dc) を計算する.その後,サイズを比較し,現在の傾向を表すために最も高い変動を持つ期間を選択する.最後に,代表期間の二乗変数を移動平均に掛け,最終曲線wgを出力する.
したがって,価格が上昇または下落すると,代表的な期間とその変動は著しく変化し,wgも著しく変化し,高値と低値の識別を達成します.
異なる期間に基づくトレンド変化を判断するこの考えは効果があり,価格の転換点を明確に特定することができます.単一の期間判断と比較して,複数の期間を組み合わせることで正確性とタイムリー性が向上します.
移動平均値と分散値を計算することも簡単で効率的です. コードサイズが小さいため,急激な価格変化に非常に敏感で,ブレイクを迅速に検出できます.
この戦略で使用される期間は短く,中期から長期の目的では判断が十分に正確で包括的ではない可能性があります.短期的な価格変動は判断の誤りを引き起こす可能性があります.
また,移動平均値 と 差値 の 重さ は 判断 結果 に 影響 し ます.正しく 設定 さ れ ない 場合,信号 は 偏り が あり ます.
判断をより包括的にするために,異なる長さのより多くの期間を追加して,例えば,中期から長期の目的のために10日,20日.
また,重量設定をより柔軟にするため,異なる重量スケジュールも試験することができる. 誤判の確率を減らすために,市場状況に基づいて重量を自動的に調整するためにパラメータ最適化が導入される可能性がある.
さらに,他の指標も取り入れられるだろう.例えば,異常な取引量など.そうすれば,仲介取引によって誤導されない.
この戦略の全体的な論理は明確で理解しやすい. 移動平均値と分散値を用いて価格動向と変動を判断し,それらを組み合わせて高値と低値を明確に識別できる曲線を出力する. このような多期間の組み合わせ判断は,短期および長期間の市場特性を効果的に把握し,曲線点検出の精度を向上させることができます. また,期間,重み,指標などの側面から最適化のための大きな余地があり,戦略をより堅牢かつ包括的にすることができます.
/*backtest start: 2024-02-12 00:00:00 end: 2024-02-19 00:00:00 period: 12h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("x²", overlay=false) a1=(close[2]-close[3])/1 a2=(close[1]-close[3])/4 a3=(close[0]-close[3])/9 b1=(close[3]-close[4])/1 b2=(close[2]-close[4])/4 b3=(close[1]-close[4])/9 b4=(close[0]-close[4])/16 c1=(close[4]-close[5])/1 c2=(close[3]-close[5])/4 c3=(close[2]-close[5])/9 c4=(close[1]-close[5])/16 c5=(close[0]-close[5])/25 ma=(a1+a2+a3)/3 da=(a1-ma)*(a1-ma) da:=da+(a2-ma)*(a2-ma) da:=da+(a3-ma)*(a3-ma) da:=sqrt(da) da:=min(2, da) da:=1-da/2 da:=max(0.001, da) mb=(b1+b2+b3+b4)/4 db=(b1-mb)*(b1-mb) db:=db+(b2-mb)*(b2-mb) db:=db+(b3-mb)*(b3-mb) db:=db+(b4-mb)*(b4-mb) db:=sqrt(db) db:=min(2, db) db:=1-db/2 db:=max(0.001, db) mc=(c1+c2+c3+c4+c5)/5 dc=(c1-mc)*(c1-mc) dc:=dc+(c2-mc)*(c2-mc) dc:=dc+(c3-mc)*(c3-mc) dc:=dc+(c4-mc)*(c4-mc) dc:=dc+(c5-mc)*(c5-mc) dc:=sqrt(dc) dc:=min(2, dc) dc:=1-dc/2 dc:=max(0.001, dc) g=close if(da>db and da>dc) g:=da*da*ma else if(db > da and db > dc) g:=db*db*mb else g:=dc*dc*mc wg=wma(g, 2) plot(wg) plot(0, color=black) longCondition = true //crossover(sma(close, 14), sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = true //crossunder(sma(close, 14), sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)