N 連続的な高値 閉じる 脱出戦略

作者: リン・ハーンチャオチャン開催日:2023年8月12日 (火) 10:50:54
タグ:

img

概要

この戦略の基本論理は, N の連続したキャンドルの閉じる価格が上昇し続けているかどうかを検出することです.そうであれば,ロング;そうでなければ,閉じるポジションです.これは株式価格の上昇傾向を把握し利益を得ることができます.

戦略原則

この戦略のコア指標はnCounterです.現在のキャンドルの閉店価格と開店価格を比較して価格が上昇するかどうかを判断します.

具体的には,Close [1]>=open[1], nCounter は上昇を表示する 1 を追加し,Close [1]

nCounter>=nLength の場合,出力信号は C1=1; C1=0 です.ここで nLength は,信号を生成するために定義した連続した上昇するキャンドルの数です.

C1=1信号を受け取った後,現在の位置がない場合は,ロングに移動します.既にロング位置にある場合は,保持します.

この戦略では,ストップ・ロスの条件を設定し,収益を上げます.価格がエントリー価格を下回る場合,ストップ・ロスはポジションを退場させ,エントリー価格を下回る場合,利益を得ます.

利点分析

これは,以下のような強みを持つ戦略に従う典型的な傾向です.

  1. 株価の上昇傾向の機会を把握し,長期戦略として適しています
  2. 入力信号として N の連続上昇は,誤ったブレイクを効果的にフィルタリングし,不必要な取引を減らすことができます.
  3. ストップ・ロスを設定して 利益を取ることで 下行リスクを制限し 利益を固定できます
  4. 論理は単純で明快で 分かりやすく 修正できます
  5. nLengthパラメータを調整することで取引頻度を制御できます.

リスク分析

この戦略にはいくつかのリスクがあり,主に以下の側面があります.

  1. 上昇傾向が逆転すると 損失を間に合わないと 大きな損失を伴う
  2. nLength のセットが大きすぎると,良いエントリー機会が逃れることがあります.
  3. 市場環境を考慮しない.市場崩壊時にロングポジションを保持すると,追加の損失につながる可能性があります.
  4. 単一パラメータを使用し,異なるストック特性に基づいて調整しない場合,一部のストックには適用されない場合があります.

これらのリスクを減らすために,より厳格なストップ・ロスを設定し,nLengthを最適化し,市場状況ルールを追加し,または異なる株に対して個別にテストパラメータを設定することができます. もちろん,いかなる戦略も完全に損失を回避することはできません.それはトレーダーのリスク欲求に一致する必要があります.

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

上記のリスクを考えると,以下の側面から戦略を最適化することができます:

  1. 移動ストップ損失またはトレーリングストップ損失機能を追加します.損失リスクを減らすために価格変化に基づいて,それに応じてストップ損失点を調整することができます.
  2. nLength パラメータを最適化する. より適切なパラメータ値を見つけるために,それぞれ異なる種類のストックをテストする
  3. 市場環境判断を追加します.例えば,市場がクラッシュしたときの取引を一時停止し,熊市場での追加の損失を回避します
  4. 補助条件としてボリュームのような他の要因を追加します.例えば,ブレイクアウトの有効性を確保するために上昇傾向中にボリュームを拡大する必要があります.
  5. 最大許容損失百分比,最大連続損失時間など,損失を停止するために自動全体損失を制御するように引き下げ制御を設定

結論

この戦略は,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)

もっと