SSブログ
オリジナルEA・インジケーター制作
FX自動売買ソフト製作のMagic EA Maker
FX エクセル ブログトップ
前の10件 | -

もう少し [FX エクセル]

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

やはり歯抜けデータの問題は不可避だったので、対応中

以下は歯抜けを検出し、行を挿入するプロセス。

同じ時刻の価格を比べる必要があるため。

Sub InsertCell()
ZikanB = InputBox("【冬時間指定】何時からを抽出しますか?(0〜23)")
HunB = InputBox("【冬時間指定】何分から抽出しますか?(0〜59)")
ZikanE = InputBox("【冬時間指定】何時までを抽出しますか?(0〜23)")
HunE = InputBox("【冬時間指定】何分まで抽出しますか?(0〜59)")

For t = 0 To 10 Step 9
lastrow(0) = Cells(1, 1 + t).End(xlDown).Row 'MA40最終行
Cells(1, 1 + t).Activate
ic = 0
Do Until ActiveCell.Value = "" 'For ic = 1 To lastrow(0)
ic = ic + 1
Cells(ic, 1 + t).Activate
HSup = Minute(Cells(ic, 2 + t))
HSdown = Minute(Cells(ic + 1, 2 + t))
HScalc = HSdown - HSup
HidukeUp = Day(Cells(ic, 1 + t))
HidukeDown = Day(Cells(ic + 1, 1 + t))

HJ = Hour(Cells(ic, 2 + t))
OJ = Hour(Cells(ic, 2 + t))
HH = Minute(Cells(ic, 2 + t))
OH = Minute(Cells(ic, 2 + t))

If HidukeDown <> HidukeUp Then '日付が違っていたら
If HSdown <> HunB Then 'HHがスタートになっているかチェック
InsSuu = HSdown - HunB
For icc = 1 To InsSuu
Range(Cells(ic + 1, 1 + t), Cells(ic + 1, 8 + t)).Insert
'lastrow(0) = lastrow(0) + 1
ic = ic + 1
Next
End If
If HSup <> HunE And Cells(ic + 1, 1) <> "" Then 'OHが終わりになっているかチェック
InsSuu = HunE - HSup
For icc = 1 To InsSuu
Range(Cells(ic + 1, 1 + t), Cells(ic + 1, 8 + t)).Insert
'lastrow(0) = lastrow(0) + 1
ic = ic + 1
Next
End If
End If

Select Case HScalc
Case Is > 1 '1分毎か否か
If HidukeDown = HidukeUp Then '日付が同じか
InsSuu = HSdown - HSup - 1
For icc = 1 To InsSuu
Range(Cells(ic + 1, 1 + t), Cells(ic + 1, 8 + t)).Insert
'lastrow(0) = lastrow(0) + 1
ic = ic + 1
Next
End If
Case Is < 0 '時間が異なる場合
InsSuu = 60 - Abs(HSdown - HSup - 1)
For icc = 1 To InsSuu
Range(Cells(ic + 1, 1 + t), Cells(ic + 1, 8 + t)).Insert
'lastrow(0) = lastrow(0) + 1
ic = ic + 1
Next
End Select

Loop 'Next
Next t

End Sub



応援お願いします。m(__)m
↓ ↓ ↓ ↓
にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村

歯抜けデータを埋める [FX エクセル]

お久しぶりです。バアルです。

なかなか時間がない上に、問題が出てしまっているので

なかなか進めていません(;´Д`)


問題が出てしまった、というより問題は前からあって

対策ができていないだけなんですが。

2012-10-04T03:37:52-70adf.jpg

画像のように連続しないデータがあるので、連続していなければ

一行差し込むということをやっています。(画像はすでに行を

差し込んだ状態。元々は空白がない)

もうひとつ別の通貨をすぐ横に並べなければいけないので、

どうしたものかなと。

今考えているのは、

左右の通貨の日付と時刻を見比べる
↓ ↓ ↓ ↓
同じでなければどちらが早いか比べる
↓ ↓ ↓ ↓
遅い方の通貨に一行加える

これをループしようかと。

これでいけるかな?

データ抽出 [FX エクセル]

[システムトレード] ブログ村キーワード お久しぶりです(^O^)/

バアルです。

データ抽出をすることができました。

歯抜けの問題は、今回抽出した分に関しては問題なかったので

スルーします^^;

おそらく条件指定してInsertとかを使えばいけると思いますが、

使うところに該当箇所がないならまあいいかということでw

Insert関数にかんしてはここが参考になりそうでした。

朝あまりに早かったり、週末の引け間際とかでマイナー通貨は

「できない」ということがあるので、データが歯抜けなんですね。

そういうところは使わないのが吉だと思います。


で、以下ができあがったもの。冗長ですw


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
Dim f1 As String
Dim f2 As String
Dim wb As Workbook
Sub main()

Set WBK = ThisWorkbook ' 自ブック
ownBookName = WBK.Name ' 自ブック名
ChDir "C:\Users\wak\Desktop\書庫\AutoForexite\HistoricalData" '\AUDJPY\1min"
f1 = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt", , "1回目")
If f1 = "False" Then
MsgBox "キャンセル"
Exit Sub
End If
ChDir "C:\Users\wak\Desktop\書庫\AutoForexite\HistoricalData" '\AUDJPY\1min"
f2 = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt", , "2回目")
If f2 = "False" Then
MsgBox "キャンセル"
Exit Sub
End If

MsgBox f1 & " を開きます"
'Workbooks.OpenText Filename:=f1, DataType:=xlDelimited, comma:=True
Dim buf As String, n As Long
Open f1 For Input As #1
Do Until EOF(1)

Line Input #1, buf
n = n + 1
Cells(n, 1) = buf
Dim i As Long, tmp As Variant
tmp = Split(Cells(n, 1), ",")

Cells(n, 1) = tmp(0)
Cells(n, 2) = tmp(1)
Cells(n, 3) = tmp(2)
Cells(n, 4) = tmp(3)
Cells(n, 5) = tmp(4)
Cells(n, 6) = tmp(5)

Loop
Close #1

'Set wb = Workbooks.Add
MsgBox f2 & " を開きます"
'Workbooks.OpenText Filename:=f2, DataType:=xlDelimited, comma:=True
Open f2 For Input As #1
n = 0
Do Until EOF(1)

Line Input #1, buf
n = n + 1
Cells(n, 10) = buf
tmp = Split(Cells(n, 10), ",")

Cells(n, 10) = tmp(0)
Cells(n, 11) = tmp(1)
Cells(n, 12) = tmp(2)
Cells(n, 13) = tmp(3)
Cells(n, 14) = tmp(4)
Cells(n, 15) = tmp(5)

Loop
Close #1
'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 t = 0 To 10 Step 9
lastrow(0) = Cells(1, 1 + t).End(xlDown).Row 'MA40最終行
For i = 1 To lastrow(0)
Cells(i, 7 + t) = WorksheetFunction.Weekday(Cells(i, 1 + t), 1)
Cells(i, 8 + t) = Month(Cells(i, 1 + t))
Next

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

If Cells(i, 7 + t) <> Youbi Or Cells(i, 2 + t) < HajimariV Or Cells(i, 2 + t) > OwariV Then

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

If Cells(ii, 7 + t) = Youbi And Cells(ii, 2 + t) > HajimariV And Cells(ii, 2 + t) < OwariV Then
'Workbooks(BookName(G)).Activate
Range(Cells(i, 1 + t), Cells(ii - 2, 8 + t)).Select
Selection.Clear
i = ii + 1
Exit For
End If
Next
End If
Next

For k = 1 To lastrow(0)
If Cells(k, 1 + t) = "" Then
For kk = k To lastrow(0)
If Cells(kk, 1 + t) <> "" Then
Exit For
End If
Next
Range(Cells(k, 1 + t), Cells(kk - 1, 9 + t)).Select
'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 + t).End(xlDown).Row 'MA40最終行
For i = 1 To lastrow(0)
If Cells(i, 8 + t) > 2 And Cells(i, 8 + t) < 11 Then '夏時間対応
HajimariV = Hajimari - (0.000694445 * 60)
OwariV = Owari - (0.000694445 * 60)
Else: HajimariV = Hajimari
OwariV = Owari
End If

If Cells(i, 7 + t) <> Youbi Or Cells(i, 2 + t) > OwariV Then

Range(Cells(i, 1 + t), Cells(lastrow(0), 8 + t)).Select
Selection.Clear

If t > 0 Then
GoTo Syuuryou
End If
Exit For
End If
Next
Next t
Syuuryou:

End Sub




次回はグラフに反映して可視化します(^O^)
応援お願いします。m(__)m
↓ ↓ ↓ ↓
にほんブログ村 為替ブログ FX システムトレード派へ
にほんブログ村

2通貨目追加 [FX エクセル]

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

2通貨目の追加をするプログラムを作りました。

こんな感じです。

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
Dim f1 As String
Dim f2 As String
Dim wb As Workbook
Sub main()

Set WBK = ThisWorkbook ' 自ブック
ownBookName = WBK.Name ' 自ブック名
ChDir "C:\Users\wak\Desktop\書庫\AutoForexite\HistoricalData" '\AUDJPY\1min"
f1 = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt", , "1回目")
If f1 = "False" Then
MsgBox "キャンセル"
Exit Sub
End If
ChDir "C:\Users\wak\Desktop\書庫\AutoForexite\HistoricalData" '\AUDJPY\1min"
f2 = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt", , "2回目")
If f2 = "False" Then
MsgBox "キャンセル"
Exit Sub
End If

MsgBox f1 & " を開きます"
'Workbooks.OpenText Filename:=f1, DataType:=xlDelimited, comma:=True
Dim buf As String, n As Long
Open f1 For Input As #1
Do Until EOF(1)

Line Input #1, buf
n = n + 1
Cells(n, 1) = buf
Dim i As Long, tmp As Variant
tmp = Split(Cells(n, 1), ",")

Cells(n, 1) = tmp(0)
Cells(n, 2) = tmp(1)
Cells(n, 3) = tmp(2)
Cells(n, 4) = tmp(3)
Cells(n, 5) = tmp(4)
Cells(n, 6) = tmp(5)

Loop
Close #1

'Set wb = Workbooks.Add
MsgBox f2 & " を開きます"
'Workbooks.OpenText Filename:=f2, DataType:=xlDelimited, comma:=True
Open f2 For Input As #1
n = 0
Do Until EOF(1)

Line Input #1, buf
n = n + 1
Cells(n, 10) = buf
tmp = Split(Cells(n, 10), ",")

Cells(n, 10) = tmp(0)
Cells(n, 11) = tmp(1)
Cells(n, 12) = tmp(2)
Cells(n, 13) = tmp(3)
Cells(n, 14) = tmp(4)
Cells(n, 15) = tmp(5)

Loop
Close #1
'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) > 2 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) > 2 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) > 2 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


Split関数というのを使って、カンマ区切りのテキストファイルを

ひとつひとつのセルに放り込みます。

面倒ですが、これが一番いいだろうと聞きましたのでそれで

作りました。

で、うまく行ったんですが、新たに問題が浮上。

なんと、歯抜けデータが存在します(;・∀・)

抜けデータがある時間帯が朝早いようなので、

おそらく、取引がなかったのであろうと推察します。

約定がないから値がつかない。

これ、どうするかなぁ。

使う箇所のみ抽出して、そこに歯抜けがあったら上の行を

コピーするようにしますかね。時間がそろわないと

比べられないですよね。

加工する前に処理をすると重くなりそうだしな。ふむ。。。



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

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

ワークブックを開く [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 システムトレード派へ
にほんブログ村

抽出できた [FX エクセル]

[FXシステムトレード] ブログ村キーワード
前回のつづき

Dim lastrow(100) As Long
Dim Youbi As Integer
Dim Zikan As Integer
Sub main()

Workbooks("1min_2008(kakou)").Activate
lastrow(0) = Cells(1, 1).End(xlDown).Row 'MA40最終行
Youbi = InputBox("何曜日を抽出しますか?(月=1:火=2:水=3:木=4:金=5")
Zikan = InputBox("何時を抽出しますか?(0〜23)")
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, 8) <> Zikan Then

For ii = i To lastrow(0)
If Cells(ii, 7) = Youbi And Cells(ii, 8) = Zikan 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, 8) <> Zikan 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 Owari
Next
End If
Next
Owari:

End Sub


これで曜日と時間を指定してデータを抜き出すことができました。

あまり美しくないプログラムですがご容赦を(^_^;)

後は夏時間と冬時間の区別、分指定の機能を盛り込んで行こうと

思います。

タグ:FX マクロ
前の10件 | - FX エクセル ブログトップ
GMOクリック証券
GMOクリック証券

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