見出し画像

【2023年7月】奮闘記


2023/7/01(土)

ストラテジーの課題整理 

①ハンマーと逆ハンマーのシグナル条件が逆になっている

ハンマー(陽線)が出たら買い(long)したい。
逆ハンマー(陰線)が出たら売り(short)したい。

のに、

とはいえ、全部が間違っている訳ではなさそう。。。

②勝率が低すぎる

24.64% 表示されているトレード結果は、損切がうまく働いているので資産が増えているが、この勝率が続くのかは、未知数な為、もう少し勝率を上げたい。

③エグジット条件が正しく稼働していない

longエントリーの後、shortエントリーでエグジットしている(5番目)
利確条件も、3pipと規定しているのに、利確もまばらになっています。

まずは、①のロウソク足の形式でしっかりとシグナル条件が検知されるようにコードをみてきたいと思います。

2023/7/4(火)

まずは①のロウソク足の判定ロジックを見てみることにしました。
見た期間は、6/26-7/4 18:00までの94エントリー

結果サマリー

(B)と(C)は、想定通りのエントリーなので、問題なし。

(A)ハンマー(陰線)でShortエントリーロジックが働いているので想定外

(B)ハンマー(陽線)でLongエントリーロジックが働いているので想定内


(C)逆ハンマー(陰線)で、Shortエントリーしているので想定内

(D)ハンマー(陰線)でShortエントリーしているので想定外

(E)逆ハンマー(陽線)でLongエントリーしているので想定外

問題点①の整理

想定外なのは、(A)(D)(E)であり、コード上での判定は以下の順。

2023/7/5(水)

問題点①の解決アプローチ

問題点の整理状況から、見えてきたアプローチすべき点は以下かと思いました。

◆問題点(A)(E)は、ロウソク足の判定で、陽線と陰線の判定が誤作動している

◆問題点(D)は、ロウソク足の判定で、ハンマーの判定が誤作動している

改めて、ロウソク足の判定のコードを見てみました。(ChatGPTにこのコードの動作を説明してと命令し、翻訳してもらって)

そうすると、以下のコードがハンマーの判定にも、逆ハンマーの判定にも両方とも入っていました。

wickRatioCheck1 = (lowerWickSize1 > upperWickSize1 * wickRatio) or (upperWickSize1 > lowerWickSize1 * wickRatio)

これは、下ヒゲの大きさが上ヒゲの大きさの指定倍率(wickRatio)より大きいか、または上ヒゲの大きさが下ヒゲの大きさの指定倍率より大きいかの判定になります。
または(or)が使われているので、どちらかが合致してしまうと条件合致となってしまいます。しかもそれが、ハンマーの判定コードにも逆ハンマーの判定コードの両方に入ってしまっているので、本当に判定したい事ができていません。
ですので、ハンマーの判定には、下ヒゲが上ヒゲより指定倍率大きいことのみの条件を入れ、逆ハンマーの判定には、上ヒゲが下ヒゲより指定倍率大きいことの条件のみを入れるように修正しました。

まずはこの修正で、問題点(D)が解消するのかを見てみます。

なんと!!
問題点(D)が解消されるだけでなく、(A)と(E)も発生しなくなりました。
確認した期間は、6/26-7/5 16:30までの54エントリー
エントリー回数は半減しましたが、それだけ間違ったエントリーがあったという事だと思っています。

2023/7/6(木)

問題点②③の整理

問題点②の勝率が低い点に関しては、問題点③のエグジット条件が改良されるに従い変動していくものだと思いますので、両方が解決されるものと考えています。
今のコードでは、利確はエントリーポジションから3pip。損切は、指定期間の最低値(最安値か最高値)になっています。

例えば、No.51のトレードです。
エントリーを、144.426で入って、利確を144.438にしています。
本当なら、その次の足で、144.456は到達していたはずなのに。。。
持ち続けて指定期間の最安値で引っかかっています。
損切は正常稼働しているようですが、利確ですね。

まずは3pipで利確できるように改修

まずは、今のコード
strategy.exit("Long Exit", "Long Entry", limit=strategy.position_avg_price+300, stop = hiLoLowest)

strategy.exit("Short Exit", "Short Entry", limit=strategy.position_avg_price-300, stop = hiLoHighest)

どうやら、「strategy.position_avg_price」というのが現在のポジションを持った平均価格のようです。そこに、300を足し引きしています。
(単発でしか入らないロジックなので、これでも大丈夫そうですが複数ポジションを持つ場合は、価格が平均化されてしまう?!)

これを「ChatGPT」に、3pipで利確するようにコードを編集してと指示をしてみます。

実装してみます。
エラー: 71:78 Undeclared identifier 'strategy'
エラーを「ChatGPT」に伝えると、Pine Script言語で提案していなかったと返ってきましたので、改めてそこも含めて指示をしてみました。

実装してみます。
エラー: 71:48 Undeclared identifier 'entryPrice'
entryPriceという変数を定義していないのでエラーが出たようです。
「ChatGPT」の再定案は、entryPriceの初期化とエントリー時の定義を提案してくれました。(すごい!)

初期化の所と、エントリー時の命令文の後に、エントリー価格の取得を張り付けしてみました。

実装してみます。
そして、同じ2023/7/5 6:03のロングエントリーの箇所を確認しみます。

おぉ!直ってます!
で、でも、アレ?0.3pipになっているような・・・
ということで、コードの「syminfo.mintick * 3」を「syminfo.mintick * 30」にしてみます。

よし。ちゃんと3pipで利確しています。
Longのところだったので、Shortの部分もみてみます。

Shortも大丈夫そうです。

さて、勝率はどうなったのか?

3pipで利確が正常に動作したところ
勝率は、59.38%にパフォーマンス向上しました!!
ですが、当然ながら純利益は減りました。

パフォーマンスサマリーを見てみます。

平均勝ちトレード 全体:29.64 ロング:29.64 ショート:29.64
に対して、
平均負けトレード 全体:33.59 ロング:35.79 ショート:31.03
これは、利確は3pipで固定なので、平均勝ちトレードの値も固定になる。
一方で、損切は特定期間の最低値なので、変動してしまう。
なので、利確にならずに、特定期間が延びていってしまうと最低値が更新されてしまい損切が大きくなってしまう。

利確と損切を再考

この辺は、ナイス損切。
ハンマーでLongエントリーしたものの、その足で、ハンマーの下ヒゲを超えてしまったので、損切。これは、逆行したので即損切。できていてgood。

ロジック通りには動いているのだが、こうったいのが増えると損切額が増えてしまう。

ただ、現状を見ていると損切条件を指定期間の最低値で変動にしているのは、悪くない気がしてきました。リスクリワードが悪い面も出てはいますが、ロウソク足判定を逆行したら損切は悪くない
逆に、利確の3pipを変動に変えてみようと思います。
あとは、エントリーポイントの精度を上げるのも必須かと思いました。

利確の3pip固定を変動に

まず3pipという固定数値が良いのか?5pipではどうなのか?
10pipならどうなのか?を整理したいと思います。

まず、当然考えなければならないのは、スプレッドです。
ドル円を通過ペアとして、今後「TradingView」で自動売買となると「TradingView」対応の証券口座でのスプレッドを見てみないと検討できません。

なんと、まぁたくさんの証券会社がありますね!
いくつか調べてみました。(2023/7/6調べ)
【OANDA】0.4銭
【FOREX】変動制
【みんなのFX】0.2銭
【ゴールデンウェイ・ジャパン】0.1銭
【サクソバンク証券】変動制

0.5銭くらいを見ていれば良さそうです。
そうなると、1pip以上であればスプレッド負けはしなそうです。

となると、あとは、1分足という短いチャートの中で、どれくらいの値幅が動いて、エントリーポイントであるロウソク足判定でどれくらいの利幅が狙えるのかを確認していきながら、利確条件を決めていきたいと思います。

【案1】ATR分の値幅を取る
【案2】エントリー判定されたロウソク足のヒゲ分の値幅を取る(ヒゲ分の値幅が3pip以下なら固定で3pipにする)
【案3】固定pipを3~5、10pipにしてみる

まずはこの3案でEAを変更してバックテストしてみたいと思います。

2023/7/9(日)

【案1】のEA修正とバックテストでのパフォーマンス

ATR分の値幅を取るといっても、どれくらいの期間かを定める必要があります。今回のコードでは、いくつか判定するための指定期間を設けていますので、そこと大きく乖離しないようにしたいと考えています。
候補は、ロウソク足の値幅を定める為の期間と損切にも使われている期間の2つです。
前者は、小さなハンマーや逆ハンマーで検知したくない思いから、かなりの期間を設定していますので、それを利確の為のインプットにするのは少しマッチしないような気がしています。後者の損切やロウソク足の位置を定める為の指定期間は、前者より短いですしエントリーまでの間の期間ですので、こちらを採用したいと思います。

ATRでの利確には、ATRの2倍や3倍での利確が多いようですが、1分足での勝負ですので、ATRの1倍でいきたいと思います。

いつもの通り、「ChatGPT」にATRを使った利確のストラテジーを作成してもらいます。(既にできているコードを張り付けて、追加でATRを使った利確を修正して欲しいとリクエストしましたら、変更箇所まで丁寧に提示してくれました!)

上記では、ATRの3倍となっていますが、上述の通り、1倍で設定しました。
さて、パフォーマンスです。

【ATR1倍での利確Ver】
バックテスト範囲:2023/7/3 06:05 ~ 2023/7/8 05:57
トレード合計:39
手数料(注文毎):0.18円
発注サイズ:1000
勝率:58.97%
純利益:61.96円(0.01%)
うーん。なんとか勝ち切ったものの、途中はほぼ資産を溶かしています。

ちなみに5分足だと。。。。
すごくパフォーマンス高いことが判明。。。。

【案2】のEA修正とバックテストでのパフォーマンス

さてさて、お次は、エントリー判定されたロウソク足のヒゲ分の値幅を取る(ヒゲ分の値幅が3pip以下なら固定で3pipにする)でした。

再度、「ChatGPT」に修正のお願いをしてみます。

ヒゲ部分ですので、Longエントリー(ハンマー)は、終値から安値を引いた値分を利確ポイントとして。
Shortエントリー(逆ハンマー)は、始値から高値を引いた値分を利確ポイントとして。
しっかりと変数初期化も加えてくれました。

【ヒゲ部分での利確Ver】
バックテスト範囲:2023/7/3 06:05 ~ 2023/7/8 05:57
手数料(注文毎):0.18円
発注サイズ:1000
トレード合計:39
勝率:56.41%
純利益:▲84.04円(▲0.01%)
なんと、マイナスです。勝率も2%ほどダウンしています。

ちなみにの、5分足バージョン。
やはり、高勝率だし資産も増えていて、高パフォーマンスです。

【案3】のEA修正とバックテストでのパフォーマンス

気を取り直しまして、最後は、固定pipを3~5、10pipにしてみるでした。
既に、固定pipは完成していますので、ここはコードを修正するだけです。

【固定3pip利確Ver】
バックテスト範囲:2023/7/3 06:05 ~ 2023/7/8 05:57
手数料(注文毎):0.18円
発注サイズ:1000
トレード合計:39
勝率:56.41%
純利益:59.96円(0.01%)
なんとか、プラスで終えています。

ちゃんと3pipで利確しています。

続いて、4pipです。
【固定4pip利確Ver】
バックテスト範囲:2023/7/3 06:05 ~ 2023/7/8 05:57
手数料(注文毎):0.18円
発注サイズ:1000
トレード合計:39
勝率:38.46%
純利益:▲187.04円(▲0.02%)
勝率もかなり下がり、資産がマイナスです。

ちゃんと4pipで利確されています。

嫌な予感しかしませんが、続いて、5pipです。
【固定5pip利確Ver】
バックテスト範囲:2023/7/3 06:05 ~ 2023/7/8 05:57
手数料(注文毎):0.18円
発注サイズ:1000
トレード合計:39
勝率:33.33%
純利益:▲192.04円(▲0.02%)
さらに、悪化です。

ちゃんと5pipで利確されています。

さぁ、最後は、ぐっと上げて10pip固定です。
【固定10pip利確Ver】
バックテスト範囲:2023/7/3 06:05 ~ 2023/7/8 05:57
手数料(注文毎):0.18円
発注サイズ:1000
トレード合計:39
勝率:25.64%
純利益:▲380.04円(▲0.04%)
更に悪化です。最早、勝率は3割以下に。

ちゃんと10pipで利確されています。

パフォーマンスサマリー

バックテスト期間(約1週間)では、ATR1倍の利確が一番パフォーマンスが高かったです。
固定3pipでの利確も、唯一プラスになりましたが、ATR利確に比べ勝率も2%落ちていますので、利確は固定化しない方がよいのかと現段階では考えています。
ただ、1週間だけのパフォーマンスですので、7月いっぱいは勝率と純利益のパフォーマンスを計測したいと思います。(別記事でアップしていきます)

また、経過観察な部分(エグジット条件)はございますが、
これで、ようやくシンプルなロウソク足パターンでのエントリーとエグジットのEAが完成しました!

次なるステップとして6月の記事に書いた通り、更にエントリー条件に加味したい点を「ChatGPT」に協力してもらいながら、作成と検証してみたいと思います。

2023/7/10(月)

EAに追加したい要素の再考

6月の奮闘記で、追加要素として検討したい事項を再掲します。
A.逆相関の通貨である、EUR/USDかGBP/USDもハンマー/逆ハンマーが出ている
B. RSIの過熱を加味
C. キリ番などでは逆行を加味
D. 指標発表時はトレードを停止
E. 上位足でのロウソク足を判定
F. 上位足でのMAでのトレンドチェック

まず、ひとつずつ。

A. 逆相関の通貨を利用。これは、検証する価値ありだと思っています。
理由は、ドル円を取引通貨とする以上、基軸通貨であるドルの動きがあるのかどうかを取引量が多いEURとGBPで計るのは有効だと考えるからです。
実は、手動トレードでも参考にしていたりするのもあります。

B. RSIの過熱を利用。これは、検証する価値ありだと思っています。
理由は、今のエントリー条件はロウソク足のパターンで判定しています。
つまりロウソク足1本での需給の状況を見てのエントリーなので、RSIのような一定期間の買いの強さを見る指標は有効なフォローツールになるのではと考えています。

C. キリ番での逆行。これは、検証は保留だと思っています。
理由は、1分足で140円とか140.5円とかのキリ番に到達するのを無償の「TradingView」で検証するには時間がかかるという為です。
ただ、指値注文が溜まりやすいのが140円とか140.5などのキリ番なのは、これまでトレードしてきた経験上、なんども目撃しているので検証する価値はあるかと思い、保留扱いにしました。

D. 指標発表時のトレード停止。これも、検証は保留だと思っています。
理由は、Cと同じく、検証に時間がかかる為です。
また、今の損切条件として、急騰や急落時でもエントリー条件となったロウソク足の最低値で損切するようになっているので、セーフティーネットは張られていると考えている為です。

E. 上位足でのロウソク足を判定。これは、検証はしない事にします。
理由は、1分足でのトレードなので、上位足(例えば5分足)でもハンマーや逆ハンマーになったかを判定するにしても、トレード足の方が時間が短いのでシグナルが出づらいだろうと考えた為です。

F.上位足でのMAでのトレンドチェック。これも、検証はしない事にします。
理由は、今のエントリー条件は、ロウソク足でのエントリーであり、MAでのトレンドを見極めるにはMAの傾きとMAに対してのロウソク足の位置(MAより上にいるのか下にいるのか)を判定するのだと思いますが、上昇トレンド(MAの傾きが上向きでありロウソク足の位置がMAよりも上)の時に、買いのシグナルであるハンマーはなかなか、現れないであろうからです。(逆も然り)

EMA(5、15、20、45、60期間)

2023/7/11(火)

B. RSIの過熱を加味の検証

まずは、ネットなどで良く見る「70%以上は買われすぎ、30%以下は売られすぎ」で、期間は、「9,14,20」で見てみます。

■RSI 期間9
 70%以上でShort(売り)
 30%以下でLong(買い)

まずは、手動でRSIをチャートに入れてみて、眺めてみます。

エントリーチャンスは減るかもしれないですね。

やっと見つけたエントリーポイント。
感触、エントリーポイントは減ってますが、勝ってますね。。。

またまた、AI作成プログラムの落とし穴を発見してしまった!!

と言いつつも、私が「ChatGPT」に詳細に指示をしていなかったのがいけないのですが。。。

ふと、最近のエントリーポイントをチャート上で見ていて、アレ?意図しているロウソク足の大きさで本当にエントリーされているのだろうか?と思い、コードをみてました。
素人ながらも、ロウソク足の大きさを決定する倍率をそのままロウソク足の大きさに使っていて、チェックロジックがない事に気づきました!

bodyToWickRatio = input(3.0, title="ロウソク足実体と髭の比率")
省略
bodyToWick1 >= bodyToWickRatio and wickRatioCheck1 and candleTypeCheck1

この「bodyToWickRatio」が、それ以前のコードでチェックがされていない。。。
しかも、ここでのロウソク足実体とヒゲの比率をチェックしても意味ない。。。

・・・・このあと、カオスでした。
コードをチェックして、あれ?この計算式、要らないのでは?とか、そもそもチャートを見て、こんな所でのロウソク足判定はダメだよね?等々。。。

例えば、下のシーン。
2023/7/11 10:07にハンマーで買い(Long)シグナル(縦背景黄色)が出ています。

よく見ると9:00~9:30に高値と安値が大きくついてます。
よく見ればダブルトップの形成しかけですし、しかも高値更新(オレンジ横線)していない。その中でのハンマーって、狙いではない。。。
この後、どうなるかというと。。。

やはりというか、下げて行ってしまっています。
勿論、損切はすぐに行われているので、そこまで大損になっていませんが、これは、エントリータイミングが良くない。

今日は、発見課題の整理をして終えます。
・ロウソク足の判定位置に使用している変数の値(期間)を見直す。
・ロウソク足の値幅計算のコードが正しく動作しているか確認。
・エントリー判定のコードが正しく動作しているか確認。
以上が済んだら、RSIと逆相関の追加検討に再度、戻ります。

2023/7/13(木)

ロウソク足の位置は、どのくらいの期間が良いのか

まず、「ロウソク足の判定位置に使用している変数の値(期間)を見直す。」の課題から。

今は、ロウソク足の位置を20期間にしています。
1分足で20本分ですので、20分です。
この20分の中で、ハンマーや逆ハンマーが発生するかを見ています。
正直なところ、チャートをみてフィッティングしても仕方ないのですが、20本から「10本、30本、50本、60本、100本、120本、200本」と変化してみてパフォーマンスを見てみたいと思います。

「2023/7/6 6:03 ~ 7/13 15:13でのパフォーマンス」
◆10本  トレード合計51 勝率54.9% 純利益88.64(0.01%)
◆20本  トレード合計60 勝率60% 純利益175.40(0.02%)
◆30本  トレード合計63 勝率57.14% 純利益67.32(0.01%)
◆50本  トレード合計66 勝率60.61% 純利益178.24(0.02%)
◆60本  トレード合計68 勝率58.82% 純利益▲3.48(▲0.00%)
◆100本 トレード合計71 勝率56.34% 純利益▲169.56(▲0.02%)
◆120本 トレード合計73 勝率57.53% 純利益▲137.28(▲0.01%)
◆200本 トレード合計75 勝率58.67% 純利益▲148.00(▲0.01%)
意外と判定期間を増やすとトレード回数も上がっていくのが分かりました。

20本
200本

50期間にする事で、前回エントリーされて損切となったところは、回避されていました。
暫定的に50期間に修正します。

値幅計算の確認は、インジケータで

次です。
「ロウソク足の値幅計算のコードが正しく動作しているか確認。」の確認をしてみます。

まず、ロウソク足の値幅計算に使うロウソク足の本数は200本と多いのと、それらを計算する為に、ロウソク足の各データを1分足で取得するのはトレーディングビューでは、有料アカウントでないと出来ないし、私が開設している証券口座のチャートでも日足でしか提供してくれない事が判明しました。

そこで、ロウソク足の値幅計算のコードをインジケーターに変換してもらうように、「ChatGPT」に依頼しました。

何度かエラー修正が必要でしたが、全て「ChatGPT」に実施してもらって、実装しました。

更に、次の確認事」項である、「・エントリー判定のコードが正しく動作しているか確認。」のコード部分もインジケーターにしてみました。

黒線が赤線と青線の中に納まっているかを判定しています。
ここも想定している通りのロジックになっていました。

昨日の21:30の指標発表のような、ズドーンといった足は、検知されないようになっています。

2023/7/14(金)

一旦、基本のロジックは想定通りになっている事が分かったので、検討事項に戻りたいと思います。

RSIの過熱を加味の検証を再び

前回は、「70%以上は買われすぎ、30%以下は売られすぎ」で、期間は、「9,14,20」で手動でなんとなく見てみましたので、実際にEAに取り込んでみます。

「ChatGPT」に依頼をしたら、サクッと追記してくれました!!

日にちが変わってしまっているので、今のシンプルロジックの場合のパフォーマンス。

■シンプルロジック

バックテスト期間:2023/7/10 6:03 - 2023/07/14 14:55
純利益:146.40(0.01%)
トレード数:35
勝率:60%
プロフィットファクター:1.239
最大ドローダウン:160.50(0.02%)

■RSI(9期間)追加バージョン

純利益:265.04(0.03%)
トレード数:11
勝率:81.82%
プロフィットファクター:4.914
最大ドローダウン:80.54(0.01%)

RISの判定がちゃんと条件通りに動作しているのかも確認してみます。

買いの場合、RIS30以下
売りの場合、RSI70以上

どちらも正常に動作しているようです。

■RSI(14期間)追加バージョン

純利益:141.84(0.01%)
トレード数:6
勝率:83.33%
プロフィットファクター:4.901
最大ドローダウン:49.18(0%)

■RSI(20期間)追加バージョン

純利益:73.28(0.01%)
トレード数:2
勝率:100%
プロフィットファクター:なし
最大ドローダウン:29.18(0%)

RSIを追加すると、やはりトレード数は減りますが、パフォーマンスは向上する事が分かりました。
特に勝率が格段にあがりました。
また、最大ドローダウンも下がっているのが、嬉しいポイントです。
利確や損切り条件は変えていないので、エントリーポイントのみでの変化という事は、エントリー精度が上がったと考えていいのではないでしょうか。
RSIの期間としては、9か14がよいかなと思います。

逆相関の通貨の優位性

つづいては、ドル円と逆相関の通貨を使って、エントリー精度を高められるかを検証していきたいと思います。
シンプルバージョンと先ほどのRSIバージョンの2パターンで検証したいと思います。
また逆相関通貨も、GBP/USDとEUR/USDを使ってみたいと思います。

狙っているようなポイントとしては以下のようなところです。
ドル円が逆ハンマーでシグナルが出ている時に、GBP/USDでもハンマーが出ているような箇所。

「TradingView」に相関係数を見るインジケーター(CC)が既にあったので、入れてみました。
やはりうまくいっている所は、逆相関(下のスクショでは、-0.86)になっています。

ただ、ずっと逆相関な訳ではないので要注意だと思っています。
例えば、以下のあたりは正の相関になっています。

正の相関になっていると、やはりトレードも損切になっています。
こういった失敗トレードを防げる可能性があると狙っています。

相関係数を見ながら正の相関ならエントリーを避け、負の相関で、エントリーをして、且つGBP/USDもハンマーや逆ハンマーが出ていたらロットを増やすとか少しアイディアは考えてみたいです。

つづいてEUR/USDも見てみたいと思います。

なんだか、ちょっと逆相関はしているとはいえ、微妙な感じが、、、

逆相関はしているものの、ロウソク足の形があまり、連動していないような。

うーん。GBPもEURもどっちもどっちなような気もしてきました!!

GBPの方がやはりというか、ボラが大きいくらいで、GBP/USDとEUR/USDの通貨同士は正の相関が高いと思います。

実際に、EAに取り込んでみて、考えたいと思います。

まずは、相関係数を出すところの整理。
備え付けのインジケーターもありますが、そもそも相関係数を他の通貨を使ってどのようなロジックで算出しているのかを理解したいです。

次に、逆相関の通貨をどのように利用するかの再整理したいです。
通貨の選択:EURにするのか、GBPにするのか、はたまた両方なのか
ロウソク足パターン:ハンマーや逆ハンマーまで見るのか、陽線/陰線でみるのか、はたまた両方なのか
他の利用方法:各通貨のMAでのダイバージェンスを見る。

2023/7/18(火)

相関計数の算出ロジックを解明

通貨ペアの相関関係はどのように計算されているのかを把握したいと思います。
まずは、「TradingView」に備え付けのインジケーターである「CC」というインジケーターのコードをみてみます。

インジケーターの「CC(Correlation Coefficient)]の「ソースコード」をクリックすると、コードを表示してくれます。

このコードを見ても、詳しくは分からないので、「ChatGPT」に説明してもらいます。

こんな感じに1行ずつとオーダーするとちゃんと回答してくれます。

まず指定されたシンボル(通貨ペアとか株名)の終値を指定期間(デフォは20)を取得するようです。

ん?これだけでは、どのような計算なのか不明なので追加で聞いています。

どうやら、「TradingView」で用意されている関数(ta.correlation関数)が使われているようです。
「TradingView」でその関数のヘルプを見てみます。

「ta.sma」がどれくらい乖離しているか?
「ta.sma」を「TradingView」ヘルプで調べてみます。

要は、相関を調べたいペアの20期間のSMAの乖離を表示しているようです。(間違っていたら教えてください)

「ChatGPT」に「ta.correlation関数」を使わないでコードを書き直してもらいました。

余計に分からなくなったで、やめます。
便利な「ta.correlation関数」を活用することにします。

逆相関の通貨をどのように利用するかの再整理

チャートに表示して、状況をみてみる為に、インジケーターを作ってみたいと思います。
GBP/USDやEUR/USDで逆相関通貨と、GBP/JPYやEUR/JPYなど相関通貨を表示するインジケーターを作ってみたいと思います。

早速、「ChatGPT」にオーダーしてみます。

瞬殺!!すごいですよ。
「TradingView」で表示できるか確認してみます。
何度か再注文を繰り返し、以下のインジケーターが作成できました。

ドル円と以下の通貨の相関係数を表示(期間は20)
EUR/USD:青
GBP/USD:緑
EUR/JPY:赤
GBP/JPY:オレンジ

なので、赤とオレンジの暖色線はプラスの正の相関に位置して、青と緑の寒色線は、マイナスの負の相関に位置しているとUSD、JPY、GBP、EURの通貨関係が合っていると言える(?)かなと考えています。
逆に、0に近づいているときは、収縮していてどっちかに発散するタイミングかもしれません。

ちょっとチャートをみてみます。

15:00~15:10くらいまで、みんな価格が下がってきてます。
なので下の相関係数の関係線も、みんな正の相関(相関関係)に向かっています。

チャート上に他の通貨ペアを表示する際に、3種類の表示方法があります。

①同じ%スケール
 これは、チャートの銘柄と、比較する銘柄のチャートを左端からの変化率を表示するチャートを表示するそうです。

②新しい価格スケール
 これは、新しい価格メモリを作成し、メインチャート上でチャートの銘柄と比較する銘柄の値動きを表示するそうです。

③新規ペイン
 これは、メインチャートの下部にサブチャートを表示し、比較する銘柄の値動きを表示するそうです。

なので、チャートへの表示は、「②新しい価格スケール」にしています。

インジケーターの暖色、寒色が各セットで、且つ暖色はプラスの位置、寒色はマイナスの位置にいるのが理想だと考えています。

相関通貨の利用方法案①

以下のように、暖色系(EURとGBPのクロス円)がプラスの位置で、寒色系(EUR/USD、GBP/USD)がプラスの位置に寄ってきた。
時刻:12:26
EUR/USD:0.211
GBP/USD:0.295
EUR/JPY:0.670
GBP/JPY:0.668

徐々に、寒色系がマイナスに落ちてきて、暖色系も一緒に落ちてきました。
寒色系と暖色系の差分がかなり狭まっています。(収縮)
ここから、暖色系が再度、プラスに向かっていき、寒色系はそのままマイナスに行くことを狙って、EUR/JPY(赤)がプラスになったら、買い(Long)を入れます。
時刻:12:30
EUR/USD:▲0.423
GBP/USD:▲0.362
EUR/JPY:▲0.027
GBP/JPY:0.044

暖色系が上向きになってきました。寒色系もマイナスに進んでいます。(発散)
ここで、買い。
USD/JPY:138.570
時刻:12:39
EUR/USD:▲0.817
GBP/USD:▲0.738
EUR/JPY:0.059
GBP/JPY:0.462

再び、寒色系がプラスに到達した時点でエグジット。
2.8pipの利益。
USD/JPY:138.598
時刻:12:48
EUR/USD:0.124
GBP/USD:0.003
EUR/JPY:0.931
GBP/JPY:0.949

相関通貨の利用方法案②

お次は、相関係数の期間を100と長くして、滑らかにします。緩やかというか。
そうする事で、逆相関通貨の反発をより強いところをキャッチできるのではないかと考えました。

イメージは以下のスクショの通り、逆相関通貨である「EUR/USD、GBP/USD」が一度、0ラインを上回り、再度下落していき0ラインを割って、且つ相関通貨である「EUR/JPY、GBP/JPY」がプラス圏に位置している。
(逆相関し始めたので、ドルは買われ、円は変わらないプラス圏なので売られているので、ドル円は上昇するはず)

細かく見てみます。
【1戦目】7/15 4:01
GBP/USDが先行してマイナスになりました。
USD/JPYが、138.826

相関関係である暖色系が下がりつつあり、GBP/JPYが0.5まで落ちてきたのが最高値。
USD/JPYが、138.894(6.7pip)

GBP/JPYがマイナスまで落ちてきたときで、
USD/JPYが、138.850(2.4pip)

続きもみてみます。

【2戦目】7/17 6:09
GBP/USDのみが0ラインを抜けたあと、割ってきたポイント。
USD/JPYが、138.780
最高値は、なんの引っかかりもない箇所。
7/17 06:16
USD/JPYが、138.833(5.2pip)

エントリー
エグジット

GBP/USDが再び0ラインに戻った時でエグジットすると。
7/17 07:54
USD/JPYが、138.784(0.4pip)

お次。
【3戦目】7/17 10:01
GBP/USDが先行して、0ラインを割った時。
USD/JPYが、138.408

エントリー

EUR/USDが再び0ラインに戻った時でエグジットすると。
7/17 12:38
USD/JPYが、138.594(18.6pip)

エグジット

【4戦目】7/17 15:42
EUR/USDのみマイナスになりました。
USD/JPYが、138.471

エントリー

EUR/USDが再び0ラインに戻った時でエグジットすると。
7/17 16:30
USD/JPYが、138.646(17.5pip)

エグジット

【5戦目】7/17 17:33
GBP/USDが先行して、0ラインを割った時。
USD/JPYが、138.416

エントリー

GBP/USDが再び0ラインに戻った時でエグジットすると。
7/17 18:30
USD/JPYが、138.442(2.6pip)

【6戦目】7/17 19:48
GBP/USDのみが0ラインを抜けたあと、割ってきたポイント。
USD/JPYが、138.098

エントリー

GBP/USDが再び0ラインに戻った時でエグジットすると。
7/18 0:56
USD/JPYが、138.956(85.8pip)

エグジット

【7戦目】7/18 2:41
EUR/USDが先行して0ラインを抜けたあと、割ってきたポイント。
USD/JPYが、138.835

エントリー

GBP/USDが0ラインに戻った時でエグジットすると。
7/18 4:15
USD/JPYが、138.690(▲14.5pip)

エグジット

【8戦目】7/18 4:26
GBP/USDのみ0ラインを抜けたあと、割ってきたポイント。
USD/JPYが、138.680

エントリー

GBP/USDが0ラインに戻った時でエグジットすると。
7/18 6:49
USD/JPYが、138.705(2.5pip)

エグジット

8戦7勝1敗 獲得pip(スプレッドなし):114.8
かなりの成績だと思います。
唯一負けたトレードも、暖色系(正の相関)がエントリー時は0.96と高かったのが、徐々に落ちていったので、そのポイントで損切りしていると傷は浅かったのかなと思いました。

が、

今のエントリーロジックに組み込むには、かなりの保有時間があり、ちょっと再考しなければと感じました。

相関係数の整理。(混乱してきました)

相関係数をみて、エントリー条件としていましたが、勘違いしていたかなと確信はないのですが、思うようになってきました。
後々の為にも、ここで整理を。

相関係数は、単純にUSD/JPYとの相関関係を数値化しただけなので、EUR/JPYが正の相関で数値が高いとUSD/JPYと一緒の動きをしているよって事だけ
その時に、USD/JPYの価格が上昇していたら、EUR/JPYも上昇しているので、そこから導かれるのは、「円は売られている」。
逆にUSD/JPYの価格が下落していたら、EUR/JPYも下落しているので、そこから導かれるのは、「円が買われている」。
そこに、GBP/JPYも加わると、より根拠となる材料が増える。

一方、

EUR/USDが負の相関で数値が高いと、USD/JPYとは真逆の動きをしているよって事だけ。
その時に、USD/JPYの価格が上昇していたら、EUR/USDは、下落しているので、そこから導かれるのは、「ドルは買われている」。
逆にUSD/JPYの価格が下落していたら、EUR/USDは、上昇しているので、そこから導かれるのは、「ドルは売られている」。
そこに、GBP/USDも加わると、より根拠となる材料が増える。

で、
それが、同時に起きていたら。
USD/JPYの価格が上昇。
その際、EUR/JPYとGBP/JPYは正の相関で数値が高い=円は売られている。
また、EUR/USDとGBP/USDは負の相関で数値が高い=ドルは買われている。
よって、ドル円の上昇は相関係数が高く維持されているれば、上昇する。

あれ?合っているのでしょうか。。。

相関係数の進化版(?!)

ちょっと実験的なインジケーターを作って検証したいと思います。
夜中なので、朝起きたら、何故こんな事をしていたんだろうと更改するかもしれませんが、気になったので。

EUR/JPYとGBP/JPYの相関係数とEUR/USDとGBP/USDの相関係数をSMA化し、その2本が近づくと相関関係は崩れ、離れていくと相関関係が成立するので、近づいた時にUSD/JPYのSMAの方向性にエントリーし、離れ切ったあと数値が戻ったらエグジットする。

インジケーターを作ってみました。
EUR/JPYとGBP/JPYの9期間の相関係数を足して2で割った数値(暖色系の中央値)を線(オレンジ)

EUR/USDとGBP/USDの9期間の相関係数を足して2で割った数値(寒色系の中央値)を線(青)

2023/7/19(水)

昨日のインジケーターに、収縮が分かりやすいように、2本線の差分を表示するようにしました。
さて、難しいことは考えずに、状況を見てみます。

ではアトランダムに。このシーン。

【オレンジの縦線】
 正の相関である(EUR/JPYとGBP/JPY)の線が、マイナスに入ったタイミング。(ドル円との相関関係が崩れた時)
【青の縦線】
 負の相関である(EUR/USDとGBP/USD)の線が、プラスに入ったタイミング。(ドル円との逆相関関係が崩れた時)

やはり、オレンジ線は正の相関に戻る性質があり、青線は負の相関に戻る性質があると見えます。

インジケーターを更に修正。
オレンジ線と青線の期間を2種類にしました。(9と14)

ダメですね。
そもそもやりたかったことは、エントリー精度の向上とエグジットの改善を探るでした。
なのに、負の相関関係の青線と正の相関関係のオレンジ線でまとめてしまいました。本来、それぞれの通貨ペアの相関関係を見ながら、ドル円のエントリー時にどうか?を見るべきだと考えなおしました。

再度、各通貨の相関関係を表示するインジケーターに戻します。

シンプルロジック(ATR1倍利確)での相関関係利用を検討

逆ハンマーで売りのシグナルが出ました。
なんだか、下げてきそうなシーンです。
相関関係をみてみます。
EUR/JPY:0.433
GBP/JPY:0.345
EUR/USD:-0.887
GBP/USD:-0.811
という事は、まだドルは買われている。逆に円は売られている状況。

結果・・・・
やはり、損切りに合ってしまいました。
緑縦線のタイミングで、GBP/USDがプラスに位置づいているので、ドルが売られ始めた知らせです。

もう一丁。
このシーン。かなり下げてきて、ハンマーが2本も出て、買いシグナルが出ました。ここから上げそうな雰囲気です。
では、相関関係をみてみます。
EUR/JPY:0.896
GBP/JPY:0.910
EUR/USD:-0.764
GBP/USD:-0.731
相関関係は、すべてドル円と同じ動きしてますね。
という事は、まだ下げていく可能性があるという事。

結果は・・・・
やはり、損切りに合ってしまいました。
そのまま相関関係を維持(ドル円と同じ動き=下落)をして、徐々に、オレンジ線(クロス円)が相関性が崩れてきました。

これも同じような理由で、損切りに合っています。

では、次です。
ドル円は下がってきて、ハンマーが出て買いシグナルがでました。
オレンジ線は、ずっと相関関係を維持しています(円は売られている)
緑線が、プラスに少し上げてきています。(ドルの買い)
EUR/JPY:0.986
GBP/JPY:0.993
EUR/USD:-0.942
GBP/USD:-0.664

結果は・・・・
利確になっています。

うーーーむ。
ちょっと、自分で記載していても混乱気味で、頭の悪い私には、少し充電期間が必要なようですので、少し違う形にしてみたいと思います。

相関通貨の利用方法案③

シンプルに、ドル円と逆相関なEUR/USDとGBP/USDのロウソク足のどちらかが、ハンマーや逆ハンマーだったら、エントリーしたらどうなるか?を見てみたいと思います。

一旦、GBP/USDのみを追加してみました。

ちなみに、GBP/USDだけだと、1週間で1エントリーのみ(利確)でした。

EUR/USDも追加してみました。

成績です。
EUR/USDもor条件で入れたので、トレード回数が3回に増えましたが、さすがに少なすぎますね。勝率100%は変わらずで良いのですが。

もう少し条件を緩くして、逆相関通貨は、陽線陰線を条件にしてみます。
ドル円⇒ハンマーなら、EUR/USDかGBP/USDが陰線
ドル円⇒逆ハンマーなら、EUR/USDかGBP/USDが陽線
だましが多くなるかもですが。

成績です。
トレード回数は、10倍に増えました。
が、勝率がガタ落ちです。
これはダメですね。

2023/7/23(日)

以下の記事でも記載しましたが、7月17週のEAパフォーマンスが全て純利益マイナスになってしまったので、改善点がないのかをトレードをトレースしていきたいと思います。

シンプルロジックのATR1倍利確における状況

①ショートエントリー負け 
エントリー後、下げはするものの、反発して損切りにあっています。
その後もヨコヨコしたあと、一度、下げますが、押し目のようにぐっと上昇しています。

②ロングエントリー負け
これも同様ですね。まだ転換のシグナルではなかったという事です。

③ショートエントリー勝ち

このシーンでは、うまく下がっています。

④ロングエントリー勝ち

ここも転換点をとらえられたようです。

トレードが発生した時間帯を見てみます。
1週間程度では情報量が乏しいですが、この1週間では、特段法則性はないのかなと思います。
ただ、トレンド転換を狙っているシグナル(ハンマーや逆ハンマー)なのに、転換されていない場面が多いような感触です。

2023/7/27(木)

上位足でのシグナル判定を加味する

やはり、上位足でのハンマーと逆ハンマーの判定を追加しようと思います。
理由は、1分足でハンマーと逆ハンマーの判定が出たからといって、上位足から見ると、なんてことない陽線や陰線になっている可能性があるからです。

例えば以下のシーン。
ハンマーの判定が出てますが、15分足だと大陰線の途中なだけでした。

複数足での判定が見えるようにコードを修正したいと思います。

2023/7/31(月)

1分足で5分足のピンバー判定は、出る訳ないっ!

これに再認識するまで、時間を要してしまいました。
考えてみれば、あたり前なのですが、1分足が形成されていく中で、ハンマーや逆ハンマーの判定が出たあとに、5分単位で判定される。
こんな当たり前なことに、ストラテジーを作成して実装できるまでかかりました。

エントリー条件に、上位足のロウソク足判定と現状足を合わせてしまったので、全く売買判定が検出されませんでした。
それで気づきました。。。。

エントリー条件を再考

解決しようとしていた事は、1分足でロウソク足判定が出ても、上位足ではただのロウソク足になってしまっていて、狙っている転換にならずに、そのまま損切にあってしまうのが解決したい事でした。
1分足を主戦場とするのであれば、5分足か15分足の上位足を判定すればよいかと考えています。

以下のチャートで、緑▲が5分足でのハンマーの判定。赤▼が5分足での逆ハンマーの判定。

2023/7/28 18:00~

5分足でチャート表示。

よく見ると、今回追加した上位足のロウソク足判定のロジックは、1分足チャートで5分足で、微妙にズレているような。。。







気になっているメモ
ドルインデックスとの関係性
通貨を変えてみる?
Gold
GBP系

E. 上位足でのロウソク足を判定は、やはり検証してみたい。
理由は、少し利幅を伸ばしていく事を見据えると、1分足だけのハンマーや逆ハンマーでは弱い部分もあるので、5分足でも出たらどうなのか?を見てみたい。

RSIの使い方を見直す
時間帯でのトレードを見直す

この記事が参加している募集

AIとやってみた

この記事が気に入ったらサポートをしてみませんか?