
双均線ゴールドクロスアルゴリズムは,快線と慢線の交差を計算することによって,買賣のタイミングを判断する. 快線は,8日の指数移動平均を採用し,慢線は最近8日の最低価格の指数移動平均を採用する. 快線が低い線を上から切るとき,買買の信号を生成する. 快線が低い線を上から切るとき,売出の信号を生成する.
この戦略の核心原理は,速線が最近の価格変化の傾向を表し,遅線が最近の低価格レベルを表している. 速線が遅線を横切るときは,価格が上昇し始め,最近の低価格を上回るので買取シグナルを生成する. 速線が遅線を横切るときは,価格が低下し始め,最近の低価格を下回るので売出シグナルを生成する.
具体的には,8日間の指数移動平均を快線として計算し,最近8日間の最低価格の指数移動平均を慢線として計算し,価格と快線の差値を計算し,差値の変化の傾向を判断する.差値が正値に変わると価格が上昇し始め,差値が負値に変わると価格が低下し始めることを示す.差値が0を超えると買入シグナルが生じ,差値が0を超えると売出シグナルが生じます.
双均線ゴールドクロスアルゴリズムの最大の優点は,戦略の構想がシンプルで,容易に理解し,実行することにある. 快慢均線のクロスによって買い売りのタイミングを判断することは,技術分析において比較して成熟し,一般的に使用される方法である. この戦略は,この成熟した方法を適用し,同時に,より信頼性の高い取引シグナルを生成するために,快線と慢線のクロス組み合わせを使用して改良された. この組み合わせは,誤った信号を回避し,信号品質を向上させるという点で一定の効果がある.
さらに,この戦略には,ストップ・ロスの仕組みが加えられている.価格が20%以上上昇すると,そのポジションのストップ・ロスは入場価格の1.2倍に設定される.これは,利益のほとんどをロックし,損失を避ける.同時に,戦略の収益率も確保される.
双均線金交差アルゴリズムにも一定のリスクがある.この戦略は価格と移動平均の関係に基づいて取引のタイミングを決定するだけである.価格が異常な波動を起こし,移動平均が間に合うように反応できない場合,誤った取引信号が生じる可能性がある.このとき,盲目的に信号に従う損失を避けるために,価格の動きを人工的にチェックする必要がある.
また,入場価格の1.2倍にストップメカニズムを設定することは,あまりにも保守的であり,全体の市場を維持することはできません.価格が上昇し続けると,ストップを設定すると,早めにストップし,より大きな利益を得ることはできません.これには,異なるパラメータをテストして,より適切なストップ位置を見つける必要があります.
この戦略にはさらに最適化できる余地もある。第一に,異なるパラメータをテストして,移動平均の周期パラメータを最適化して,シグナル品質に最適のパラメータの組み合わせを見つけることができる。第二に,波動率指標などを加えることができ,価格の揺れ期に誤った信号を生成しないようにすることができる。第三に,機械学習方法を使用して,自動的にストップロスの位置を最適化することができる。第四に,同類の資産間の情報を加えることができ,ポートフォリオ取引システムを構築し,信号の信頼性を高めることができる。
双均線ゴールドクロスアルゴリズムは,全体として非常に実用的な量化取引戦略である.均線クロスの成熟した技術分析方法を使用して取引シグナルを生成し,パラメータとルールの改善を最適化している.この戦略は,信号がシンプルで明快で,考え方が理解しやすい;効果的部分ノイズをフィルターし,信号の質を向上させ,リスク制御のための止損機構を設定している.次のステップは,さらなるパラメータ最適化,モデル最適化によって,この戦略は,安定した信頼性の高いプログラム化された取引システムになる可能性がある.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "Estratégia de Cruzamento das Linhas")
// Configuração da Média Móvel
emaPeriod = 8
ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)
// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA
//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0
gain = strategy.position_avg_price*(1+0.2)
// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) and diffZero
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)
// Executa as operações de compra/venda
if buy_signal
strategy.entry("Buy", strategy.long)
if sell_signal
strategy.exit("Buy", limit = gain)
// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)
plot(diffLow, title="Diferença", color=color.red, linewidth=2)