インデックスポイント戦略


作成日: 2023-11-06 14:40:26 最終変更日: 2023-11-06 14:40:26
コピー: 0 クリック数: 604
1
フォロー
1617
フォロワー

インデックスポイント戦略

概要

この戦略は,ROCとSMAの2つの指標の差値kを計算し,kに一定の長さの加算を行うことにより,加算値sumの正負を多空の判断の根拠として判断する.この戦略は,ショートライン取引戦略である.

戦略原則

この戦略は,まず,長さ l の SMA 平均線と ROC を計算し,次に,現在の閉店価格と SMA の差分 k を計算する. k の s 日累積と sum を計算する.sum>0 の場合は多,sum の場合は空とする.

具体的には,このコードは:

  1. 平均線 a を計算し,

  2. 長さlのROC指数rを計算する

  3. k = close - a の現在の閉店価格とSMA平均線の差を計算する

  4. k の日数を加算すると,sum となります.

  5. sum>0であれば,余分に,sumであれば,空っぽにします.

  6. 平仓条件:多平仓のsum<0;空白平仓のsum>0

この戦略の鍵は,kの累積とsumを計算し,sumの正負を取引信号として使用する. k>0の最近の時間は,価格が上昇していることを示し,多額の取引を行う. kの最近の時間は,価格が低下していることを示し,空白を行う.

優位分析

これはシンプルで実用的なショートライン取引戦略で,以下の利点があります.

  1. この指標の組み合わせは単純で,理解し,実行しやすい.

  2. ターゲットの差値から波動をフィルターすることで,より正確な取引機会を見つけることができます.

  3. 差値の累積により,短線トレンドをより正確に捉えることができます.

  4. 市場調整パラメータlとsにより,異なる周期に対応する.

  5. 戦略は明確で,手順は簡潔で,変更や最適化も容易です.

  6. 資金利用の効率が高く,頻繁にショートライン取引が可能である.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. ショートライン取引はリスクがあり,損失の可能性もある.

  2. パラメータを正しく設定しない場合,取引が頻発し,機会が失われる可能性があります.

  3. ストップを跳ね越すと大きな損失を招く可能性がある.

  4. 頻繁にモニタリングとパラメータの調整が必要で,トレーダーの経験に依存する.

  5. 取引の頻度は取引コストと滑り点を増加させ,利益に影響を与える可能性があります.

リスクに対応する解決策は以下の通りです.

  1. 取引頻度を下げるためにパラメータを適切に調整します.

  2. トレンド指数と組み合わせて,トレンドの逆転を識別する.

  3. ストップ・ロスの戦略を最適化し,単一損失を制御する.

  4. 自動化パラメータ最適化モジュールを追加し,トレーダーの経験への依存を軽減します.

  5. 取引コストを減らすために,注文モジュールを最適化します.

最適化の方向

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

  1. パラメータ計算方法を最適化して,パラメータをより自律的に調整する.遺伝的アルゴリズム,マルコフ鎖などの方法を用いて動的に最適化できる.

  2. より多くの指標とフィルタリング条件を組み合わせて,取引信号の質を向上させる.例えば,トレンド指標を組み合わせて逆行取引を避けるなど.

  3. 単一損失を制御するために,移動停止,平均停止などの損失停止戦略の改善.

  4. 資金管理戦略の最適化,例えばリスクポイント管理,固定比率の資金配分など,全体的なリスクを制御する.

  5. 注文モジュールを最適化し,トレンド追跡,滑点制御などのアルゴリズムを使用して取引コストを削減します.

  6. 自動フィードバックの最適化モジュールを追加し,さまざまなパラメータが戦略に与える影響を迅速に評価します.

  7. 定量化指標評価モジュールを追加し,取引信号の質を評価し,戦略の安定性を向上させる.

この戦略を最適化することで,より包括的で,スマートで,安定した,制御可能なショートライン取引システムにすることができます.

要約する

全体的に見ると,この戦略は,簡単な指標計算によって取引信号を生成し,考えが明確で実行しやすい.典型的なショートライン取引戦略の1つである.パラメータ,ストップ,資金管理などのさらなる最適化により,リスクを軽減し,安定性を向上させ,使用するに値する量化取引戦略の1つにすることができる.しかし,いかなる戦略も完璧ではありません.トレーダーは理性的で,自分のリスク好みに合わせて適切な調整を行う必要があります.

ストラテジーソースコード
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("Long", strategy.long, oca_name="Long",  comment="Long")
else
    strategy.cancel(id="Long")
if sum<0
    strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
    strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)