
この戦略の核心的な論理は,連続したN根K線の閉盘価格が連続して上昇しているかどうかを検知し,もしそうなら,多めに行います.満足しない場合は,平仓します.このようにして,株価の上昇の傾向を捕捉し,利益を上げることができます.
この戦略の核心指標はnCounterで,現在のK線の閉盘価格と開盤価格を比較して,価格が上昇したかどうかを判断する.
具体的には,close[1]>=open[nCounter+1は上位を表示し,nCounter+1は上位を表示する.[1]
nCounterをnLengthの参数と比較すると,nCounter>=nLengthの場合,出力信号C1=1;C1=0となります.ここでnLengthは,我々が定義した,信号を生成するために必要な連続したK線の数です.
C1=1の信号を受け取ると,現在ポジションを持っていない場合は,多行を実行し,すでに多頭持っていた場合は,継続する.
さらに,この戦略は,停止と停止の条件を設定しています. 入場価格の一定比率を下回ると平仓を停止し,入場価格の一定比率を超えると止まります.
これは典型的なトレンド追跡戦略で,以下の利点があります.
この戦略にはいくつかのリスクがあり,以下のような部分に重点を置いています.
これらのリスクを軽減するために,より厳しいストップ・ロスの条件を設定し,nLengthパラメータを最適化し,大ポケット判断ルールを追加したり,異なる株式に対して別々にパラメータをテストしたりすることができます.もちろん,いかなる戦略も完全に損失を回避することは困難であり,トレーダーのリスク好みに合わせる必要があります.
リスクを考えると,この戦略を以下のように改善することができます.
この策略は,N根連続上K線を検知することで上のトレンドを捕捉し,効率的にトレンドを追跡することができる.論理的に単純で,パラメータ調整が柔軟で,偽突破をフィルタリングできるという利点がある.しかし,戦略をより包括的かつ安定させるために,ストップ損失,パラメータ最適化,環境判断などのモジュールを追加して改善する必要があるという一定のリスクもある.全体的に,この策略は,取引を量化するための価値ある基礎モデルを提供し,継続的に改善することで強力な取引ツールになることができる.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 05/02/2020
// Evaluates for n number of consecutive higher closes. Returns a value
// of 1 when the condition is true or 0 when false.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="N Bars Up", shorttitle="NBU Backtest", overlay = false)
nLength = input(4, minval=1)
input_takeprofit = input(20, title="Take Profit pip", step=0.01)
input_stoploss = input(10, title="Stop Loss pip", step=0.01)
nCounter = 0
nCounter := iff(close[1] >= open[1], nz(nCounter[1],0)+1,
iff(close[1] < open[1], 0, nCounter))
C1 = iff(nCounter >= nLength, 1, 0)
posprice = 0.0
pos = 0
barcolor(nz(pos[1], 0) == -1 ? color.red: nz(pos[1], 0) == 1 ? color.green : color.blue )
posprice := iff(C1== 1, close, nz(posprice[1], 0))
pos := iff(posprice > 0, 1, 0)
if (pos == 0)
strategy.close_all()
if (pos == 1)
strategy.entry("Long", strategy.long)
posprice := iff(low <= posprice - input_stoploss and posprice > 0, 0 , nz(posprice, 0))
posprice := iff(high >= posprice + input_takeprofit and posprice > 0, 0 , nz(posprice, 0))
plot(C1, title='NBU', color=color.green)