3 10 オシレータープロフィールフラグリング戦略は,MACD指標として3日間と10日間の単純な移動平均の差を計算し,市場における買い手と売り手の強さを決定するためのボリューム分析を組み合わせて取引信号を生成する.この戦略には,主要価格領域,ボリューム特性,MACD指標逆転を使用してエントリーと出口機会の確認も含まれています.
この戦略のコア指標は,MACDで,高速移動平均線と遅い移動平均線で構成されている.高速線は3日間のシンプル移動平均線であり,スローラインは10日間のシンプル移動平均線である.その間の違いはMACDヒストグラムを形成する.高速線が下からスローラインを越えると,購買力の強化を表現し,購入信号を生成する.逆に,高速線が上からスローラインを下に越えると,販売力が強化され,販売信号が生成される.
さらに,戦略は,各キャンドルスタイクの購入量と販売量との間のサイズ関係に基づいて,購入および販売量の相対的な強さの分析を組み込む. 具体的な方法は: 購入量 = ボリュームx (Close - Low) ÷ (High - Low); 販売量 = ボリュームx (High - Close) ÷ (High - Low). 購入量が販売量よりも大幅に大きい場合,キャンドルスタイクは比較的強い購入力で閉じる,これは購入信号である.
MACD指標とボリューム分析を組み合わせることで,戦略は供給と需要の関係と市場における未定の方向性を効果的に決定することができる.同時に,戦略は価格が重要な領域にあるかどうか,MACDが効果的な逆転を持っているかどうか,および購入と販売のボリュームの差が十分に大きいかどうかなどの条件を検証し,衝動的なノイズをフィルタリングし,高い確率と高効率のエントリーを確保することができる.
この戦略の最大の利点は,市場供給と需要関係についての判断を完全に組み込むことである.MACDヒストグラムは,購入力と販売力と市場の待機している方向性の対比を効果的に決定することができる.ボリューム差分析は,買い手と売り手の間の支配力を明確に特定することができる.同時に,戦略は上昇を追いかけて下落を打つのを避けるために複数の条件を設定し,利益の比較的高い確率を確保する.さらに,戦略の内蔵ストップ・プロフィットとストップ・ロスのメカニズムも,単一の損失を制限することができます.
上記のリスクは,市場の変動時にこの戦略を使用しないために市場の主要な傾向を正確に決定し,人工的に膨張された取引量を特定するために市場情報に注意を払い,パラメータを注意深く調整し,または専門家の助言を求めることで回避できます.
戦略は以下の側面で最適化できます.
結論として,この戦略の最適化には十分な余地があることがわかります.投資家は,戦略の有効性を向上させるために,自分の状況と市場状況に応じて適切な調整と改善を行うことができます.
3 10 オシレータープロフィールフラグリング戦略は,MACD分析,ボリューム比較,および多条件フィルタリング検証のアイデアを成功裏に統合している.投資家のための重要な検討と深遠な調査に値する戦略は,大きな最適化空間と幅広い応用見通しを有し,投資家のための重要な検討と深遠な調査に値する.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("3 10 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=true) signalBiasValue = input(title="Signal Bias", defval=0.26) macdBiasValue = input(title="MACD Bias", defval=0.8) shortLookBack = input( title="Short LookBack", defval=3) longLookBack = input( title="Long LookBack", defval=10) takeProfit = input( title="Take Profit", defval=0.75) stopLoss = input( title="Stop Loss", defval=0.5) fast_ma = ta.sma(close, 3) slow_ma = ta.sma(close, 10) macd = fast_ma - slow_ma signal = ta.sma(macd, 16) hline(0, "Zero Line", color = color.black) buyVolume = volume*((close-low)/(high-low)) sellVolume = volume*((high-close)/(high-low)) buyVolSlope = buyVolume - buyVolume[1] sellVolSlope = sellVolume - sellVolume[1] signalSlope = ( signal - signal[1] ) macdSlope = ( macd - macd[1] ) //plot(macdSlope, color=color.red, title="Total Volume") //plot(signalSlope, color=color.green, title="Total Volume") intrabarRange = high - low getLookBackSlope(lookBack) => signal - signal[lookBack] getBuyerVolBias(lookBack) => j = 0 for i = 1 to lookBack if buyVolume[i] > sellVolume[i] j += 1 j getSellerVolBias(lookBack) => j = 0 for i = 1 to lookBack if sellVolume[i] > buyVolume[i] j += 1 j getVolBias(lookBack) => float b = 0 float s = 0 for i = 1 to lookBack b += buyVolume[i] s += sellVolume[i] b > s getSignalBuyerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] > signalBiasValue j += 1 j getSignalSellerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < ( 0 - signalBiasValue ) j += 1 j getSignalNoBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < signalBiasValue and signal[i] > ( 0 - signalBiasValue ) j += 1 j getPriceRising(lookBack) => j = 0 for i = 1 to lookBack if close[i] > close[i + 1] j += 1 j getPriceFalling(lookBack) => j = 0 for i = 1 to lookBack if close[i] < close[i + 1] j += 1 j getRangeNarrowing(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] < intrabarRange[i + 1] j+= 1 j getRangeBroadening(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] > intrabarRange[i + 1] j+= 1 j bool isNegativeSignalReversal = signalSlope < 0 and signalSlope[1] > 0 bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0 bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0 bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0 bool hasBearInversion = signalSlope > 0 and macdSlope < 0 bool hasBullInversion = signalSlope < 0 and macdSlope > 0 bool hasSignalBias = math.abs(signal) >= signalBiasValue bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue ) bool hasSignalBuyerBias = hasSignalBias and signal > 0 bool hasSignalSellerBias = hasSignalBias and signal < 0 bool hasPositiveMACDBias = macd > macdBiasValue bool hasNegativeMACDBias = macd < ( 0 - macdBiasValue ) bool hasBullAntiPattern = ta.crossunder(macd, signal) bool hasBearAntiPattern = ta.crossover(macd, signal) bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 ) bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 ) // 7.48 Profit 52.5% if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion) strategy.entry("Short1", strategy.short, qty=10) strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss) // 32.53 Profit 47.91% if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias) strategy.entry("Long1", strategy.long, qty=10) strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)