PU-METALのブログ

日銀にはウンザリなので外貨専になりました

ドル円完成

取り敢えずグラフ

f:id:kohnodechu:20170225142826p:plain

ポンドルと同様にやってみたら良いの出来ました

ポンドルはっぱ癖が悪い。ドル円は素直

良いわ~DD小さいから1万で千通貨ってところか

複利でやったら年利100%目指せるかも?

捕らぬ狸の皮算用の可能性大だけどね

 

引き続きユーロドルやってみよう。きっと素直

 

追記

日単位でDDを計算してみた

 

2001ー2016のMAXDD6600円ほど

複利でやるんじゃ余裕見て1万3千円で千通貨てとこか

 

ついでにDD求めるプロシージャ置いとこう

Sub maxdd() 'MDDの計算。上から下へ横へ
Dim P As Long '縱
Dim Q As Long '横
Dim Pd As Single 'DD
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Q = 1 To 5
For P = 0 To Range("a1048576").End(xlUp).Row - 28 '都度変える
With Range("a28") '初日 都度変える
If .Offset(P, Q).Value <> "" Then
Pd = Pd + .Offset(P, Q).Value
If Pd >= 0 Then
Pd = 0
ElseIf Pd < Range("a15").Offset(, Q).Value Then 'MDD欄。都度変える
Range("a15").Offset(, Q).Value = Pd '都度変える
End If
End If
End With
Next
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

カーブフィッテイング

損益の比率を変えて最適値を探してみた

フィボナッチ使って62、50、38の組み合わせ9通りで1番良いのを使って出来た損益累計曲線

f:id:kohnodechu:20170210153629p:plain

2011年迄は当然上がったのだがフォアード期間がパッとしない

カーブフィッテイングてもんだったのね

スパッと半値で行こう

これ単独では使う気しないので他の通貨ペアでもやってみよう

 

 

 

ポンドルブレイクアウトシステム一応完成

取り敢えず損益累計曲線

f:id:kohnodechu:20170210102556p:plain

2012年からのフォアード期間に入ってもMAXDD更新することも無く横這い

ここ2年なんか年利100%有りそう。150ドルで1000通貨くらい

長い目で見たら年利20~30%でこのまま上がって行くのでは?

 

使った条件は前日の高値安値更新と上下とレンジの大小

この組み合わせで勝率の高そうなものを使ってみました

 

基本この方法で損益の比率を変えてみたり時間を変えてみたりして利益の向上を図ってみます

 

 

 

条件付き書式

EXcel2007から簡単にセルの色付けが出来るようになり

フィルターを検討するのにそれを使っている

こんな感じ

f:id:kohnodechu:20170208110136p:plain

取り敢えず条件にもよるが、水曜日はトレンドが出にくいのかブレイクアウトには向いてない気がした。今日も下に行くのかと思いきや戻ったものね

良い条件を探すが

今日のポンドルまた21時間線に跳ね返されるだろうと適当に売り上がりつつ、使えるパターンを求めてを求めてマクロ動かしてみた

前日高値安値ブレイクは取り敢えず正義ということは判ったが、どのパターンも勝率が60%行かない。DDはまだ計算してないが大きいことが予想され・・・

時間、曜日フィルターでも使ってみて、駄目だったら損益の比率を変えてみるかってところなのです

 

ここまでの表とプロシージャ

f:id:kohnodechu:20170207124318p:plain

Sub それぞれ()
Dim P As Long '行
Dim Q As Long '列
Dim Rp As Range
Set Rp = Range("a21")
Dim Tk As Long, Ys As Long, Jg As Long, Ds As Long '条件一致
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Rp
For Q = 12 To 75 '買い
For P = 29 To Range("a1048576").End(xlUp).Row
If .Offset(, Q) = "" Or .Offset(, Q).Value = Range("c" & P).Value Then
Tk = 1
End If
If .Offset(1, Q) = "" Or .Offset(1, Q).Value = Range("d" & P).Value Then
Ys = 1
End If
If .Offset(2, Q) = "" Or .Offset(2, Q).Value = Range("e" & P).Value Then
Jg = 1
End If
If .Offset(3, Q) = "" Or .Offset(3, Q).Value = Range("f" & P).Value Then
Ds = 1
End If
If Tk * Ys * Jg * Ds = 1 And Range("i" & P) <> "" Then
.Offset(P - 21, Q).Value = .Offset(P - 21, 8).Value
End If
Tk = 0: Ys = 0: Jg = 0: Ds = 0
Next
Next
For Q = 76 To 139 '売り
For P = 29 To Range("a1048576").End(xlUp).Row
If .Offset(, Q) = "" Or .Offset(, Q).Value = Range("c" & P).Value Then
Tk = 1
End If
If .Offset(1, Q) = "" Or .Offset(1, Q).Value = Range("d" & P).Value Then
Ys = 1
End If
If .Offset(2, Q) = "" Or .Offset(2, Q).Value = Range("e" & P).Value Then
Jg = 1
End If
If .Offset(3, Q) = "" Or .Offset(3, Q).Value = Range("f" & P).Value Then
Ds = 1
End If
If Tk * Ys * Jg * Ds = 1 And Range("l" & P) <> "" Then
.Offset(P - 21, Q).Value = .Offset(P - 21, 11).Value
End If
Tk = 0: Ys = 0: Jg = 0: Ds = 0
Next
Next
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

 

フィルターを検討する準備

今日はタカシヤマで恵方巻き買って帰らあかんのにさっき少し売ってみたらハマったかも?

 

あんな何十万行も有るデータ扱いにくいので、フィルターを検討する前に別シートを作り日ごとに戦績をまとめてみました

 

こんな感じ

f:id:kohnodechu:20170203165558p:plain

Sub 最適化準備()
Dim Rp As Range 'rpは日付
Dim Rq As Range
Dim St As Worksheet, Ss As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set St = Worksheets("test")
Set Ss = Worksheets("sai")
For Each Rp In Selection
With Rp
If .Offset(, 1).Value = 84500 Then
Set Rq = Ss.Range("a" & Ss.Range("a1048576").End(xlUp).Row + 1)
Rq.Value = .Value
Rq.Offset(, 1).Value = .Offset(, 2).Value
Rq.Offset(, 2).Value = .Offset(, 13).Value
Rq.Offset(, 3).Value = .Offset(, 14).Value
Rq.Offset(, 4).Value = .Offset(, 15).Value
Rq.Offset(, 5).Value = Sgn(.Offset(, 12).Value - .Offset(, 11).Value)
End If
If .Offset(, 16).Value = 0 And .Offset(, 16).Value <> "" Then
Rq.Offset(, 6).Value = .Offset(, 1).Value / 100
ElseIf .Offset(, 16).Value <> 0 Then
Rq.Offset(, 7).Value = .Offset(, 1).Value / 100
Rq.Offset(, 8).Value = .Offset(, 16).Value * 10000
End If
If .Offset(, 17).Value = 0 And .Offset(, 17).Value <> "" Then
Rq.Offset(, 9).Value = .Offset(, 1).Value / 100
ElseIf .Offset(, 17).Value <> 0 Then
Rq.Offset(, 10).Value = .Offset(, 1).Value / 100
Rq.Offset(, 11).Value = .Offset(, 17).Value * 10000
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub