ダブルゴールデンクロス反転取引戦略


作成日: 2023-11-03 15:32:38 最終変更日: 2023-11-03 15:32:38
コピー: 0 クリック数: 634
1
フォロー
1617
フォロワー

ダブルゴールデンクロス反転取引戦略

概要

ダブルゴールドクロス反転取引戦略は,株式技術分析指標を総合的に使用する取引戦略である.これは123形形反転戦略と質数波帯の指標を組み合わせ,複数の取引信号の融合を実現し,より信頼できる取引信号を取得する.

戦略原則

この戦略は以下の2つの子戦略で構成されています.

  1. 123形反転戦略

その取引シグナルは,株式の閉盘価格に由来する. 閉盘価格関係が連続して2日変化したときにシグナルが生成される. すなわち,前日の閉盘価格が前2日より高く,その日の閉盘価格が前日より低ければ,空き信号が生成される. 前日の閉盘価格が前2日より低く,その日の閉盘価格が前1日より高ければ,多行シグナルが生成される.

  1. 質数波帯戦略

この策略は,質数のランダム分布特性を利用して,価格の波動の範囲を決定する.まずは,価格の近くにある一定パーセントの範囲内の最高と最低の質を計算し,その2つの質数でチャネルを構築する.価格がチャネルのエッジに触れた場合,取引信号を生成する.つまり,価格が上をエッジに突入すると,多信号を生成し,価格が下をエッジに突入すると,空信号を生成する.

この2つの子戦略を統合すると,両者の信号が一致すれば,最終的な取引信号が生成されます.すなわち,123形反転戦略と質数波帯戦略が同時に多重信号を生成すると,最終的な多重信号が生成されます.両者の信号が一致しない場合は,取引は行われません.

優位分析

この戦略の利点は以下の通りです.

  1. 複数の信号融合により,収益率の向上

2つの異なるタイプの戦略信号を組み合わせることで,信号の信頼性を検証し,高い確率で利益をもたらす取引機会を出することができる.

  1. 123形反転は勝利率が高い

123形反転は,短期的な超買超売現象による反転の機会を捕捉し,高い実盘取引の勝利率を持つ,古典的な反転取引戦略である.

  1. 質量波帯は価格法則を利用する

質数波帯は質数の独特のランダム性を利用して価格の波動範囲を判断し,主観的な要因の影響を受けないようにし,取引信号の客観性を強化する.

  1. 戦略は新鮮で,利回りには容易ではない.

この戦略は,複数の指標を総合的に利用して取引し,他のバックアップ戦略によって利潤を得ることが困難である.

リスク分析

この戦略には以下のリスクもあります.

  1. 失敗するリスク

123形反転は反転取引戦略の1つであり,偽反転が発生した場合,反転が失敗し,その結果損失となる.

  1. 質量数波は機能不全の危険性がある

質量波帯は特定のパラメータ設定に依存し,パラメータ設定が不適切であれば,質量波帯が無効になり,指針の役割を果たせなくなります.

  1. 複数の信号により取引頻度が増加

この戦略は2つの信号源を統合し,取引頻度は単一の信号源戦略よりも高く,取引費の管理がうまく行われなければ利益が損なわれる可能性がある.

  1. パラメータの最適化が難しい

この2つの戦略を同時に組み合わせることで,最適なパラメータの組み合わせを見つけることが難しくなります.

改善の提案

この戦略は以下の点で最適化できます.

  1. 単一損失をコントロールするストップ・ロズ戦略に参加する.

  2. 品質の数波帯のパラメータを最適化して,最新の市場状況に適したものにします.

  3. 取引頻度を制御し,取引頻度が高すぎると取引費の損失を防ぐ.

  4. 戦略のパラメータを自動最適化するために,機械学習アルゴリズムを追加します.

  5. 測定値などの補助的な判断指標を追加し,信号の精度をさらに向上させる.

要約する

二重金十字逆転取引戦略は,複数の技術指標を総合的に使用して取引を行い,複数の信号の検証とフィルタリングにより,いくつかのノイズ取引をフィルタリングして,より高い確率の取引機会を得ることができます.しかし,この戦略には一定のリスクがあり,リスクを制御し,戦略の効果を強めるために適切な最適化が必要です.リスクが制御されれば,この戦略は,より安定した信頼性の高い量化取引戦略になることができます.

ストラテジーソースコード
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/04/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Determining market trends has become a science even though a high number 
// or people still believe it’s a gambling game. Mathematicians, technicians, 
// brokers and investors have worked together in developing quite several 
// indicators to help them better understand and forecast market movements.
// The Prime Number Bands indicator was developed by Modulus Financial Engineering 
// Inc. This indicator is charted by indentifying the highest and lowest prime number 
// in the neighborhood and plotting the two series as a band.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

PrimeNumberUpBand(price, percent) =>
    res = 0.0
    res1 = 0.0
    for j = price to price + (price * percent / 100)
        res1 := j
	    for i = 2 to sqrt(price)
        	res1 := iff(j % i == 0 , 0, j)
            if res1 == 0 
                break
		if res1 > 0 
		    break
    res := iff(res1 == 0, res[1], res1)
    res

PrimeNumberDnBand(price, percent) =>
    res = 0.0
    res2 = 0.0
    for j = price to price - (price * percent / 100)
        res2 := j
	    for i = 2 to sqrt(price)
        	res2 := iff(j % i == 0 , 0, j)
            if res2 == 0 
                break
		if res2 > 0 
		    break
    res := iff(res2 == 0, res[1], res2)
    res

PNB(percent, Length,srcUp,srcDn) =>
    pos = 0.0
    xPNUB = PrimeNumberUpBand(srcUp, percent)
    xPNDB = PrimeNumberDnBand(srcDn, percent)
    xHighestPNUB = highest(xPNUB, Length)
    xLowestPNUB = lowest(xPNDB, Length)
    pos:= iff(close > xHighestPNUB[1], 1,
             iff(close < xLowestPNUB[1], -1, nz(pos[1], 0))) 
    pos


strategy(title="Combo Backtest 123 Reversal & Prime Number Bands", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Prime Number Bands ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
Length_PNB = input(5, minval=1)
srcUp = input(title="Source Up Band", type=input.source, defval=high)
srcDn = input(title="Source Down Band", type=input.source, defval=low)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNB = PNB(percent, Length_PNB,srcUp,srcDn)
pos = iff(posReversal123 == 1 and posPNB == 1 , 1,
	   iff(posReversal123 == -1 and posPNB == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )