半分の区画を閉鎖する。

 

そこで、保留中の注文を 削除し、ストップが移動平均と同期していることを前提に別の注文を再適用するループを組み込むことに成功した。ロットは、エントリーからストップまでのピップ距離に基づいて計算されます。これだけでなく、プロフィットターゲットがストップ距離の比率(extern int - something I choose 1-2-3 R;R etc.)と連動して動くようにしたので、これも同様に動きます。

だから、私のコードや他のビットをプリントアウトすることに関して、以前の記事へのコメントありがとうございます


とにかく、私は価格が2倍率の利益目標の50%に達したときに、ポジションの半分を決済しようとしている。私はジャーナルに印刷する必要があることを知っていて、今それを書いているのですが、どなたか私がとにかくこれを間違って書いていないか教えていただけないでしょうか?もしかしたら、"OrderLots()/2 "に関してでしょうか?

"btp"=特定の価格を返します。

         if(Bid == btp-OrderOpenPrice()/2+OrderOpenPrice()){
         
         for(int q=OrdersTotal()-1; q >=0; q--)
         {
            if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true){
              Print(" Stop loss value for the order is ", OrderStopLoss());
              Print("lots for the order ",OrderLots());
            }
            else if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==false){
              Print(" OrderSelect failed error code is ",GetLastError());
            }
            if(OrderMagicNumber()==MagicNumber)
             if(OrderSymbol()==Symbol())
              if(OrderType()==OP_BUYSTOP)
               
               CloseHalfLong = OrderClose(OrderTicket(),OrderLots()/2,Bid,3,CLR_NONE);
         
            if(CloseHalfLong!=TRUE)Print("LastError = ", GetLastError());
         }
         }
 
DomGilberto:

そこで、保留中の注文を削除し、ストップが移動平均と同期していることを前提に別の注文を再適用するループを組み込むことに成功した。ロットは、エントリーからストップまでのピップ距離に基づいて計算されます。これだけでなく、プロフィットターゲットがストップ距離の比率(extern int - something I choose 1-2-3 R;R etc.)と連動して動くようにしたので、これも同様に動きます。

というわけで、私のコードのプリントアウトやその他の小物に関して、以前の記事へのコメントありがとうございました!


とにかく、私は価格が2倍率の利益目標の50%に達したときに、ポジションの半分を決済しようとしている...。私はジャーナルに印刷する必要があることを知っていて、今それを書いているのですが、どなたか私がとにかくこれを間違って書いていないか教えていただけないでしょうか?もしかしたら、"OrderLots()/2 "に関してでしょうか?

"btp"=特定の価格を返します。

OrderLots()/2がすべての状況において有効であるとは思いません。

ここを見てください: https://www.mql5.com/en/forum/143966

 
RaptorUK: OrderLots()/2がすべての状況において有効であるとは思いません。
その通りです。私のCloseOrder() を参照してください。
 

RaptorUK - あなたのリンクで私がWHRoederを見ている場所がわからないが、ありがとうございます。

それは私だけですか、それともオープンポジションのロットを閉じるためのプロセスは少し直感に反しています...それは私がやりたいことであることを考えると、不必要に複雑に思える...

男、私は私が1日のために十分にこのコードを見ていると思う - 私はOrderCloseでMarkerInfo()を使用する方法を理解していない...それは不必要に複雑に思われる。

 
DomGilberto:

RaptorUK - あなたのリンクで私がWHRoederを見ている場所がわからないが、ありがとうございます。

それは私だけですか、それともオープンポジションのロットを閉じるためのプロセスは少し直感に反しています...それは私がやりたいことであることを考えると、不必要に複雑に思える...

男、私は私が1日のために十分にこのコードを見ていると思う -私はOrderCloseでMarkerInfo()を使用する方法を理解していない...それは不必要に複雑に思われる。

あなたの注文のポジションサイズが0.3ロットであり、あなたが0.15ロットになる半分を閉じたい場合、あなたのブローカーのMODE_LOTSTEPが0.1であれば、0.15は無効なロットサイズです... あなたが使用する前にOrderClose()あなたが閉じようとしているポジションサイズを検証しています。
 
ああ、手に入れました!RaptorUKさんありがとうございます。最後の質問ですが、ロットサイズを検証するというのは、If文を使って比較するということでしょうか?
 
DomGilberto: リンク先のWHRoederのどこを見ているのかよくわかりませんが、ありがとうございます。
そのページの一番上のリンク
 
あぁ、ゲッチャ!壮大なコーディングですね... :o!

いつかそのレベルのプログラミングを保持できるようになりたいものです...。(もう少し忍耐があれば...冗談です :P)


ありがとう、WHRoeder!
 
DomGilberto:
ああ、わかったよ!RaptorUKさん、ありがとうございます。最後の質問ですが、ロットサイズを検証するというのは、If文を使って比較するということでしょうか?

いいえ、私はそれがMODE_LOTSTEPとMODE_MINLOTに準拠するようにそれを調整すると言っています ... その後、あなたが投稿したリンクを見れば、それは有効です(検証済み) ....

mlots = MathFloor(mlots / lotstep) * lotstep; 

mlotsが0.15 mlots (MODE_MINLOT) が0.1、lotstep (MODE_LOTSTEP) が0.1だと仮定すると、コードは次のようになるでしょう。

mlots = MathFloor(0.15 / 0.1) * 0.1; 
//  MathFloor(0.15 / 0.1) ==  MathFloor( 1.5 )  gives 1

//  mlots = 1 * 0.1;  

というわけで、mlotsは0.15から0.1に調整され、有効になります。

 
ああ、その通りです。ありがとうございます。
理由: