岡三オンライン証券(代理記入)
当社に寄せられた質問「保有情報取得関数OPPOS1TI0Nに表示される評価損益額を使ったOCO注文について」
225先物です。複数の建玉の利益確定あるいは損切り(OCO)を行うため,
保有情報取得関数OPPOS1TI0Nで表示される評価損益額を使い、シートモジュール上に下記コードを書きました。
しかし、コンパイルエラー(プロシージャの宣言が、イベント又はプロシージャの定義と一致しません)と表示されました。修正すべき箇所をご教授いただければ、有難く存じます。宣しくお願い致します。
(シートモジュール)
Private Sub Worksheet_Change
Dim i as integer
For i =3 to 25
if Cells(i,9)<=-5000 then “評価損益額はCells(3.9)から記入
if cells(i, 1)=“買" then “建玉の売買の別は,Cells(3,1)から記入
Call 決済売
Else
Call 決済買
End if
End if
if Cells(i,9)>=5000 then
if cells(i, 1)=“買" then
Call 決済売
Else
Call 決済買
End if
End if
Next
End Sub
*損切り、利益確定ともそれぞれ-5000円 、5000円としています。
**決済売,買とも標準モジュールに於て、
sub 決済売 ()
kessaiuri=fneworder(成行・決裁売)
End Sub
をそれぞれ作成しています。
***3~25行まで保有の注文までの処理としています。
以上
2017年05月25日
小笠原聖史
以下の記述でi=3から25まで、手元のPCで正常に動作しております。お試しいただけますでしょうか。(的外れな回答でしたら申し訳ありません。)
Private Sub Worksheet_Change()
Dim i As Integer
For i = 3 To 25
If Cells(i, 9) <= -5000 Then '評価損益額はCells(3.9)から記入
If Cells(i, 1) = "買" Then '建玉の売買の別は,Cells(3,1)から記入
Call 決済売
Else
Call 決済買
End If
End If
If Cells(i, 9) >= 5000 Then
If Cells(i, 1) = "買" Then
Call 決済売
Else
Call 決済買
End If
End If
Next
End Sub
'損切り、利益確定ともそれぞれ-5000円 、5000円としています。
'済売,買とも標準モジュールに於て、
Sub 決済売()
'kessaiuri=fneworder(成行・決裁売)
End Sub
Sub 決済買()
'kessaiuri=fneworder(成行・決裁売)
End Sub
'をそれぞれ作成しています。
'***3~25行まで保有の注文までの処理としています。
以上
2017年05月26日
おおた
小笠原聖史 様
早速のご教示感謝いたします。
ご指示通りもう一度、マクロを動かしました。しかし,“プロシーシ"ャの宣言が、イベント又はプロシージャの定義と一致していません。“の表示がでました。
どうも,周辺あたりのcall決済売等が、間違えている可能性があります。厚かましいお願いでございますが,下記をチェック願えれば、幸甚でございます。
FOPPOS1T10Nは、sheet6(決済)で開いています。sheet6(決済)のシートモジュールに.Pnvate sub worksheet changeを書ぃています。sub 決済売()は次の様に、標準モジュールに書いています。
sub 決済売()
Dim kessainri as string
sheets(“決済“).select
cells(1、2)=Cells(1,6) “建玉番号
kessaiuri=Fneworder()
cells(1,4)=Cells(1,4)+ 1
Fneworderの引数は次の通り
第1引数 “N225mini"
第2引数 201706
第3引数 “Cells(1,2)"
第4引数 “1"
第5引数 l
第6引数 0
第7引数 “0"
第8引数 1
第9引数 1
第10引数 1
第11引数 1
第12引数 “パスワード"
第13引数 “Cells(1,4)“
2017年05月26日
おおた
小笠原聖史 様
早速のご教示感謝いたします。
ご指示通りもう一度、マクロを動かしました。しかし,“プロシーシ"ャの宣言が、イベント又はプロシージャの定義と一致していません。“の表示がでました。
どうも,周辺あたりのcall決済売等が、間違えている可能性があります。厚かましいお願いでございますが,下記をチェック願えれば、幸甚でございます。
FOPPOS1T10Nは、sheet6(決済)で開いています。sheet6(決済)のシートモジュールに.Pnvate sub worksheet changeを書ぃています。sub 決済売()は次の様に、標準モジュールに書いています。
sub 決済売()
Dim kessainri as string
sheets(“決済“).select
cells(1、2)=Cells(1,6) “建玉番号
kessaiuri=Fneworder()
cells(1,4)=Cells(1,4)+ 1
Fneworderの引数は次の通り
第1引数 “N225mini"
第2引数 201706
第3引数 “Cells(1,2)"
第4引数 “1"
第5引数 l
第6引数 0
第7引数 “0"
第8引数 1
第9引数 1
第10引数 1
第11引数 1
第12引数 “パスワード"
第13引数 “Cells(1,4)“
2017年05月26日
小笠原聖史
おおた様
引数は少し違うところがありました。
以下を実行いただきますと発注できると思いますので、お試しください。
※発注確認のポップアップありにしております。
Sub 新規買い()
NB = FNEWORDER("N225mini", "201706", 1, "", "", 3, 0, 0, 1, 0, 1, "", "Password", 1, 1, "trade1", "", "")
End Sub
<ご参考>
第1引数 "N225mini"
第2引数 201706
第3引数 1
第4引数 ""
第5引数 ""
第6引数 3
第7引数 0
第8引数 0
第9引数 1
第10引数 0
第11引数 1
第12引数 ””
第13引数 ”password”
第14引数 1
第15引数 1
第16引数 ”trade1”
成功しない場合には、以下参照設定の問題をご確認ください。
<岡三RSSのQAから引用しております。>
参照設定がされていないので、Excel®を起動し、ツール(T)>マクロ>Visual Basic Editorを選択し起動してください。そして、Visual Basic Editorの【ツール】-【参照設定】で、岡三RSSにチェックします。
2017年05月26日
おおた
第8引数 1
第9引数 1
第10引数 1
第11引数 1
第12引数 “パスワード"
第13引数 “Ceー
2017年05月27日
おおた
小笠原聖史 様
早速のご回答お礼申し上げます。
新規買いの発注マクロを詳細にお教え頂き有難うございます。FOPPOS10Nの評価損益額にてCOCを行いたく考えていますが,主題のシートモジュールに記したPrivate sub worksheet changeの中の“call 決済売“
で呼び出される“sub 決済売() “の建玉番号を記入するところが良く分かりません。
できましたら,下記の**を追加したPrivate Sub Worksheet_Change()及びsub 決済売() をチェック願えれば、幸甚でございます。
なお、FOPPOS1T10Nは、sheet6(決済)で開いています。
(前回の問い合せ時のコードからは修正しています)
Private Sub Worksheet_Change()
Dim i As Integer
For i = 3 To 25
If Cells(i, 9) <= -5000 Then '評価損益額はCells(3.9)から記入
**Cells(1,8)=Cells(i,6) ′建玉番号です。
If Cells(i, 1) = "買" Then '建玉の売買の別は,Cells(3,1)から記入
Call 決済売
Else
Call 決済買
End If
End If
**6列にFOPPOS1T10Nの建玉番号を表示。Cells(i,6)は、建玉番号を示 します。利益確定の部分も同様に考え、ここでは省略しています。
sub 決済売() “標準モジュールに記入
Dim kessaiuri as string
sheets(“決済“).select
kessaiuri=Fneworder()
cells(1,4)=Cells(1,4)+ 1 “発注ⅠD
Fneworderの引数は次の通り
第1引数 “N225mini"
第2引数 201706
第3引数 2
第4引数 “Cells(1,8)"
第5引数 “1"
第6引数 1
第7引数 0
第8引数 “0“
第9引数 1
第10引数 1
第11引数 1
第12引数 l
第13引数 “password“
第14引数 Cells(1,4)
第15引数 “1"
第16引数 ““
第17引数
第18引数
以上,宣しくお願いします。
おおた
2017年05月27日
小笠原聖史
おおた様
承知いたしました。
foppositionで建玉番号を取得し、fneworderの第4引数にセットして決済注文を発注するマクロを作って、5/29月曜日に、私の口座で建玉を作ってテストし動作確認をして結果をご報告いたします。あいにく今手持ちの建玉がありませんので、、、少々お待ちください。
2017年05月27日
小笠原聖史
おおた様
お待たせして申し訳ありませんでした。
以下、手元のPCで動作確認済みです。
(i,6)は建玉番号
(i,10)は発注ID
です。発注IDは、全注文でユニークになるように設定してくださいますようお願いいたします。
建玉IDと発注IDの二つの変数はstring型にするとうまくいきました。
一度お試しいただけますでしょうか。
Sub 決済発注()
Dim i As Integer
Dim 建玉NO As String
Dim 発注ID As String
For i = 3 To 25
If Cells(i, 9) <= -5000 Then
建玉NO = Cells(i, 6)
発注ID = Cells(i, 10)
If Cells(i, 1) = "買" Then
Call 決済売(建玉NO, 発注ID)
Else
Call 決済買(建玉NO, 発注ID)
End If
End If
Next
End Sub
Sub 決済売(建玉NO As String, 発注ID As String)
Rs = FNEWORDER("N225mini", "201706", 2, 建玉NO, "1", 1, 0, 0, 1, 0, 1, "", "password", 発注ID, 1, "trade10", "", "")
End Sub
Sub 決済買(建玉NO As String, 発注ID As String)
Rb = FNEWORDER("N225mini", "201706", 2, 建玉NO, "1", 3, 0, 0, 1, 0, 1, "", "Password", 発注ID, 1, "trade10", "", "")
End Sub
2017年05月29日
おおた
小笠原聖史 様
朝一番の丁寧かつ完璧なご回答に対し,お返事遅れまして申し訳ございません。一つ初歩的な質問がございます。
“発注IDは、全注文でユニークになるように設定"しろのことでございますが,新規の発注IDに対し1を加えて、決済の発注IDにする場合,下記のコードで宣しいのでしょうか?
(新規の発注ID発行も売買とも、Cells(1.1)= Cells(1,1)+1とし1を加えていきます)
Sub 決済発注()
Dim i As Integer
Dim 建玉NO As String
Dim 発注ID As String
For i = 3 To 25
If Cells(i, 9) <= -5000 Then
建玉NO = Cells(i, 6)
**発注ID = Cells(i, 10)+1
If Cells(i, 1) = "買" Then
Call 決済売(建玉NO, 発注ID)
Else
Call 決済買(建玉NO, 発注ID)
End If
End If
Next
End Sub
**
発注ID = Cells(i, 10)+1 とし, 1を加えていく。
すいません。お手を煩わします。
宣にお願いします。
おおた
2017年05月29日
おおた
小笠原聖史 様
間違えました。
新規の発注ID発行も売買とも、Cells(1.1)= Cells(1,1)+2としを2加えた偶数とし、決済の発注IDは,新規の発注に1を加えた奇数番号にしないと“全注文でユニークにならないですね。失礼しました。
おおた
2017年05月29日