対数ベースの価格予測戦略


作成日: 2023-12-20 14:40:23 最終変更日: 2023-12-20 14:40:23
コピー: 0 クリック数: 660
1
フォロー
1621
フォロワー

対数ベースの価格予測戦略

概要

この策略は,対数関数を使って価格変化を模擬し,取引量の標準差と平均値に基づいてz値を計算し,パラメータの入力対数関数として,将来の価格を予測する.

戦略原則

  1. 閉店価格のROCを計算し,正値はvolume_posに累積し,負値はvolume_negに累積する
  2. net_volumeとして,volume_posとvolume_negの差を計算する
  3. net_volumeの標準差net_stdと平均値net_smaを計算する
  4. net_smaをnet_stdで割るとzが得られる.
  5. 閉店価格,閉店価格の20日標準差,z値をパラメータとして,対数関数logisticを入力して,次の周期価格を予測する
  6. 予想価格が現在の実際の価格の1.005倍以上で多額化され,0.995倍以下で平額化

優位分析

この戦略は,取引量の統計情報と対数関数の価格予測を組み合わせている.

優点として

  1. 取引量の多空差を利用して,市場情勢を判断する
  2. 対数関数は価格変化曲線に適合し,予測の効果が優れている.
  3. 戦略はシンプルで実行しやすい

リスク分析

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

  1. 取引量指数は遅滞しており,市場の変化を反映していない.
  2. 対数関数の予測は必ずしも正確ではなく,誤導されやすい.
  3. 損失をコントロールできない 停止措置の欠如

リスクは以下の方法で軽減できます.

  1. 取引量信号の信頼性を判断する他の指標と組み合わせる
  2. 直線関数のパラメータを最適化し,予測の精度を向上させる
  3. ストップラインを設定し,最大損失を制限します.

最適化の方向

この戦略はさらに改善できる:

  1. 機械学習による関数関数の動的最適化
  2. 株価変動率指数と組み合わせたポジション管理の調整
  3. ベイズフィルターを追加し,フィルター無効信号
  4. 突破口で入場する戦略
  5. 関連ルールを用いて量値が信号から離れていることを探す

戦略の安定性や収益性をさらに高めるには,複数の方法の組み合わせが必要です.

要約する

この戦略は,取引量統計指標と対数関数予測を統合し,独自の量化取引理念を形成しています. 継続的な最適化により,この戦略は,高効率で安定したプログラム化された取引システムになることができます.

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

//@version=4
strategy("Logistic", overlay=true )

volume_pos = 0.0
volume_neg = 0.0
roc = roc(close, 1)

for i = 0 to 100
    if (roc > 0)
        volume_pos := volume
    else
        volume_neg := volume
    
volume_net = volume_pos - volume_neg
net_std    = stdev(volume_net, 100)
net_sma    = sma(volume_net, 10)
z          =  net_sma / net_std
std        = stdev(close, 20)

logistic(close, std, z) =>
    m = (close + std)
    a = std / close
    pt = m / ( 1 + a*exp(-z))
    pt
    
    
pred = logistic(close, std, z)

buy = pred > close * 1.005
sell = pred < close * 0.995

color = strategy.position_size > 0? #3BB3E4 : strategy.position_size == 0? #FF006E : #6b6b6b
barcolor(color)


if (buy == true)
    strategy.entry("Long", strategy.long, comment="Open L")
    
if (sell == true)
    strategy.close("Long", comment="Close L")