PU-METALのブログ

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

お彼岸2日悩んだ

金曜の夕方何となく完成した?EA

どうも挙動がおかしいと土曜にお墓参りと土筆採り済ませて昨日出て来た

ああじゃ無いこうじゃ無いと試行錯誤しても解決出来ず今日も・・・

やっと判った

 

指値を求める関数の宣言をdoubleでしないといけないところをintにしてたのね

変数の方は何十回と見直してるんだけどこの関数の頭には目が行きませんでしてん

ど素人ってもんですな

 

これから注意するようここに

f:id:kohnodechu:20170320170405p:plain

 

くたびれ果てたから直すの明日にして飲んで帰るわ

 

ドル円8時間足ブレイクアウトⅡ

出来た

今までで最強かも

これは2日間だけの値動きを見てエントリーするシステム

東京時間はお休み

ロンドン時間とNY時間でエントリー条件が違って最大2枚エントリーするんだけど

2003年から動かしてMAXDDは842円。1枚あたりにすると極上です

 

損益累計曲線

f:id:kohnodechu:20170316131329p:plain

こいつをこいつをEA化するぞ

難儀するのは目に見えてるけど

ドル円8時間足ブレイクアウト

取り敢えず損益累計曲線

f:id:kohnodechu:20170315125352p:plain

駄目だ

ただロンドン時間の安値ブレイクだけは逸品。薄利だけど

4時間のEA作る前に下書きとしてこれ作ってみよ

 

5分足から8時間足作ってテストするところまで一連のプロシージャ

進化したので置いとこう

f:id:kohnodechu:20170315130904p:plain

Sub 番() '8時間足に1-3の番号をふる
Dim Rp As Range 'rpは日付
Dim Kai As Long '80000or70000サマータイム
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Rp In Selection
With Rp
If .Offset(-1).Value <> .Value Then
If .Offset(, 1).Value = 70000 Then
Kai = 70000
ElseIf .Offset(, 1).Value = 80000 Then
Kai = 80000
End If
End If
If .Offset(, 1).Value - Kai >= 0 Then
.Offset(, 2).Value = Int((.Offset(, 1).Value - Kai) / 80000) + 1
Else
.Offset(, 2).Value = Int((240000 + .Offset(, 1).Value - Kai) / 80000) + 1
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

 

Sub 時間足()
Dim Rp As Range 'rpは日付
Dim Hh1 As Single, Th1 As Single, Yh1 As Single, Oh1 As Single '前日8時間足
Dim Hk1 As Single, Tk1 As Single, Yk1 As Single, Ok1 As Single '8時間足計算中
Dim Hh2 As Single, Th2 As Single, Yh2 As Single, Oh2 As Single
Dim Hk2 As Single, Tk2 As Single, Yk2 As Single, Ok2 As Single
Dim Hh3 As Single, Th3 As Single, Yh3 As Single, Oh3 As Single
Dim Hk3 As Single, Tk3 As Single, Yk3 As Single, Ok3 As Single
Dim Wa1 As Single, Wb1 As Single '値幅a前々b前
Dim Wa2 As Single, Wb2 As Single
Dim Wa3 As Single, Wb3 As Single
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Rp In Selection
With Rp
Select Case .Offset(, 2).Value
Case Is = 1
If .Offset(-1, 2).Value = 3 Then
Hh1 = Hk1: Th1 = Tk1: Yh1 = Yk1: Oh1 = Ok1
Hk1 = .Offset(, 3).Value
Tk1 = .Offset(, 4).Value
Yk1 = .Offset(, 5).Value
Wa1 = Wb1
Wb1 = Th1 - Yh1
Else
If .Offset(, 4).Value > Tk1 Then
Tk1 = .Offset(, 4).Value
End If
If .Offset(, 5).Value < Yk1 Then
Yk1 = .Offset(, 5).Value
End If
If .Offset(1, 2).Value = 2 Then '最後に終値
Ok1 = .Offset(, 6).Value
End If
End If
.Offset(, 7).Value = Hh1
.Offset(, 8).Value = Th1
.Offset(, 9).Value = Yh1
.Offset(, 10).Value = Oh1
.Offset(, 11).Value = Wa1
.Offset(, 12).Value = Wb1
If Tk3 > Tk2 Then '前足と前々足の比較
.Offset(, 13).Value = 1
Else
.Offset(, 13).Value = 0
End If
If Yk3 < Yk2 Then
.Offset(, 14).Value = 1
Else
.Offset(, 14).Value = 0
End If
If Hk3 < Ok3 Then '前足の上下
.Offset(, 15).Value = 1
Else
.Offset(, 15).Value = -1
End If
Case Is = 2
If .Offset(-1, 2).Value = 1 Then
Hh2 = Hk2: Th2 = Tk2: Yh2 = Yk2: Oh2 = Ok2
Hk2 = .Offset(, 3).Value
Tk2 = .Offset(, 4).Value
Yk2 = .Offset(, 5).Value
Wa2 = Wb2
Wb2 = Th2 - Yh2
Else
If .Offset(, 4).Value > Tk2 Then
Tk2 = .Offset(, 4).Value
End If
If .Offset(, 5).Value < Yk2 Then
Yk2 = .Offset(, 5).Value
End If
If .Offset(1, 2).Value = 3 Then '最後に終値
Ok2 = .Offset(, 6).Value
End If
End If
.Offset(, 7).Value = Hh2
.Offset(, 8).Value = Th2
.Offset(, 9).Value = Yh2
.Offset(, 10).Value = Oh2
.Offset(, 11).Value = Wa2
.Offset(, 12).Value = Wb2
If Tk1 > Tk3 Then '前足と前々足の比較
.Offset(, 13).Value = 1
Else
.Offset(, 13).Value = 0
End If
If Yk1 < Yk3 Then
.Offset(, 14).Value = 1
Else
.Offset(, 14).Value = 0
End If
If Hk1 < Ok1 Then '前足の上下
.Offset(, 15).Value = 1
Else
.Offset(, 15).Value = -1
End If
Case Is = 3
If .Offset(-1, 2).Value = 2 Then
Hh3 = Hk3: Th3 = Tk3: Yh3 = Yk3: Oh3 = Ok3
Hk3 = .Offset(, 3).Value
Tk3 = .Offset(, 4).Value
Yk3 = .Offset(, 5).Value
Wa3 = Wb3
Wb3 = Th3 - Yh3
Else
If .Offset(, 4).Value > Tk3 Then
Tk3 = .Offset(, 4).Value
End If
If .Offset(, 5).Value < Yk3 Then
Yk3 = .Offset(, 5).Value
End If
If .Offset(1, 2).Value = 1 Then '最後に終値
Ok3 = .Offset(, 6).Value
End If
End If
.Offset(, 7).Value = Hh3
.Offset(, 8).Value = Th3
.Offset(, 9).Value = Yh3
.Offset(, 10).Value = Oh3
.Offset(, 11).Value = Wa3
.Offset(, 12).Value = Wb3
If Tk2 > Tk1 Then '前足と前々足の比較
.Offset(, 13).Value = 1
Else
.Offset(, 13).Value = 0
End If
If Yk2 < Yk1 Then
.Offset(, 14).Value = 1
Else
.Offset(, 14).Value = 0
End If
If Hk2 < Ok2 Then '前足の上下
.Offset(, 15).Value = 1
Else
.Offset(, 15).Value = -1
End If
End Select
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

 

Sub テストTO()
Dim Rp As Range 'rpは日付
Dim T As Single, Y As Single '前日高安
Dim Ek As Single, Eu As Single '-1はエントリーしない
Dim Hk As Single, Hu As Single '勝敗価格
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Ek = -1: Eu = -1
For Each Rp In Selection
With Rp
If .Offset(, 2).Value = 3 And .Offset(1, 2).Value = 1 Then '5min前決済
If Ek > 0 Then
.Offset(, 16).Value = .Offset(, 3).Value - Ek
End If
If Eu > 0 Then
.Offset(, 17).Value = Eu - .Offset(, 3).Value - 0.01
End If
Ek = -1: Eu = -1: Hk = 0: Hu = 0
ElseIf .Offset(-1, 2).Value = 3 And .Offset(, 2).Value = 1 Then '3になった時
T = .Offset(, 8).Value
Y = .Offset(, 9).Value
Hk = .Offset(, 12).Value
Hu = .Offset(, 12).Value
If .Offset(, 3).Value < T Then
Ek = 0
End If
If .Offset(, 3).Value > Y Then
Eu = 0
End If
End If
'勝ち
If Ek > 0 And Ek + Hk < .Offset(, 4).Value Then
.Offset(, 16).Value = Hk
Ek = -1: Hk = 0
End If
If Eu > 0 And Eu - Hu - 0.01 > .Offset(, 5).Value Then
.Offset(, 17).Value = Hu
Eu = -1: Hu = 0
End If
'負け
If Ek > 0 And Ek - Hk > .Offset(, 5).Value Then
.Offset(, 16).Value = -Hk
Ek = -1: Hk = 0
End If
If Eu > 0 And Eu + Hu - 0.01 < .Offset(, 4).Value Then
.Offset(, 17).Value = -Hu
Eu = -1: Hu = 0
End If
'エントリー
If Ek = 0 And T < .Offset(, 4).Value Then
Ek = T + 0.01
.Offset(, 16).Value = 0
End If
If Eu = 0 And Y > .Offset(, 5).Value Then
Eu = Y
.Offset(, 17).Value = 0
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

 

ドル円4時間足システム

安定のブレイクアウト

東京ロンドンニューヨーク時間でエントリー条件を変えてみて上手く行きました

5分足でやったためエクセルの2の20乗行縛りで2003年から2011年の傾向を見て作ってみました

いつものように使うのはロウソク足だけ

 

取り敢えずグラフ

f:id:kohnodechu:20170313152932p:plain

このまま安定して右肩上がりで行ってくれる気がします

 

でも本当はこっちのグラフ

f:id:kohnodechu:20170313153150p:plain

ロンドン時間の売りシステムが理由は不明ですがここ1年酷いDDに遭い、これから回復するか?でやむを得ず外した結果が上のグラフ

後出しじゃんけんみたいでイヤなのですが

 

あとは逆張り試してみたりしてまたEAかするんです

 

 

Do Loop構文

デスクトプーに有った過去システム探訪も一段落し、日足ブレイクシステムの成功に気をよくして4時間足突入

ただ日足ブレイクEAこの糞レンジで3連敗中。過去15年の最大連敗がなのにも拘わらずwwwまあ平均が2なのですが

確定申告は後回しで今週中にやってやるぞと

 

Do Loop構文で昨日無限Loopにはまり今日って事で完成形置いておこう

いつものようにFor  Eachで上から見ていくわけですが、これは日足と違って決済が足をまたぐ仕様にしたので、エントリーしたらその時間を記録しDo Loopを使って何時にいくらで決済されたかを探しに行きますの。そんなプロシージャ

 

シートtest

f:id:kohnodechu:20170308110524p:plain

 

シートsai

f:id:kohnodechu:20170308110554p:plain

 

Sub 最適化準備()
Dim Gyo As Long
Dim Rp As Range 'rpは日付
Dim Rq As Range
Dim P As Long, Q As Long '損益を探りに行くやつ
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(, 2).Value <> .Offset(-1, 2).Value 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
P = 1
Do While .Offset(P, 16).Value = ""
P = P + 1
Loop
Rq.Offset(, 7).Value = .Offset(P, 1).Value / 100
Rq.Offset(, 8).Value = .Offset(P, 16).Value * 100
End If
If .Offset(, 17).Value = 0 And .Offset(, 17).Value <> "" Then
Rq.Offset(, 9).Value = .Offset(, 1).Value / 100
Q = 1
Do While .Offset(Q, 17).Value = ""
Q = Q + 1
Loop
Rq.Offset(, 10).Value = .Offset(Q, 1).Value / 100
Rq.Offset(, 11).Value = .Offset(Q, 17).Value * 100
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

曜日に拘ったシステム

デスクトプーの断捨離もいよいよ終盤

以前作ったシステムの再発見を目論むが・・・

 

これは2013年に2001年から2011年迄の傾向を見て作ったシステム

色んなパラメーター使ってひじょーに時間かけた覚えが

 

捨てる前に記念写真

f:id:kohnodechu:20170306121552p:plain

 

この寄り寄りも稼働させて暫くは良い感じだったのですが結構なDDきましてん

最後のDDは官製相場にやられてる気がしないでもないが 

曜日フィルターってあまり意味ない様な気が

とにかくずっと使えるシステムはシンプルでなきゃと思った次第

日経先物PIVOTトレードシステム

去年までFXは人の作ったEAを片手間で動かしているだけの日経先物専業トレーダーでした

ここ2年負け、この官製相場のせいと思っておりました

それで今年からFXで再起をはかろうとしているところなのです

 

一生使えそうなEAが1つ出来一段落したところで、今日は朝からデスクトップの整理

でも中身じっくり見てしまって進まないんですよねぇ

 

そこで秋頃のDDで使うの止めてしまったシステムを見て、これ使っていたらどうだったのだろう?と日足データを入れて動かしてみました

 

何と官製相場ものともせず仕事してくれてたんです

ゴメンね~信じてやれなくってて感じ

グラフ

f:id:kohnodechu:20170303095045p:plain

Pだけ外してまた使いだそと思っているところです

反省させられました

 

何があかんかったのか?他人が作ったシステムだったんですね

最後の方自分の使ってませんでしたから

 

思い出しましたがこのシステムは2001年から2013年迄の傾向を見て作ったシステムで1990年から2000年は過去ですがフォアードなんです

やっぱこんなのがずっと使えるんですよね

MAXDD2千円ぐらいみとかないといけないのが難

あと日経先物でイヤなこと思い出した。逆指値同値に刺さらんことが多いのね。逆指値成行にすると5円とか10円ロスするし。それが止めた原因のひとつ

 

まっ他のもやってみよっと