ゆのみん
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日