低スキャナー スマート追跡方法

作者: リン・ハーンチャオチャン,日付: 2023年11月1日 16:12:00
タグ:

img

概要

ロー・スキャナー・スマート・トラッキング・メソッド (Low Scanner Smart Tracking Method) は,非再塗装型フォレックス・トレーディング・戦略である.ロー・スキャナーを使用して低点を特定し,ハル・ムービング・アベアと組み合わせて取引シグナル判断を行い,高い勝利率を達成することができる.

原則分析

まず,戦略は低値点を見つけるために低値スキャンを使用します.低値スキャンは価格とボリュームのRSI値を計算し,RSIがWMAよりも低いときに低点を決定するためにWMA曲線と比較します.

第二に,この戦略は,取引信号判断のためにハル移動平均を使用します.異なる期間の2つのハルMAを計算し,より短い期間のハルMAがより長い期間の1を横切るときは長くなって,より低い期間のハルMAが横切るときは短くなります.

最後に,この戦略は低点スキャン信号とハルMA信号を組み合わせ,低点スキャナーが低点信号を発したときにハルMA信号を起動し,エントリー戦略を形成する.

この方法で,まず市場の低点を特定し,その後トレンドを追跡することで,間違ったエントリータイミングを効果的に回避し,取引システムの勝利率を改善することができます.

利点分析

低スキャナースマート追跡方法の主な利点は以下の通りである.

  1. 低値のスキャナーを使って 市場の低値を正確に特定し 高値の買い物を避けることができます

  2. Hull MAは,より大きなトレンドを把握できる優れたトレンド追跡指標です.

  3. 低スキャナーとハルMAを組み合わせることで 互いに確認し 騒音や誤った信号を フィルタリングします

  4. 漸進的なストップ損失退出メカニズムを採用することで 利益を最大化し 引き下げを回避できます

  5. この戦略は指標に基づく論理を利用し,信頼性の高い歴史的データを操作しない.

リスク分析

この戦略の主なリスクは,

  1. 低スキャナーでは,いくつかの低点を見逃し,取引機会を失う可能性があります. スキャン範囲を拡大するためにパラメータを調整できます.

  2. ストップ・ロスの範囲は合理的に緩和され,ポジションのサイズを制御することができる.

  3. パラメータの設定が不適切である場合,取引信号が多すぎたり少なすぎたりすることがあります.最適な組み合わせを見つけるために,パラメータを繰り返し最適化する必要があります.

  4. この戦略は,明らかにトレンドのある外為対のみに適用され,範囲限定または振動市場には適していません.

オプティマイゼーションの方向性

戦略は以下の側面で最適化できます.

  1. 低値点をより正確に識別するために低値センサーのパラメータを最適化します

  2. ハル・MAのパラメータを最適化して 傾向を正確に追跡する

  3. MACD,KDJなどの他の指標フィルターを追加して信号の信頼性を向上させる.

  4. 機械学習モデルの予測を追加して 取引信号判断を支援します

  5. ストップ・ロスのメカニズムを最適化し,市場の変動に基づいて動的に調整する.

  6. ポジションのサイズを動的に調整するために,マネーマネジメントのルールに基づいてポジションサイズ戦略を最適化する.

結論

ロースキャナースマートトラッキングメソッド (Low Scanner Smart Tracking Method) は,高勝率の非再塗装型外為取引戦略である.市場低点を正確に特定し,トレンドが明確になったときにトレンドに入り,進歩的なストップ損失で利益をロックすることができる.この戦略には最適化のための大きな余地があり,強力な自動化取引システムになるために多くの方法で改善することができます.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-25 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
// strategy(title = "Low Scanner Forex strategy", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(1440)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("W", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(60)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("W", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
// Time period input
testStartYear = input(2016, "BACKTEST START YEAR", minval = 1980, maxval = 2222) 
testStartMonth = input(06, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = time >= testPeriodStart and time <= testPeriodStop ? true : false
l = crossover(zx,0) or buy
        
if l and testPeriod
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=25, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=0.5, minval=0.01)
tp2=input(title=" Take profit2", defval=1, minval=0.01)
tp3=input(title=" Take profit3", defval=1.5, minval=0.01)
tp4=input(title=" Take profit4", defval=2, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


もっと