この戦略の基本論理は, N の連続したキャンドルの閉じる価格が上昇し続けているかどうかを検出することです.そうであれば,ロング;そうでなければ,閉じるポジションです.これは株式価格の上昇傾向を把握し利益を得ることができます.
この戦略のコア指標はnCounterです.現在のキャンドルの閉店価格と開店価格を比較して価格が上昇するかどうかを判断します.
具体的には,Close [1]>=open[1], nCounter は上昇を表示する 1 を追加し,Close [1]
nCounter>=nLength の場合,出力信号は C1=1; C1=0 です.ここで nLength は,信号を生成するために定義した連続した上昇するキャンドルの数です.
C1=1信号を受け取った後,現在の位置がない場合は,ロングに移動します.既にロング位置にある場合は,保持します.
この戦略では,ストップ・ロスの条件を設定し,収益を上げます.価格がエントリー価格を下回る場合,ストップ・ロスはポジションを退場させ,エントリー価格を下回る場合,利益を得ます.
これは,以下のような強みを持つ戦略に従う典型的な傾向です.
この戦略にはいくつかのリスクがあり,主に以下の側面があります.
これらのリスクを減らすために,より厳格なストップ・ロスを設定し,nLengthを最適化し,市場状況ルールを追加し,または異なる株に対して個別にテストパラメータを設定することができます. もちろん,いかなる戦略も完全に損失を回避することはできません.それはトレーダーのリスク欲求に一致する必要があります.
上記のリスクを考えると,以下の側面から戦略を最適化することができます:
この戦略は,Nの連続した上昇するキャンドルを検出することによって上昇傾向を捉える. 効果的にトレンドフォローを行うことができる. 利点としては,シンプルな論理,柔軟なパラメータチューニング,偽ブレイクをフィルタリングする. しかし,いくつかのリスクもあります. 改善するためにストップ損失,パラメータ最適化,環境判断などのモジュールを追加する必要があります. 全体的に言えば,この戦略は定量取引のための貴重な基本的なモデルを提供します. 継続的な改善後に強力な取引ツールになることができます.
/*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)