ロングショートチャネルに基づく取引戦略のバックテスト


作成日: 2023-09-20 17:02:40 最終変更日: 2023-09-20 17:02:40
コピー: 0 クリック数: 688
1
フォロー
1617
フォロワー

概要

この戦略は,多空通路を構築し,通路突破型のシステム反測検証を行うことを利用し,トレンド突破型取引戦略に属します.

戦略原則

  1. ある周期内の最高価格が多頭通道,最低価格が空頭通道を構成することを計算する.

  2. 価格が上通道線を突破したときに購入する.

  3. 価格がチャネルラインを下回ったときに,セールを行う.

  4. 戦略を検証するために,反測の時間帯を設定できます.

  5. 突破口を使って取引し,戦略はシンプルで明確です.

優位分析

  1. 多空通路は,行情通路を直観的に定義することができる.

  2. 経路線を突破した後の上昇傾向は,より高い可能性が高い.

  3. 戦略の効果を歴史上検証する.

  4. 経路を突破する取引は簡単で簡単です.

  5. プログラミングは簡潔で,変更や最適化も簡単です.

リスク分析

  1. 突破後に偽突破がある Bring のリコールリスク.

  2. 停止と停止を有効に設定できません.

  3. 経路のパラメータを誤って設定すると,戦略の効果に影響する.

  4. 測定結果には最適化偏差がある可能性がある.

  5. リアルタイムで実行すると,効果は大きく異なるかもしれません.

最適化の方向

  1. 異なるパラメータをテストし,最適なパラメータの組み合わせを探します.

  2. 偽突破をフィルターする他の要素の組み合わせを追加します.

  3. 損失の防止と停止の仕組みを確立する.

  4. 測定データに対して適切な処理を行い,データ偏差を排除する.

  5. 複数の市場環境で裏付けを行います.

  6. シミュレーション・リアル・ディスクを検証し,リアル・ディスクのパラメータを配置する.

要約する

この戦略は,簡単な突破通路法で反測検証を行い,操作は簡単だが,安定性を高めるために最適化が必要である.パラメータ調整,リスク管理などによりさらに完善すれば,信頼できる突破取引システムにできる.

ストラテジーソースコード
/*backtest
start: 2023-08-20 00:00:00
end: 2023-08-30 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title = "Backtest Donchian Teixeira", default_qty_type = strategy.fixed, default_qty_value = 100, overlay = true, commission_type = strategy.commission.cash_per_order, commission_value = 2.50, precision = 2, calc_on_every_tick = true, pyramiding = 0, initial_capital = 10000)

testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00)

testEndYear = input(2018, "Backtest End Year")
testEndMonth = input(12, "Backtest End Month")
testEndDay = input(1, "Backtest End Day")
testPeriodEnd = timestamp(testStartYear, testStartMonth, testStartDay, 23, 59)

window()  => true //nao funciona

length1 = input(20, minval=1, title="Upper Channel")
length2 = input(20, minval=1, title="Lower Channel")

dcUpper = highest(length1)
dcLower = lowest(length2)

plot(dcLower, style=line, linewidth=1, color=red, offset=1)
plot(dcUpper, style=line, linewidth=1, color=lime, offset=1)
plot(dcLower, style=line, linewidth=1, color=gray)

if (strategy.position_size == 0)
    strategy.entry("COMPRA", true, stop = dcUpper)
    
if (strategy.position_size > 0)
    strategy.exit("VENDA", stop = dcLower)