ブログジャンル

にほんブログ村 為替ブログ 100通貨単位・1000通貨単位へ
にほんブログ村の為替ブログランキングに参加中です。応援よろしくお願いいたします♪

検索フォーム


カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


リンク


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

マネーパートナーズFXnanoでリピート注文に挑戦!その5

こんばんわ♪

いきなりですが、「(任意動作)現在の建て玉の注文番号を取得する」のコードは使い勝手が悪かったので、内容を変更してお届けします。後ほど理由を紹介します。

新タイトルは「(任意動作)決済注文の注文番号を取得する」です。
(コード名もMP_Repeat_order4からMP_ListOrderに変更しました)


そして、最後にリピート注文VBAのダウンロード先も公開しよう・・・と思っていたのですが、
かなりの長文になりましたのでこちらは延期したいと思います。
(次回こそ必ず書きます。本当に申し訳ないです。)



では、早速行ってみましょう!

このコードを実行すると、な、な、ナント!
決済注文の注文番号を取得し、自動で注文表に番号を入れることができちゃうんです♪
これで毎日ちまちま注文番号を管理する時間から解放されます!

エラーですぐ止まるヒゲVBAに不満を感じていた方や過去のトラップ注文も管理したい方などにオススメな一品!!


このVBAをいまなら先着1万名さまにプレゼント!(キャー、ふとっぱら~)
さあ、いますぐお電話を・・・。



無駄にテンション上げてみましたw
まずはコードの流れからご紹介します。

0.注文表を作成し、コードを実行。
1.マネパの取引画面(ホーム)
2.注文照会(検索)
3.検索結果をエクセルシートに出力
4.注文表と注文照会データを比較
5.注文番号を入力
6.IEを閉じる

という感じになります。
いつものことながら、マネパにはログインしておき、会員専用サイトのページを開いておいてくださいね。
あっ、ちなみにこのコードはリピート注文VBAとは別にしておりますので単体で動きます。


最初の書きましたが、内容を変更した理由。それは、、、「欠陥品」だったからですw

以前のコードはいま現在保有しているポジションの決済分の注文番号しか取得できませんでした。
これでは待機している予約注文の注文番号が取得されないので、分かりづらく、また未発注の注文があると勘違いをしてしまう可能性がありました。
(建て玉にないから未発注と思い注文。約定して同じ注文があると気づく。)

なので、1回目は状態が「有効」なもの。
2回目は状態が「待機中」なものと2回に分けて検索し、調べるようにしました。
これで「現在の建て玉の注文分」と「予約している待機中の注文分」の注文番号が取得できるようになります。


前のコードを公開していたら苦情の嵐だったでしょうね^^;



このコードを使う上での注意点は、

「検索はトラップ注文のみ調べるようにしてください!」

ということです。
なぜかというと、リピートする必要のない注文を出してしまう可能性があるからです。
(まあ、注文表にない注文が発注されることはないですけどね。)

なので、各自でコード内の「検索条件」というところを変更してからご利用ください。
20110909-VBA



デフォルトでは私が取引する設定となっておりますw
私の場合、取引は豪ドルのみでショートトラップを仕掛けておりますので、

注文日(2011年01月01日)、通貨ペア(全て)、売買(売)

にて検索してます。

たまにロングトラップを追加して両建てにすることがありますが、その場合は売買(全て)に変更して検索します。


魚屋さんが以前していたロングポジションは豪ドル、ショートトラップはユーロなどの2通貨を取り扱う場合などは特に注意してくださいね。



次回、「本当に最後!?マネーパートナーズFXnanoでリピート注文に挑戦!」を行います。


それでは、いつものように追記にコードを紹介してお別れしたいと思います。
さようなら~♪


-------------------- ここから --------------------
'2011/09/09 「(任意動作)決済注文の注文番号を取得する」

'5番目のコード
'注文表に注文番号が入っていないときなど、自動で番号を入れることができます。
'使用上の注意をお読みの上、検索項目を各自設定してからコードを実行してください。
'処理の流れは4番目のコードなどと同じになります。
'注文照会の検索データと注文表の全データを比較し、注文内容が一致したものに注文番号を入れていきます。
'比較用データ(通過ペア・注文区分・売買・注文レート)は4項目使ってます。
'マネパの取引画面(ホーム)→注文照会(検索)→検索結果をエクセルシートに出力→注文表と注文照会データを比較→注文番号を入力→IEを閉じる という流れになります。

'***** 使用上の注意 *****
'まず、注文表にリピート注文の対象となる注文内容を作成しておきます。
'次に注文照会の検索で使う項目をこのコード内(検索条件)にて変更してください。
'私の場合、取引は豪ドルのみでトラップはショートを仕掛けていますので、
'注文日(建て玉の一番古い注文日)、通貨ペア(AUD/JPY)、売買(売)にて検索してます。
'両建てなら、売買(全て)で検索すればオッケーです。


Sub MP_ListOrder()


fStop = False

Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True

objIE.Navigate "https://trade2.moneypartners.co.jp/fxcwebpresen/MainFrame.do"
Call IE_Wait2(objIE)


Dim objFRAME As FramesCollection
Dim objDOC As HTMLDocument
Dim objFDOC As Object

Set objFRAME = objIE.document.frames


Dim objTAG As Object
Dim strURL As String
Dim kaisu As Integer
Dim x As Integer, y As Integer, n As Integer, z As Integer
Dim objTableItem As Object
Dim strTAGNAME As String


Debug.Print "建て玉の注文番号(決済分)を取得中です。"

For kaisu = 0 To 1
'***** 注文照会のページを開き、検索条件を入力する。 *****

Set objDOC = objFRAME("main").document
Do Until InStr(objDOC.URL, "ListOrder") > 0

Set objFDOC = objIE.document.frames("menu").document
For n = 0 To objFDOC.links.Length - 1
If objFDOC.links(n).href = "javascript:changeMenu(2)" Then
objFDOC.links(n).Click
Call IE_Wait2(objIE)
Exit For
End If
Next n

For n = 0 To objFDOC.links.Length - 1
If InStr(objFDOC.links(n).href, "ListOrder.do") > 0 Then
objFDOC.links(n).Click
Call IE_Wait2(objIE)
Exit For
End If
Next n

Loop


'***** 検索条件 *****

'注文日(前)
objIE.document.frames("main").document.all("fromDate").Value = "20110101"

'注文日(後)
'objIE.Document.frames("main").Document.all("toDate").Value = "20110101"

'通貨ペア(全て"","SPOT_USD/JPY","SPOT_AUD/JPY","SPOT_NZD/JPY","SPOT_GBP/JPY","SPOT_EUR/JPY","SPOT_CHF/JPY","SPOT_CAD/JPY","SPOT_ZAR/JPY")
'objIE.document.frames("main").document.all("productId").Value = ""

'注文区分(新規"false",決済"true")
objIE.document.frames("main").document.all("isCloseOrder").Value = "true"

'売買(売"SELL",買"BUY")
'objIE.document.frames("main").document.all("buySellType").Value = "SELL"

'状態(全て"",有効"WORKING",待機中"WAITING",約定済"FILLED",取消済"CANCELLED",執行中"EXECUTING",取消処理中"CANCELLING")
If kaisu < 1 Then
objIE.document.frames("main").document.all("orderStatusType").Value = "WORKING"
Else
objIE.document.frames("main").document.all("orderStatusType").Value = "WAITING"
End If

'期限(最新"false",過去履歴"true")
'objIE.document.frames("main").document.all("isHistorical").Value = "false"

'***** 検索条件 *****


'検索ボタン
objIE.document.frames("main").document.all("doSearch").Click
Call IE_Wait2(objIE)

'***** 注文照会のページを開き、検索条件を入力する。 *****



'***** 注文照会の検索結果をエクセルに書き出していく(本日の必要証拠金と同じコードです) *****

Dim strTEXT As String

'検索結果の件数を取得する
strTEXT = objDOC.body.innerText
z = Application.RoundUp(Mid(strTEXT, InStr(strTEXT, "全 ") + 2, InStr(strTEXT, " 件") - (InStr(strTEXT, "全 ") + 2)) / 30, 0)


For z = 1 To z

For Each objTAG In objIE.document.frames("main").document.body.all
If objTAG.tagName = "TABLE" Then
If InStr(objTAG.innerText, "注文番号") > 0 _
And InStr(objTAG.innerHTML, "TABLE") = 0 Then
Worksheets("注文照会").Activate
Worksheets("注文照会").Range("2:300").ClearContents
y = 0
For Each objTableItem In objTAG.all
strTAGNAME = objTableItem.tagName
If strTAGNAME = "TR" Then
y = y + 1
x = 1
End If
If strTAGNAME = "TD" Or strTAGNAME = "TH" Then
Cells(y, x) = objTableItem.innerText
x = x + 1
End If
Next
End If
End If
Next

Worksheets("注文照会").Range("1:1").Delete

'***** 注文照会の検索結果をエクセルに書き出す(本日の必要証拠金と同じコードです) *****



'***** 検索データと全データを比較し、注文内容が一致したら注文番号を入れる。 *****

Dim i As Integer, ii As Integer
Worksheets("注文表").Range("Q11:Q310").ClearContents

For i = 1 To Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Count
For ii = 11 To 310
If Worksheets("注文表").Cells(ii, "C") & " " & Worksheets("注文表").Cells(ii, "D") & " " & Worksheets("注文表").Cells(ii, "E") & " " & Worksheets("注文表").Cells(ii, "H") _
= Worksheets("注文照会").Cells(i, "C") & " " & Worksheets("注文照会").Cells(i, "D") & Worksheets("注文照会").Cells(i, "E") & " " & Worksheets("注文照会").Cells(i, "I") Then
'Worksheets("注文表").Cells(ii, "J").Value = Worksheets("注文照会").Cells(i, "A").Value
Exit For
End If
If Worksheets("注文表").Cells(ii, "C") & " " & Worksheets("注文表").Cells(ii, "K") & " " & Worksheets("注文表").Cells(ii, "L") & " " & Worksheets("注文表").Cells(ii, "O") _
= Worksheets("注文照会").Cells(i, "C") & " " & Worksheets("注文照会").Cells(i, "D") & Worksheets("注文照会").Cells(i, "E") & " " & Worksheets("注文照会").Cells(i, "I") Then
Worksheets("注文表").Cells(ii, "R").Value = Worksheets("注文照会").Cells(i, "A").Value
Exit For
End If
Next ii
Next i

'***** 検索データと全データを比較し、注文内容が一致したら注文番号を入れる。 *****



'***** 検索データが30件以上ある場合は、次のページへ進む。 *****

Set objFDOC = objIE.document.frames("main").document
For n = 0 To objFDOC.links.Length - 1
If objFDOC.links(n).outerText = "next" Then
objFDOC.links(n).Click
Call IE_Wait2(objIE)
Exit For
End If
Next n

'***** 検索データが30件以上ある場合は、次のページへ進む。 *****


Next z

Next kaisu


objIE.Quit
Set objIE = Nothing

Worksheets("注文照会").Activate



End Sub
-------------------- ここまで --------------------




スポンサーサイト

コメント

焦らしますね~w

んもう、いけず!

全自動VBA楽しみに毎日通ってます~

自分で試作してる方は、ウィンドウ無限増殖を許容できれば回せるのですが…IEの終了ができないという、取引と関係ないところでつまづいてますw
2011-09-10 12:10 菜摘 #LjveDjGg URL [ 編集 ]

こんにちは
少し入院する事になりました。
復帰後また寄らせて頂きますね^^;
2011-09-11 16:07 ねもどん #- URL [ 編集 ]

Re: 焦らしますね~w

本日、VBAを公開いたしました♪

ウィンドウの制御ですか・・・。
チャレンジしたことないですね^^;

閉じるウィンドウを指定するのが難しそう。
ウィンドウのIDとかタイトルとかでやればいいのかな・・・。

頑張ってください!!


菜摘さんが最近記事にしている「くるくるワイドおべんきょうノート」
あれ、めっちゃいいですね!

図解の見やすさ、デザインなどとっても凄いです!
自分は絵心が全くないので絶対無理です。
(原色は5色あれば十分。パステルカラーとか使えませんw)

注文表(VBA)のデザインどう思います?
なんとかなりませんかね?^^;
2011-09-12 14:45 ヒゲ☆坊主 #mQop/nM. URL [ 編集 ]

Re: タイトルなし

こんにちは!

体調のほうは大丈夫なのでしょうか?
心配です(><)


復帰後はまた是非遊びに来てください。
2011-09-12 14:48 ヒゲ☆坊主 #mQop/nM. URL [ 編集 ]

コメントの投稿



管理者にだけ表示を許可する


トラックバック

http://fxbouz2011.blog67.fc2.com/tb.php/75-01257671

 | ホーム | 


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。