SSブログ
オリジナルEA・インジケーター制作
FX自動売買ソフト製作のMagic EA Maker

ワークブックを開く [FX エクセル]

[FXシステムトレード] ブログ村キーワード

ども!バアルです。

今回はカンマ区切りのファイルを開いてここまでで作った

プログラムを適用させます。

Dim lastrow(100) As Long
Dim Youbi As Integer
Dim ZikanB As Integer
Dim ZikanE As Integer
Dim HunB As Integer
Dim HunE As Integer
Dim Hajimari As Single
Dim Owari As Single
Dim HajimariV As Single
Dim OwariV As Single
Dim ownBookName As String
Dim BookName(10) As String
Dim WBK As Workbook
Dim G As Integer
Sub main()

Set WBK = ThisWorkbook ' 自ブック
ownBookName = WBK.Name ' 自ブック名

Dim OpenFile As String
ChDir "C:\Users\wak\Desktop\書庫\AutoForexite\HistoricalData" '\AUDJPY\1min"
OpenFile = Application.GetOpenFilename("すべてのファイル,*.txt")
MsgBox OpenFile & " を開きます"

Workbooks.OpenText Filename:=OpenFile, DataType:=xlDelimited, comma:=True

For n = 1 To Workbooks.Count
BookName(n) = Workbooks(n).Name
If BookName(n) <> ownBookName Then
G = n
End If
Next n


Workbooks(BookName(G)).Activate
lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
Youbi = InputBox("何曜日を抽出しますか?(月=1:火=2:水=3:木=4:金=5")
ZikanB = InputBox("何時からを抽出しますか?(0〜23)")
HunB = InputBox("何分から抽出しますか?(0〜59)")
ZikanE = InputBox("何時までを抽出しますか?(0〜23)")
HunE = InputBox("何分まで抽出しますか?(0〜59)")

Hajimari = 0.000694445 * 60 * ZikanB + 0.000694445 * HunB
Owari = 0.000694445 * 60 * ZikanE + 0.000694445 * HunE

For i = 1 To lastrow(0)
Cells(i, 7) = WorksheetFunction.Weekday(Cells(i, 1), 1)
Cells(i, 8) = Month(Cells(i, 1))
Next

For i = 1 To lastrow(0)
If Cells(i, 8) > 1 And Cells(i, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If
If i > 31833 Then
i = i
End If
If Cells(i, 7) <> Youbi Or Cells(i, 2) < HajimariV Or Cells(i, 2) > OwariV Then

For ii = i To lastrow(0)
If Cells(ii, 8) > 1 And Cells(ii, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If
If ii > 35000 Then
ii = ii
End If
If Cells(ii, 7) = Youbi And Cells(ii, 2) > HajimariV And Cells(ii, 2) < OwariV Then
Workbooks(BookName(G)).Activate
Range("A" & i, "H" & ii - 2).Select
Selection.Clear
i = ii + 1
Exit For
End If
Next
End If
Next

For k = 1 To lastrow(0)
If Cells(k, 1) = "" Then
For kk = k To lastrow(0)
If Cells(kk, 1) <> "" Then
Exit For
End If
Next
Rows(k & ":" & kk - 1).Select
Selection.Delete shift:=xlUp
lastrow(0) = lastrow(0) - (kk - k)
If k > lastrow(0) Then
Exit For
End If
'IL = IL + 1
End If
Next k

lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
For i = 1 To lastrow(0)
If Cells(i, 8) > 1 And Cells(i, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If
If i > 189 Then
i = i
End If
If Cells(i, 7) <> Youbi Or Cells(i, 2) > OwariV Then

For ii = i To lastrow(0)
Workbooks(BookName(G)).Activate
Range("A" & i, "H" & lastrow(0)).Select
Selection.Clear
i = ii + 1
'Exit For
GoTo Syuuryou
Next
End If
Next
Syuuryou:

End Sub




次は相手通貨ペアを別のブックに開き、1冊のブックに統合

したいと思います。


今日の1位はどこかしら
↓ ↓ ↓ ↓

にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村

ファイルを開く [FX エクセル]

[FXシステムトレード] ブログ村キーワード
ども!バアルです。

今回はForexciteの1分足テキストファイルデータを

マクロで読み込むということをやってみようと思います。

Dim OpenFile As String
ChDir "C:\Users\wakui\Desktop\AutoForexite\HistoricalData"
OpenFile = Application.GetOpenFilename("すべてのファイル,*.txt")
MsgBox OpenFile & " を開きます"

Dim buf As String, n As Long
' Open OpenFile For Input As #1
Do Until EOF(1)
Line Input #1, buf
n = n + 1
Cells(n, 1) = buf
Loop
Close #1

これでテキストファイルを読み込むんですが、カンマ区切りで

認識してくれない。

カンマ区切りでセルを変えて読み込むように次回がんばります。
応援お願いしますm(_ _)m
↓ ↓ ↓ ↓

にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村
にほんブログ村

やっと・・・ [FX エクセル]

[FXシステムトレード] ブログ村キーワード
バアルです。

データを抽出できるようになりました。

指定の曜日、指定の時間のみのデータを抽出です。

夏時間・冬時間の区別も自動でやってくれます。

こんな具合です。

2012-08-21T21:17:24-e36ad.jpg



プログラムは次の通り

Dim lastrow(100) As Long
Dim Youbi As Integer
Dim ZikanB As Integer
Dim ZikanE As Integer
Dim HunB As Integer
Dim HunE As Integer
Dim Hajimari As Single
Dim Owari As Single
Dim HajimariV As Single
Dim OwariV As Single
Sub main()

Workbooks("1min_2008(kakou)").Activate
lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
Youbi = InputBox("何曜日を抽出しますか?(月=1:火=2:水=3:木=4:金=5")
ZikanB = InputBox("何時からを抽出しますか?(0〜23)")
HunB = InputBox("何分から抽出しますか?(0〜59)")
ZikanE = InputBox("何時までを抽出しますか?(0〜23)")
HunE = InputBox("何分まで抽出しますか?(0〜59)")

Hajimari = 0.000694445 * 60 * ZikanB + 0.000694445 * HunB
Owari = 0.000694445 * 60 * ZikanE + 0.000694445 * HunE

For i = 1 To lastrow(0)
Cells(i, 7) = WorksheetFunction.Weekday(Cells(i, 1), 1)
Cells(i, 8) = Month(Cells(i, 1))
Next

For i = 1 To lastrow(0)
If Cells(i, 8) > 1 And Cells(i, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If
If i > 31833 Then
i = i
End If
If Cells(i, 7) <> Youbi Or Cells(i, 2) < HajimariV Or Cells(i, 2) > OwariV Then

For ii = i To lastrow(0)
If Cells(ii, 8) > 1 And Cells(ii, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If
If ii > 35000 Then
ii = ii
End If
If Cells(ii, 7) = Youbi And Cells(ii, 2) > HajimariV And Cells(ii, 2) < OwariV Then
Workbooks("1min_2008(kakou)").Activate
Range("A" & i, "H" & ii - 2).Select
Selection.Clear
i = ii + 1
Exit For
End If
Next
End If
Next

'lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
For k = 1 To lastrow(0)
If Cells(k, 1) = "" Then
For kk = k To lastrow(0)
If Cells(kk, 1) <> "" Then
Exit For
End If
Next
Rows(k & ":" & kk - 1).Select
Selection.Delete shift:=xlUp
lastrow(0) = lastrow(0) - (kk - k)
If k > lastrow(0) Then
Exit For
End If
'IL = IL + 1
End If
Next k

lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
For i = 1 To lastrow(0)
If Cells(i, 8) > 1 And Cells(i, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If
If i > 189 Then
i = i
End If
If Cells(i, 7) <> Youbi Or Cells(i, 2) > OwariV Then

For ii = i To lastrow(0)
Workbooks("1min_2008(kakou)").Activate
Range("A" & i, "H" & lastrow(0)).Select
Selection.Clear
i = ii + 1
'Exit For
GoTo Syuuryou
Next
End If
Next
Syuuryou:

End Sub



うーん、まったく美しくない。しかし急ぐので、これはこれで

使っていきます。

次は指定のブックを開いて、横に並べるかなぁ。。。

それは手作業でやってもいいかもしれないかな。

応援お願いしますm(_ _)m
↓ ↓ ↓ ↓

にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村

夏時間と冬時間 [FX エクセル]

ども!バアルです。

If Cells(i, 8) > 1 And Cells(i, 8) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.00069444 * 60)
OwariV = Owari - (0.00069444 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If

夏時間と冬時間でオープニングが違うという厄介な問題を

解決するためのマクロを考え中です。

上の文でだいたいOKなんですが、まだ細かいバグがあります。

でも、時間の問題です。もう少しで前に進みます。
応援お願いしますm(_ _)m
↓ ↓ ↓ ↓

にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村

タグ:マクロ FX

特定の時間帯を抜き出す [FX エクセル]

[FXシステムトレード] ブログ村キーワード ども!Baalです。

今回はForexciteの1分足データを特定の曜日、特定の時間帯のみ

抜き出すというところまで進めてみます。



まず、1分足データをインポートします。

2012-08-18T22:27:52-d3005.jpg

特定の時間帯は時間の表記のままだとプログラムのとき厄介なので

数値に変換します。

B列を選択して、右クリック⇛セルの書式設定⇛数値(小数点以下の

桁数を9ぐらいに設定)を選択してOK

するとこのように小数表記に変わります。 suuti.jpg

これで次のプログラムでデータを抽出できるようになりました。

Dim lastrow(100) As Long
Dim Youbi As Integer
Dim ZikanB As Integer
Dim ZikanE As Integer
Dim HunB As Integer
Dim HunE As Integer
Dim Hajimari As Single
Dim Owari As Single
Sub main()

Workbooks("1min_2008(kakou)").Activate
lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
Youbi = InputBox("何曜日を抽出しますか?(月=1:火=2:水=3:木=4:金=5")
ZikanB = InputBox("何時からを抽出しますか?(0〜23)")
HunB = InputBox("何分から抽出しますか?(0〜59)")
ZikanE = InputBox("何時までを抽出しますか?(0〜23)")
HunE = InputBox("何分まで抽出しますか?(0〜59)")

Hajimari = 0.00069444 * 60 * ZikanB + 0.00069444 * HunB
Owari = 0.00069444 * 60 * ZikanE + 0.00069444 * HunE

For i = 1 To lastrow(0)
Cells(i, 7) = WorksheetFunction.Weekday(Cells(i, 1), 1)
'Cells(i, 8) = Hour(Cells(i, 2))
Next

For i = 1 To lastrow(0)
If Cells(i, 7) <> Youbi Or Cells(i, 2) < Hajimari Or Cells(i, 2) > Owari Then

For ii = i To lastrow(0)
If Cells(ii, 7) = Youbi And Cells(ii, 2) > Hajimari And Cells(ii, 2) <= Owari Then
Workbooks("1min_2008(kakou)").Activate
Range("A" & i, "H" & ii - 1).Select
Selection.Clear
i = ii
Exit For
End If
Next
End If
Next

'lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
For k = 1 To lastrow(0)
If Cells(k, 1) = "" Then
For kk = k To lastrow(0)
If Cells(kk, 1) <> "" Then
Exit For
End If
Next
Rows(k & ":" & kk - 1).Select
Selection.Delete shift:=xlUp
lastrow(0) = lastrow(0) - (kk - k)
If k > lastrow(0) Then
Exit For
End If
'IL = IL + 1
End If
Next k

lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
For i = 1 To lastrow(0)
If Cells(i, 7) <> Youbi Or Cells(i, 2) < Hajimari Or Cells(i, 2) >= Owari Then

For ii = i To lastrow(0)
Workbooks("1min_2008(kakou)").Activate
Range("A" & i, "H" & lastrow(0)).Select
Selection.Clear
i = ii
'Exit For
GoTo Syuuryou
Next
End If
Next
Syuuryou:

End Sub



やってることはだいたいわかりますかね?

面倒なので説明は端折りますw

もし質問する気がおありのかたがいらしたらどうぞ。

次回は他の通貨データも横に並べて同じように処理をかけていきます。


今日の1位はどこかしら
↓ ↓ ↓ ↓

にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村

GMOクリック証券
GMOクリック証券

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。