岡三オンライン証券(代理記入)
当社に寄せられた質問「保有情報取得関数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日
おおた
小笠原聖史様
早速にご回答有難うございました。
遅ればせながら、下記、関数をコピーしたものを送付します。よろしくおねがいします。
1
FOPPOSITION("銘柄コード",A3,"2")
162060019
162060019
***END***
2:01:30 PM
FOPPOSITION("銘柄名",B3,"2")
N225ミニ17/06
N225ミニ17/06
***END***
FOPPOSITION("市場",C3,"2")
大証
大証
***END***
18:40:30
FOPPOSITION("商品種別",D3,"2")
N225ミニ
N225ミニ
***END***
19885
FOPPOSITION("売買",E3,"2")
買
売
***END***
FOPPOSITION("建玉日",F3,"2")
-
-
***END***
FOPPOSITION("建玉単価",G3,"2")
19,850
19,845
***END***
FOPPOSITION("数量",H3,"2")
1
1
***END***
FOPPOSITION("決済注文中数量",I3,"2")
0
0
***END***
FOPPOSITION("建玉番号",J3,"2")
-
-
***END***
FOPPOSITION("建玉枝番号",K3,"2")
-
-
***END***
FOPPOSITION("評価損益額",L3,"2")
0
***END***
FOPPOSITION("評価損益率",M3,"2")
0.15%
-0.18%
***END***
FOPPOSITION("SQ日",N3,"2")
2017/6/9
2017/6/9
***END***
FOPPOSITION("建玉日時",O3,"2")
-
-
***END***
6:45:23 PM
FOPPOSITION("手数料",P3,"2")
40
40
***END***
おおた
2017年06月01日
おおた
小笠原聖史様
セル関数でも行ってみたいと思います。
決済のfneworderの中の14引数の発注IDは,単に、now()、だけを記入すれば良いのですか?
おおた
2017年06月01日
小笠原聖史
おおた様
建玉番号がでないのは、第三引数で「2」を選択されていることが原因です。「0」以外では建玉番号が出ないようです。
0:指定なし、1:建日・建単価毎、2:注文毎、3:建単価毎、4:売買毎
おおた様はすべての関数の第三引数を「2」に設定されていらっしゃいますが、これを「0」にすると正常に動作するようになると思います。もし問題なければ、第三引数を「0」にしてみてください。
あと、関数で発注する場合の14引数ですが=NOW()だけを記入すると注文がどんどん出続けます。行ごとにユニークな数字を設定していただくのがいいと思います。
2017年06月02日
おおた
小笠原聖史様
本当に、有り難うございます。
市場がひらいたら、0に設定して直ぐにやってみます。
1、関数で発注する場合の14引数を=NOW()だけを記入するのではなく、行ごとにユニークな数字を設定する必要とのことですが、具体的にどう記入するか、ー例を挙げていただけますか?
宣しくお願いします。
おおた
2017年06月02日
太田孝
小笠原聖史様
0に設定したら、FOPPOS1T10Nの項目は,正常に表示されました。
但し、決済注文中数量は,0を表示しています。(新規の売1枚,買1枚入れています)
このためか、-1000円の損切り,1000円の利確の条件になっても,"決済建玉がありません"のエラ-表示がでて決済されません。
何にか、もう少しのところにきている様ですが、ご教示下さい。
宣しくお願いします。
おおた
2017年06月02日
小笠原聖史
おおた様
決済注文数量は、当該建玉の決済注文を発注していなければ、「0」で問題ないと思います。
「決済建玉がありません」は、「建玉番号」の指定がうまくいっていないかもしれません。
以下の関数に対して、下のような建玉番号がエクセルのセルに表示されておりますでしょうか?
FOPPOSITION("建玉番号",J3,"0")
20170601E01N92163409
2017年06月03日
太田孝
小笠原聖史様
本当に、有り難うございます。
市場がひらいたら、0に設定して直ぐにやってみます。
1、関数で発注する場合の14引数を=NOW()だけを記入するのではなく、行ごとにユニークな数字を設定する必要とのことですが、具体的にどう記入するか、ー例を挙げていただけますか?
宣しくお願いします。
おおた
2017年06月03日
太田孝
小笠原聖史様
ご返事有難うごさいます。
1、建玉番号は,下記の通り正常に表示されている様です。
#N/A
20170602E01N92239575
20170602E01N92239570
***END***
2、建玉番号は、うまくいっているのであれば、発注IDが疑われます。
Sub 決済発注判定 ()の中の
発注ⅠD=Now()
発注IDが、うまく採番されないのではないでしょうか?
3、次の疑問にもお教え下さい。
“関数で発注する場合の14引数を=NOW()だけを記入するのではなく、行ごとにユニークな数字を設定する必要"とのことですが、具体的にどう記入するか、ー例を挙げていただけますか?
宣しくお願いします。
***先程送付したものは,以前のものでした。失礼しました。
おおた
2017年06月03日
小笠原聖史
太田様
建玉番号と発注IDのsubプロシージャ間での受け渡しがうまくいていないのかもしれませんので、変数自体を使わないよう一連の記述を修正したものを明日、月曜日に試して、うまくいけばこのスレッドに張り付けますので、少々お待ちくださいませ。
あと関数で発注する場合の発注IDの設定ですが、「1」とか「2」とか単純に数字をセルに書き込むだけでOKです。
ただ、エクセルが開いている間は、一度発注に使った発注IDは2回目以降は使えませんので、同じ行に設定した関数を複数回使用する前提の仕組みであれば、一工夫必要になりますが、まずは、「1」とか「2」とかで発注が成功するか、お試しいただけますでしょうか。
2017年06月04日
小笠原聖史
おおた様
おはようございます。
以下の内容でうまく動作いたしましたので、お試しいただけますでしょうか。
<変更点>
①発注IDは建玉IDを使用することにいたしました。
②建玉IDのサブプロシージャ間での受け渡しを行わないように、プログラムを変更いたしました。
これで、建玉が認識されないエラーを回避できるとよいのですが、、
Sub 保有情報取得関数OPPOS1TI0Nに表示される評価損益額を使ったOCO注文()
If Cells(1, 15) <> "" Then
MsgBox "決済発注判定を終了します。"
Exit Sub
End If
Call 決済発注判定
反復時刻 = TimeValue(Now) + TimeValue("00:00:10")
Application.OnTime 反復時刻, "保有情報取得関数OPPOS1TI0Nに表示される評価損益額を使ったOCO注文"
Cells(1, 16) = TimeValue(Now)
End Sub
Sub 決済発注判定()
Dim i As Integer
Dim 建玉NO As String
Dim 発注ID As String
For i = 3 To 25
If Cells(i, 12) = "***END***" Then
Exit For
End If
If Cells(i, 12) <> "" And Cells(i, 12) * 1 <= -4000 Or Cells(i, 12) >= 4000 Then
If Cells(i, 5) = "買" Then
Rs = FNEWORDER("N225mini", "201706", 2, Cells(i, 10), "1", 1, 0, 0, 1, 0, 1, "", "password", Cells(i, 10), 1, "trade10", "", "")
Else
Rb = FNEWORDER("N225mini", "201706", 2, Cells(i, 10), "1", 3, 0, 0, 1, 0, 1, "", "password", Cells(i, 10), 1, "trade10", "", "")
End If
End If
Next
End Sub
2017年06月05日