TradingViewでのバックテストについて、4度目の挑戦をしてみました。今回は含み損が出ようが安い時に拾うことを行った場合のシミュレートをしてみました。一応、設定としては、ポジション数(pyramiding)は4個までを制限としました。信用取引やCFD取引の方は参考にできない売買ロジックです。
環境設定
- バックテストはTradingViewを使用(ストラテジーテスター)
- インジケーターはWPRを使用
- 時間足:日足
- WPR設定(14日)
- 検証期間(2020/1/1~2021/9/20現在)
エントリー:WPR売られすぎの場合に買い、決済:収益が15%以上の場合に売り
使用プログラム
//@version=4
strategy(“WPR Pyramiding”, pyramiding=4, overlay=true)
start_year = input(title=”StartYear”, type=input.integer, defval=2020)
start_month = input(title=”StartMonth”, type=input.integer, defval=01)
start_day = input(title=”StartDay”, type=input.integer, defval=01)
//開始日時
test_start = timestamp(start_year, start_month, start_day, 00, 00)
end_year = input(title=”EndYear”, type=input.integer, defval=2050)
end_month = input(title=”EndMonth”, type=input.integer, defval=12)
end_day = input(title=”EndDay”, type=input.integer, defval=31)
//終了日時
test_end = timestamp(end_year, end_month, end_day, 00, 00)
//テスト期間の指定
is_test = test_start <= time and time <= test_end
length = input(title=”WPR_length”, type=input.integer, defval=14)
_pr(length) =>
max = highest(length)
min = lowest(length)
100 * (close – max) / (max – min)
percentR = _pr(length)
takePer = input(15.0, title=’Take Profit %’, type=input.float) / 100
longTake = strategy.position_avg_price * (1 + takePer)
buy = crossunder(percentR, -80)
if (is_test)
strategy.entry(“BUY”, strategy.long , when=buy)
if strategy.position_size > 0
strategy.exit(id=”Close Long”, limit=longTake)
検証結果
分類 | 銘柄コード | 銘柄名 | TEST4 総利益 | 取引数 | 勝率 | TEST3 総利益 |
---|---|---|---|---|---|---|
先進国株式 | 1657 | iシェアーズ・コア MSCI 先進国株(除く日本) ETF | 1740円 | 5 | 100% | 575円 |
新興国株式 | 1658 | iシェアーズ・コア MSCI 新興国株 ETF | 1124円 | 4 | 100% | 621円 |
日本株式 | 1306 | NEXT FUNDS TOPIX連動型上場投信 | 1051円 | 4 | 100% | 371円 |
米国株式 | 1557 | SPDR S&P500 ETF | 20900円 | 4 | 100% | 10250円 |
債券 | 1497 | iシェアーズ 米ドル建てハイイールド社債 ETF(為替ヘッジあり) | – | – | – | – |
国債 | 1482 | iシェアーズ・コア 米国債7-10年 ETF(為替ヘッジあり) | – | – | – | 149円 |
貴金属 | 1540 | 純金上場信託(現物国内保管型) | 4210円 | 5 | 100% | 1060円 |
貴金属 | 1542 | 純銀上場信託(現物国内保管型) | 5110円 | 6 | 100% | 3710円 |
貴金属 | 1541 | 純プラチナ上場信託(現物国内保管型) | 2305円 | 5 | 100% | 750円 |
先進国株式 | VEA | Vanguard FTSE Developed Markets ETF | $25.80 | 4 | 100% | $6.71 |
新興国株式 | VWO | Vanguard FTSE Emerging Markets ETF | $24.66 | 4 | 100% | $11.50 |
米国株式 | SPY | SPDR S&P 500 ETF Trust | $419.83 | 8 | 100% | $100.36 |
債券 | HYG | iShares iBoxx $ High Yield Corporate Bond ETF | – | – | – | – |
国債 | TLT | iShares 20+ Year Treasury Bond ETF | – | – | – | $8.55 |
貴金属 | GLD | SPDR Gold Share | $89.96 | 4 | 100% | $31.69 |
貴金属 | IAU | iShares Gold Trust | $18.28 | 4 | 100% | $6.56 |
貴金属 | SLV | iShares Silver Trust | $23.29 | 8 | 100% | $9.24 |
貴金属 | PPLT | Aberdeen Standard Physical Platinum Shares ETF | $54.61 | 4 | 100% | $9.55 |
石油 | USO | United States Oil Fund, LP | – | – | – | – |
石油 | UNG | United States Natural Gas Fund, LP | $8.61 | 4 | 100% | – |
農産物 | DBA | Invesco DB Agriculture Fund | $9.71 | 4 | 100% | $2.70 |
考察
安い時に買って、高い時に売る(損切りなし)ことを忠実にやった場合のシミュレーションですが、買い増し(Pyramiding)を行った方が安値を拾いやすく、収益を上げやすいような結果でした。
いつかは上がるという前提での現物取引での手法です。ですので、信用取引や先物取引、CFD取引といった取引で適用はしないほうが良いです(損失は回避できないと思います)。
また、振り返って、国債や債券については、あまり値幅を取れる金融商品ではないため、シミュレーション対象に入れるべきではなかったと実感しました。