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

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

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

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

ゆのみん

VBAでのFREPLACEORDER関数について

VBAにてOCOもどきの処理を作成してます。
FNEWORDERで発注、利食い決済設定をし、
ロスカットをFREPLACEORDERで処理しようと思ってます。

発注及び利食い設定まではうまく動作するのですが、
ロスカット処理のFREPLACEORDERがエラーになってうまく動作しません。
建玉単価から30円逆行で成行のロスカットとしてます。

Dim hID1 As String

hID1 = Format(Now, "yyyymmddHHMMSS") & "Close1"

'Range("$BX$4").Value:現値、Range("BM4").Value:建玉単価、Range("DG4").Value:注文状態
If Range("$BX$4").Value <= Range("BM4").Value -30 And Range("DG4").Value = "発注中" Then
'Cells(4, 109).Value:注文番号
Call FREPLACEORDER(Cells(4, 109).Value, 0, 0, 1, 1, 1, "", "password", hID1)
End If

引数設定等の単純なミスかもしれませんが、
ご教示頂けると助かります。

2020年10月31日

大野 了

ゆのみんさん、こんばんは!!

エラー はどのようなエラーが発生しますでしょうかー?

引数を見る限り大丈夫そうなのですが、
もしかすると、執行条件等を変えたことによるエラーかもしれません。

2020年10月31日

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

ゆのみん

大野さん。回答ありがとうございます。
エラー内容を保存してないので、月曜日に再度確認してみます。

利食い設定では下記コードで指値で発注かけてます。

'Range("DG4").Value:注文状態
If PosType = "買" And Range("DG4").Value <> "発注中" Then
hID1 = Format(Now, "yyyymmddHHMMSS") & "BuyTP1"
'決済指値売り 1枚
'Range("BQ4").Value:建玉番号、Range("BR4").Value:枝番、Range("BM4").Value:建玉単価
Call FNEWORDER("N225mini", 0, 2, Range("BQ4").Value, Range("BR4").Value, 1, 1, Range("BM4").Value + 30, 1, 1, 1, "1", "password", hID1, "1", "RSS_Buy_TP1")
End If
End If

2020年10月31日

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

ゆのみん

再度のEnd IFは誤記です。

2020年10月31日

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

大野 了

ゆのみんさん、こんにちはー

なるほどー
指値から、最大指値なんですねー
それならうまく行ってもよさそうですねー

ちなみに、今相場が閉まってるので完全に同じ状況ではないですが、
指値の利確注文に対して、ゆのみんさんのロジックで
最大指値への注文変更はできましたー

エラーがわかると
もう少し何かわかるかもしれませんので、ご連絡頂けますと幸いです!!

2020年11月01日

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

ゆのみん

訂正(FREPLACEORDER)処理だけを切り出して確認しました。

指値から最大指値への訂正はOKでした。
他の処理部分に不具合があったのかもしれません。
お騒がせしました。

あと、ついでにその他の訂正処理について確認しました。
結果は以下の通りで、
指値→指値(価格訂正)、指値→最大指値以外はNGになりました。

私のミスかそれとも、RSSの仕様なのでしょうか?


●指値から最大指値への訂正はOK
'Cells(4, 109).Value:注文番号
Call FREPLACEORDER(Cells(4, 109).Value, 0, 0, 1, 1, 1, "", "password", hID1)


●指値から指値価格の訂正はOK
'Cells(4, 109).Value:注文番号
Call FREPLACEORDER(Cells(4, 109).Value, 1, 23600, 1, 1, 1, "", "password", hID1)


●指値から逆指値の訂正はNG
'Cells(4, 109).Value:注文番号
Call FREPLACEORDER(Cells(4, 109).Value, 8, 22500, 1, 0, 0, "", "password", hID1)

 49:この注文内容に訂正することはできません。入力項目をご確認ください。:1701


●指値から引成に訂正はNG
'Cells(4, 109).Value:注文番号
Call FREPLACEORDER(Cells(4, 109).Value, 5, 0, 1, 1, 1, "", "password", hID1)

 49:この注文内容に訂正することはできません。入力項目をご確認ください。:1701

●引成から指値への訂正はNG
'Cells(4, 109).Value:注文番号
Call FREPLACEORDER(Cells(4, 109).Value, 1, 23600, 1, 1, 1, "", "password", hID1)

 訂正可能な注文がありません。


2020年11月02日

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

大野 了

ゆのみんさん、こんにちはー!!
うまくいきましたかーよかったです!!


>私のミスかそれとも、RSSの仕様なのでしょうか?
こちらはRSSの仕様の様です。

すべてのパターンは押さえていないので
すべてのパターンについては回答ができないのですが、

指値 → 最大指値
指値 → 指値(価格修正)
のような指値の金額が変わるような変更は可能ですが、

指値 → 逆指値
のような、決済方法自体が変わるような変更はできないため
一度、注文をキャンセルして、再注文させてあげる必要があります!!

2020年11月02日

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

ゆのみん

大野さん
回答ありがとうございます。

>指値 → 逆指値
>のような、決済方法自体が変わるような変更はできないため
>一度、注文をキャンセルして、再注文させてあげる必要があります!!

やはりそうなのですね。
マニュアルには書かれてないので検証しながら組むしかないですね。

2020年11月02日

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

大野 了

ゆのみんさん

ここら辺は、自分もトライ&エラーでやってきました・・・

そうですね。
変更できないパターンが明記されてるとありがたいですねー

2020年11月02日

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

ゆのみん

こんばんは。
追加検証結果です。

逆指値から指値への訂正もNGでした。

安全のため先にロスカット設定を逆指値注文を出しておいて、
利食い条件になったらFREPLACEORDERで指値に訂正しようかと思いましたが、
この場合は一旦ORDERCANCELして、
再度FNEWORDERするしかないようですね。

●逆指値から指値への訂正
決済建玉がありません。

2020年11月02日

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

大野 了

ゆのみんさん、情報ありがとうございます!!

自分も似たようなロジックですが、
確かに安全性を考えると、逆指値を出しておきたいところなんですよねー

自分はORDERCANCELを毎回するのが面倒なので、
現在値を関し続けて、損切の価格に達したら成行で決済掛けてます。

安全性には欠けちゃいますが・・・

2020年11月02日

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

ぼん

指値→成行 もNGでした
こういうのは、取説に書いておいてもらいたいです

2021年05月07日

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

すべての投稿を表示する

to_top
to_top

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

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

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

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

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

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

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