> kamyuさま
え?エラーが出てないんですか。
そんなことあるんですね、いや、びっくり
私は、
if ポジションが存在する?
if OrderStopLoss() 0だったりする?
え?そんな危険なポジション、さっさとクローズだってばっ!!
としています。
これだけだと、エントリーとクローズを延々と繰り返す可能性もあるので、
最後のエントリーから一定時間 (5分) はエントリーしない制御も入れてます。
ついでに、ポジションのホールド時間が長いものは勝率が良くなかったので、
OrderOpenTime()から1時間経ったら、クローズさせています。
もっと言うと、デフォルトは、オーダー時にSLとTPとスリッページを入れてOrderSend()し、
FXCMやPepperstoneのような業者のときだけ、
SL=0, TP=0, Slippage=0 で注文し、後から渋々OrderModifyするようにしています。
ここまでやってあっても、FXCMやPepperstoneのような業者では、
注文した > サーバ落ちた or 回線切れた > SLが入ってない! > 復旧するまで大出血
なんてことが皆無とは言えませんが、これ以上はプログラムでどうにもできないので放置です。
(そんなケース、人間が別の業者で逆向きのエントリーを入れて、
業者をまたいだ両建て状態にして損失を拡大さないようにしておき、
回線やサーバが復旧したところで両方のポジションをクローズ、とするしかないと思うので。)
兎にも角にも、今回被害(?)に遭われた方には深くお見舞い申し上げます。
> KEISHO_MANさま
私も基本的にはそれぐらいしかやっていません。
1. ポジションありますか?
2. ないよー。
2-1. エントリーの曜日、時刻ですか?
2-1-1. エントリーのシグナル出てます?
2-1-1-1. シグナル出てるなら、ロット計算しますわ。
2-1-1-2. じゃ、そのロット数でエントリーしときますわ。
3. あるよー。
3-1. ちゃんとSL入ってる?
3-1-1. 入ってなかったら速攻でクローズね。
3-2. クローズのシグナル出てます?
3-2-1. 出てるようならクローズしますわ。
3-3. トレーリングストップの設定ある?
3-3-1. あるならトレーリングしときますわ。
ロット数の計算はエントリーシグナルの直後でやるだけで良く、
いきなり0.01ロットになっていても、ロジックは把握しているから、
前回負けてビビりモードになってるとか、金曜だからとか、
すぐ見当はつくので、他の箇所でロット計算はやっていません。
後は、ポジションの有無を確認するのも減らして、
1分間隔でしかやっていません。
ポジションが消えた直後、最大1分間はエントリーが遅れる可能性はありますが、
そんなタイミングにぶち当たるのも稀と思って割り切っています。
(特に5 digit業者では、1分間に何十回もTickが更新され、
そのたびにforループでOrderSelect()するのがゲンナリだったので。)
インジケータのbar shiftが1だったら、シグナルのチェックも、
1分間隔にできそうに思うんですが、その変更は相当性能に影響すると思うので、
そっちはオリジナルのままにしてあります。
他の言語で経験のある人にとっては、すぐ思いつくことばかりですが、
私のスキルではこれが高速化の限界でした ><;
PFやDDの部分のチューニングは、ここや他のサイトで勉強する日々です
