
この戦略は,移動平均指標,比較的強い指標 ((RSI)) と吞形状を組み合わせて,黄金の取引で長短双方向操作を行います. 21日線,50日線および200日線の交差を主要な取引信号として使用し,RSI指標と吞形状は,市場への入場点をさらに最適化するためにフィルター信号を補助します.
この戦略は,主に以下のような要素によって取引決定を行います.
21日線と200日線の金叉/デッドフォークをトレンド転換の主要な指標として使用する. 21日線上での200日線を横切るときは看板信号,21日線下での200日線を横切るときは下落信号である. さらに50日線フィルター空跳び信号と結合する.
RSI指標の超買線と超売線を設定し,RSIが70以上なら超買,RSIが30以下なら超売する.看板信号の時はRSIが超買区間ではなく,看板信号の時はRSIが超売区間ではなく,高値で買い,低値で売ることを避ける.
看板信号を発信する時には看板吞食形candleが表示され,看板信号を発信する時には看板吞食形candleが表示され,トレンドの転換を確認する.
この3つの条件が同時に満たされると,取引シグナルと注文が生み出され,厳格なフィルター群が形成されます.
この戦略の最大の利点は,複数のパラメータと指標を利用して総合的な判断を行い,誤信号をうまくフィルタリングして,不必要なストップ損失を減らすことだ.具体的利点は,以下のいくつかの側面に表れている.
移動平均策には一定の安定性があります.
RSIの設定は,高値の買取と低値の売却を回避しています.
消費形態の加入は,トレンドの逆転の信頼性をさらに確認する.
ストップダストの幅は小さく,リスクを効果的にコントロールできます.
この戦略は,信号フィルタリングとリスク管理の面でうまく機能していますが,どんな戦略にも弱点やリスクがあります.
パラメータ設定は複雑で,最適なパラメータ組み合わせを見つけるために多くのテストが必要になる可能性があります.
入り口は厳格で,良い機会を逃す可能性もあります.
緊急事態の際には,ある程度の遅れが生じます.
長期にわたる安定性については,まだ確認されていない.
このリスクに対して,パラメータを調整し,コードロジックを最適化し,他の指標と組み合わせることで改善や最適化を行うことができます.
この戦略は,複数の指標を総合的に判断する上でうまく行っているが,最適化の余地がある.主な最適化の方向は,以下の通りである.
パラメータを調整して最適の組み合わせを探します.より多くの歴史データを反省し,結果に対する異なるパラメータの影響を比較して,より優良なパラメータセットを見つけることができます.
他の指標と組み合わせて補助する。例えばMACD,KDなどの指標も,トレンド転換のタイミングを判断するのに補助する。適切な他の指標を導入することで,より強力な指標体系を形成することができる。
損失を抑える仕組みの最適化と改善 既存の損失の幅は小さいので,異なる幅の損失が不必要なポジション切替を減らすことができるかどうかをさらにテストすることができます.
より長い時間帯のデータをテストし,戦略の長期的有効性を検証する.より多くの年限と市場状況の反省によって,戦略の安定性を検証する.
この戦略は,移動平均,RSI指標,吞食形態などの複数の技術分析ツールを総合的に使用して,金取引における長短双方向操作を行う.パラメータ設定と信号フィルタリングにより,より厳格な戦略体系が形成され,ある程度リスクが制御される.しかし,いかなる戦略も”00%完璧であることは不可能であり,この戦略にもまだ多くの最適化スペースと方向があります.全体的に,この戦略は,量化取引に一定の参照を提供します.しかし,依然として慎重に扱われ,実際の状況に応じて調整する必要があります.
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Gold Trading with Simons Strategy", overlay=true)
// Parameters
length21 = input(21, minval=1, title="Length for 21 MA")
length50 = input(50, minval=1, title="Length for 50 MA")
length200 = input(200, minval=1, title="Length for 200 MA")
rsiLength = input(14, minval=1, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")
takeProfitPercent = input(4, title="Take Profit %")
stopLossPercent = input(1, title="Stop Loss %")
// Moving Averages
ma21 = sma(close, length21)
ma50 = sma(close, length50)
ma200 = sma(close, length200)
// RSI
rsi = rsi(close, rsiLength)
// Engulfing Pattern
isBullishCandle(c) => close[c] > open[c]
isBearishCandle(c) => close[c] < open[c]
bearishEngulfing = isBullishCandle(1) and isBearishCandle(0) and close < open[1] and open > close[1]
bullishEngulfing = isBearishCandle(1) and isBullishCandle(0) and close > open[1] and open < close[1]
// Calculate Take Profit and Stop Loss Levels
takeProfitLevel(entryPrice) => entryPrice * (1 + takeProfitPercent / 100)
stopLossLevel(entryPrice) => entryPrice * (1 - stopLossPercent / 100)
// Entry Conditions
longCondition = crossover(ma21, ma200) and close > ma21 and close > ma50 and rsi < rsiOverbought and bullishEngulfing
shortCondition = crossunder(ma21, ma200) and close < ma21 and close < ma50 and rsi > rsiOversold and bearishEngulfing
// Entry
if (longCondition)
entryPrice = close
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit", "Long", limit=takeProfitLevel(entryPrice))
strategy.exit("Stop Loss", "Long", stop=stopLossLevel(entryPrice))
if (shortCondition)
entryPrice = close
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit", "Short", limit=takeProfitLevel(entryPrice))
strategy.exit("Stop Loss", "Short", stop=stopLossLevel(entryPrice))
// Plotting
plot(ma21, color=color.blue, title="21 MA")
plot(ma50, color=color.orange, title="50 MA")
plot(ma200, color=color.red, title="200 MA")
hline(rsiOverbought, "RSI Overbought", color=color.green)
hline(rsiOversold, "RSI Oversold", color=color.red)
plot(rsi, "RSI", color=color.purple)