質問掲示板
岡三RSS
集いの広場

アップロードされたファイルおよび投稿内容についての注意事項 別窓

複数の単語で検索する方法 別窓

【国内株式、先物・オプション】岡三RSS質問箱

岡三オンライン証券(代理記入)

当社に寄せられた質問「保有情報取得関数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日

ログインしてコメントを投稿する

すべての投稿を表示する

to_top
to_top

アップロードされたファイルにはウイルスチェックを行っておりますが、未知のウイルス等に感染されている場合がありますので、アップロードされたファイルのご利用はご注意ください。
また、取引パスワード等の重要な情報を投稿内容に含めないようご注意ください。
なお、アップロードされたファイルの利用や投稿内容によって、投稿者自身や他の利用者が被った損害に対して当社は一切責任を負いません。

また、セキュリティの関係上、一部コマンド等を含む内容を送信するとエラー画面が表示され、投稿ができない場合がございます。何卒ご了承ください。

岡三RSS集いの広場では、複数の単語による検索が可能です。

例)関数 and サンプル
→AND検索となり、「関数」および「サンプル」を含む検索結果が表示されます。

例)関数 or サンプル
→OR検索となり、「関数」または「サンプル」を含む検索結果が表示されます。

例)関数 not サンプル
→NOT検索となり、「関数」を含むが「サンプル」は含まない検索結果が表示されます。

※and、or、notの前後は半角スペースで区切ってください。
※単語の間を半角スペースで区切るだけだと、OR検索となります。