半分の区画を閉鎖する。 - ページ 2

 

MathFloorとそこにあるリンクを読み込む必要があります - これはすべて私にとって新しいことで、理解するのに苦労しています。明日にでもやってみます。

ありがとうございます。

 
         if(Bid == btp-OrderOpenPrice()/2+OrderOpenPrice()){ // need to double check this.
               
               
         double  minLot  = MarketInfo(Symbol(), MODE_MINLOT),
                 lotStep = MarketInfo(Symbol(), MODE_LOTSTEP),
                 Lots    = OrderLots(),
                 half_close = MathFloor(Lots/2/lotStep)*lotStep;
                 
                    
               
         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)
               if (half_close > minLot)

                
               CloseHalfLong = OrderClose(OrderTicket(),half_close,Bid,3,CLR_NONE);
               if(CloseHalfLong!=TRUE)Print("LastError = ", GetLastError());
         }
         } 
どなたか、私がどこを間違えているのか、少し教えていただけませんか?今、これを見始めたところです。私がメモを書いた行は別として、どなたか正しい方向を示していただけませんか?
 
何かアイデアはありますか?
 
DomGilberto:
何かアイデアはありますか?
OrderLots() の半分を閉じたいのですが、注文を選択する前に OrderLots() を使用するにはどうすればよいですか?
 
おっと、そうでしたね(笑)。でも何も変わってない?

何か見落としているのでしょうか?
 
DomGilberto:
おっと、そうでしたね(笑)。しかし、それは何も変えていないのですか?

何か見落としているのでしょうか?

OrderSelect()が失敗しているにもかかわらず、なぜ次のようにしているのですか?

if(OrderMagicNumber()==MagicNumber)
             if(OrderSymbol()==Symbol())
              if(OrderType()==OP_BUYSTOP)
               if (half_close > minLot)

保留中の注文を 閉じないのですか、エラー報告は何を教えてくれたのですか?

 

同じトレードを2回選択しようとしているのでは?

これは単に "else "ではないのですか?

else if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==false){

一度目は失敗しても、二度目は成功するような場合、矛盾したメッセージを受け取ることがあります。

 
エラーは出ていないのですが・・・。

ちょっとイライラしてきました...。OrderModify error 1 "が出続けていますが、これは後で調べます。 それ以外は何もありません!
            if(OrderSelect(NewOrder,SELECT_BY_TICKET,MODE_TRADES)==true){
              Print(" Stop loss value for the order is ", OrderStopLoss());
              Print("lots for the order ",OrderLots());
            }
            else if(OrderSelect(NewOrder,SELECT_BY_TICKET,MODE_TRADES)==false){
              Print(" OrderSelect failed error code is ",GetLastError());
            }
            
            double  minLot = MarketInfo(Symbol(), MODE_MINLOT),
            lotStep     = MarketInfo(Symbol(), MODE_LOTSTEP),
            sizeCurr    = OrderLots(),
            sizeClose   = MathFloor(sizeCurr/lotStep)*lotStep/2,
            sizeRem     = sizeCurr - sizeClose;
           //if (sizeClose < minLot)                                     return(false);
            //if (sizeRem   < minLot){ sizeClose = sizeCurr;
                 
           if(OrderTakeProfit()-OrderOpenPrice()/2+OrderOpenPrice() == Bid) // Does this make sense? I am wanting this "if" statement to be true, if price (bid) reaches the price in this comparison statement?

             if(OpenOrdersThisPair(Symbol())==1)
               
               CloseHalfLong = OrderClose(OrderTicket(),sizeClose,Bid,3,CLR_NONE);
                
                if(CloseHalfLong!=TRUE)Print("Last Error = ", GetLastError());
         
         } 
MathFloorは答えを整数に丸めるだけという印象があるのですが?だから私はMathFloorが正しいかどうかわからないのですか?私が使っているブローカーでは、ロットステップに0.01が使われます...。(フォワードテストではIBFXが最初なのでナノサイズです)
 
DomGilberto:
エラーは出ていないのですが...。

私は少しイライラしています。OrderModify error 1 "がずっと表示されていますが、これは後で調べます。それ以外は、何もありません! MathFloorは答えを整数に丸めるだけという印象があるのですが?だから、私はMathFloorが正しいかどうかわからないのですか?私が使っているブローカーは、ロットステップに0.01を使いますが・・・。(フォワードテストではIBFXで開始 - なのでナノサイズ)

私は動作するコードを提供しましたが、なぜそれを使用しないのですか? なぜ、何が起こっているかを見るために変数を表示しないのですか? 投稿したコードにはOrderModify()がありませんが、それがどう関係していますか? すでに言ったように、OrderSelect()が失敗した場合、なぜそれに依存する取引機能を 呼び出すのですか?

コーディングをやめて、自分のコードを見て、一行ずつ読んで、実際に何をしているかを理解し、もしそれがあなたの意図したものでないなら、修正する必要がある問題があるのです。

 

MathFloor は、小数点以下を切り捨てて、最も近い全体の数にしますか?

FirstTarget は "OrderClose()" 内のカスタム・パラメータとして 意味があるか - "sizeClose" が正しかったと仮定して?(引用されたコードを参照してください)

あなたのコードは役に立ちませんでした - すみません。

カスタム変数を印刷することができますか?もしそうなら、ジャーナルに表示されないので、私のやり方が間違っているのでしょう。

OrderModifyは関係ないですね、おっしゃる通りです。

           double FirstTarget = OrderTakeProfit()-OrderOpenPrice()/2+OrderOpenPrice();
              CloseHalfLong = OrderClose(OrderTicket(),sizeClose,FirstTarget,3,CLR_NONE);