基本的な動きに関しては特に問題なく動くようなコードは書いているのですが、、、
成行で基本Entryするので、SLTPを同時にセットできず、Entry後にしなきゃいけないっていう流れの中で、とりあえず下記のようにしています。
だいぶ省略しましたが、基本的にはドキュメントにある書き方をしています。
これで動作自体は意外と問題ないのですが、そのSL又はTPの設定値が3秒後の価格ラインとの差によりInvalid Stopsになる場合があります。
こういう場合みなさんならどのように書かれますか?
例えばEURJPYでは54ポイント(私の使ってる口座では)離れるつまり5.4pipsは離れたとこじゃないと注文はできませんが、設定したいのがEntryのpriceから10pips(100ポイント)としたいんです。
もしかすると、一瞬で10pips動いてしまって、そもそもSLだって話にもなるかもしれません。
でも、そこまでいかずに少ししたらTP方面に動いて設定ができるようになるかもしれません。
こういったところをみなさんはどのように考え、どのように設定されているのでしょうか?
わたしの場合は、
①「SYMBOL_TRADE_STOPS_LEVEL」で、逆指値の最小値を取得して
②「POSITION_PRICE_OPEN」ポジションの始値、「SYMBOL_BID」シンボルの現在の売値、「SYMBOL_ASK」シンボルの現在の買値、を取得
SL,TPに設定する(指定された)ポイントと、ポジションタイプに応じて、①②を勘案して設定するようにしています。
//未決済チケットを取得 uint total = PositionsTotal(); ulong position_ticket; string position_symbol; //--- 全ての保有ポジションを取得 for (uint i = 0 ; i < total ; i++) { // ポジションチケット position_ticket = PositionGetTicket(i); position_symbol = PositionGetString(POSITION_SYMBOL);// シンボル //--省略 いろいろ処理する //現在の終値から逆指値注文を配置する場合の最少のインデント int stop_level = (int)SymbolInfoInteger(position_symbol, SYMBOL_TRADE_STOPS_LEVEL); //--省略 いろいろ処理する ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); // ポジションタイプ //--- 現在の価格レートの計算 double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double bid = SymbolInfoDouble(position_symbol, SYMBOL_BID); double ask = SymbolInfoDouble(position_symbol, SYMBOL_ASK); //--省略 ポジションタイプに応じて、MqlTradeRequestを設定 //--- リクエストの送信 }
こんな感じです。
SL/TPが設定されていない未決済ポジションに指定幅のSL/TPを設定するようなEAを作成した時に、上記のようなコードを書きました。(実際はループの中ではリクエストの送信は行っていません)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
基本的な動きに関しては特に問題なく動くようなコードは書いているのですが、、、
成行で基本Entryするので、SLTPを同時にセットできず、Entry後にしなきゃいけないっていう流れの中で、とりあえず下記のようにしています。
だいぶ省略しましたが、基本的にはドキュメントにある書き方をしています。
これで動作自体は意外と問題ないのですが、そのSL又はTPの設定値が3秒後の価格ラインとの差によりInvalid Stopsになる場合があります。
こういう場合みなさんならどのように書かれますか?
例えばEURJPYでは54ポイント(私の使ってる口座では)離れるつまり5.4pipsは離れたとこじゃないと注文はできませんが、設定したいのがEntryのpriceから10pips(100ポイント)としたいんです。
もしかすると、一瞬で10pips動いてしまって、そもそもSLだって話にもなるかもしれません。
でも、そこまでいかずに少ししたらTP方面に動いて設定ができるようになるかもしれません。
こういったところをみなさんはどのように考え、どのように設定されているのでしょうか?