PU-METALのブログ

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

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

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

 

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

 

こんな感じ

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

フィボナッチは効く

今日のポンドルは朝から売って行ってます

161.8%ラインに跳ね返されるだろうと思って

抜けたら1.27で損切りってとこでしょうか

 

メイ首相のユーロ離脱演説で出た上昇から引いたフィボナッチが、ここのところ見事に決まってるのでチャート貼っときます

f:id:kohnodechu:20170202103027p:plain

ポンドル前日高値安値ブレイクアウトシステム

単純に前日レンジをブレイクして、前日レンジか5日間レンジ平均の半値行ったら勝ち、戻ったら負け

 2001年から2011年迄動かしたら使い物になりそう

 あと負けやすいパターンを見つけそれをパスして、フォアードに取ってある2012年から2017年まで動かしてみて、ドローダウンも小さく儲かるようならこれからも行けるだろうと云うことで使い出します

 

表とプロシージャ一応

f:id:kohnodechu:20170203133738p:plain

Sub テスト()
Dim Rp As Range 'rpは日付
Dim Ek As Single, Eu As Single '前日半値エントリー -1はエントリーしない
Dim Ek1 As Single, Eu1 As Single '平均半値エントリー
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Rp In Selection
With Rp
If .Offset(, 1).Value = 83000 Then '8:45決済
If Ek > 0 Then
.Offset(, 16).Value = .Offset(, 6).Value - Ek
End If
If Ek1 > 0 Then
.Offset(, 18).Value = .Offset(, 6).Value - Ek1
End If
If Eu > 0 Then
.Offset(, 17).Value = Eu - .Offset(, 6).Value - 0.0002
End If
If Eu1 > 0 Then
.Offset(, 19).Value = Eu1 - .Offset(, 6).Value - 0.0002
End If
Ek = 0: Ek1 = 0: Eu = 0: Eu1 = 0
If .Offset(, 6).Value > .Offset(, 8).Value Then '8:45に超してたらやらない
Ek = -1: Ek1 = -1
End If
If .Offset(, 6).Value < .Offset(, 9).Value Then
Eu = -1: Eu1 = -1
End If
ElseIf .Offset(, 1).Value < 83000 And .Offset(, 1).Value > 64500 Then
'あさ8:30まではエントリーしない
If Ek = 0 Then
Ek = -1
End If
If Ek1 = 0 Then
Ek1 = -1
End If
If Eu = 0 Then
Eu = -1
End If
If Eu1 = 0 Then
Eu1 = -1
End If
Else
'勝ち
If Ek > 0 And Ek + .Offset(, 12).Value / 2 < .Offset(, 4).Value Then
.Offset(, 16).Value = .Offset(, 12).Value / 2
Ek = -1
End If
If Ek1 > 0 And Ek1 + .Offset(, 11).Value / 2 < .Offset(, 4).Value Then
.Offset(, 18).Value = .Offset(, 11).Value / 2
Ek1 = -1
End If
If Eu > 0 And Eu - .Offset(, 12).Value / 2 - 0.0002 > .Offset(, 5).Value Then
.Offset(, 17).Value = .Offset(, 12).Value / 2
Eu = -1
End If
If Eu1 > 0 And Eu1 - .Offset(, 11).Value / 2 - 0.0002 > .Offset(, 5).Value Then
.Offset(, 19).Value = .Offset(, 11).Value / 2
Eu1 = -1
End If
'負け
If Ek > 0 And Ek - .Offset(, 12).Value / 2 > .Offset(, 5).Value Then
.Offset(, 16).Value = -.Offset(, 12).Value / 2
Ek = -1
End If
If Ek1 > 0 And Ek1 - .Offset(, 11).Value / 2 > .Offset(, 5).Value Then
.Offset(, 18).Value = -.Offset(, 11).Value / 2
Ek1 = -1
End If
If Eu > 0 And Eu + .Offset(, 12).Value / 2 - 0.0002 < .Offset(, 4).Value Then
.Offset(, 17).Value = -.Offset(, 12).Value / 2
Eu = -1
End If
If Eu1 > 0 And Eu1 + .Offset(, 11).Value / 2 - 0.0002 < .Offset(, 4).Value Then
.Offset(, 19).Value = -.Offset(, 11).Value / 2
Eu1 = -1
End If
'エントリー
If Ek = 0 And Ek <> -1 And Ek1 <> -1 And .Offset(, 8).Value < .Offset(, 4).Value Then
Ek = .Offset(, 8).Value + 0.0002: Ek1 = .Offset(, 8).Value + 0.0002
.Offset(, 16).Value = 0: .Offset(, 18).Value = 0
End If
If Eu = 0 And Eu <> -1 And Eu1 <> -1 And .Offset(, 9).Value > .Offset(, 5).Value Then
Eu = .Offset(, 9).Value: Eu1 = .Offset(, 9).Value
.Offset(, 17).Value = 0: .Offset(, 19).Value = 0
End If
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

下準備完了のような気が

夕方ユーロドル高値で買い難平して帰れなくなり今2時半過ぎ

でポンドルシステムの続きをやってました

 

構想は日足の高値安値ブレイクアウト。それに5日間の平均値幅を組み合わせて・・・

 

そんな下準備のプロシージャが出来たので、とは云うものの時間がかかるかもしれないので実行は日中 日中やったら8分ほどでした

一応ここに残しとこうと

f:id:kohnodechu:20170127024730p:plain

Sub 日足4本値()
Dim Rp As Range 'rpは日付
Dim Hh As Single, Th As Single, Yh As Single, Oh As Single '日足
Dim Hk As Single, Tk As Single, Yk As Single, Ok As Single '日足計算中
Dim Wa As Single, Wb As Single, Wc As Single, Wd As Single, We As Single, Wh As Single '値幅
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Rp In Selection
With Rp
If .Offset(, 2).Value <> .Offset(-1, 2).Value Then '夜明け
Hh = Hk: Th = Tk: Yh = Yk: Oh = Ok
Hk = .Offset(, 3).Value
Tk = .Offset(, 4).Value
Yk = .Offset(, 5).Value
Wa = Wb: Wb = Wc: Wc = Wd: Wd = We: We = Th - Yh
Wh = (Wa + Wb + Wc + Wd + We) / 5
ElseIf .Offset(, 2).Value <> .Offset(1, 2).Value Then '夜明け前
If .Offset(, 4).Value > Tk Then
Tk = .Offset(, 4).Value
End If
If .Offset(, 5).Value < Yk Then
Yk = .Offset(, 5).Value
End If
Ok = .Offset(, 6).Value
Else
If .Offset(, 4).Value > Tk Then
Tk = .Offset(, 4).Value
End If
If .Offset(, 5).Value < Yk Then
Yk = .Offset(, 5).Value
End If
End If
.Offset(, 7).Value = Hh
.Offset(, 8).Value = Th
.Offset(, 9).Value = Yh
.Offset(, 10).Value = Oh
.Offset(, 11).Value = Wh
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

 

 

 

 

 

Weekday関数メモ

ポンドル売り損切って買ったらまた損切りそうな

4時間足も完全に下向いたしな~どうする?

 

でさっきから昨日のForex Testerのデータを加工しだして嵌まったのでメモ

 

曜日を使うかもしれないので出しとこうとやり出したら悩んだ

プロシージャと表はこんな

 

f:id:kohnodechu:20170124153432p:plain

Sub 曜()
Dim Rp As Range 'rpは日付
For Each Rp In Selection
With Rp
' .Offset(, 2).Value = Weekday(Left(.Value, 4) / Mid(.Value, 5, 2) / Right(.Value, 2))
.Offset(, 2).Value = Weekday(Left(.Value, 4) & " /" & Mid(.Value, 5, 2) & " /" & Right(.Value, 2))
End With
Next
End Sub

 

間違ったのはこのコメントブロックにしているところ

これだと2001/1/3の割り算をしてしまうのね

 

久々Weekday関数使ったもので・・・

忘れないようここにメモ

 

ちなみにポンドルの買い損切った

 

 

FOREX TESTER用マクロ

225のシストレをやってきたが、この官製相場にはセオリーがどうにも通用しないと諦めた

今年からFX専業で行きます

通貨ペアはポンドル。以前はスプレッドが広くて手を出しかねていたが最近非常に狭くなり、17時には飲み出すアル中トレーダー用のよく動いてくれるドルストレートと云うわけです

で久々にFOREX TESTERからデータをエクスポートした

これを使い易く加工するマクロをここに記録しておきます。以前にもそんなの作ってるのですがもう何処行ったか分からずここに保存しようと

エクスポートする時のシフトタイムは+8h。これで標準時間は東京時間になります

あとサマータイムを東京時間にするマクロをば少々

 

Sub サマータイム()
Dim Rp As Range 'rpは日付
Dim T As Long '標準時間0夏時間1
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Rp In Selection
With Rp
If .Value - .Offset(-1).Value > 1 Then '週明け
If .Offset(, 1).Value = 60000 Then '6時なら
T = 1
ElseIf .Offset(, 1).Value = 70000 Then '7時なら
T = 0
End If
End If
If T = 1 And .Offset(, 1).Value < 230000 Then '夏で23時前
.Offset(, 1).Value = .Offset(, 1).Value + 10000
ElseIf T = 1 And .Offset(, 1).Value >= 230000 Then '夏で23時台
.Offset(, 1).Value = .Offset(, 1).Value - 230000

.Value = .Offset(4).Value'そのままだと日付ずれるので

End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

ここに貼り付けるとTabが消えるのが難

 

無事1発で実行完了。東京時間に

40万行も有るから何十分も掛かるかと思いきや1分ほどでした

f:id:kohnodechu:20170123173145p:plain