Yarım lotları kapatmak.

 

Bu yüzden, bekleyen emri silen ve durdurmanın hareketli ortalama ile senkronize edilmesi temelinde bir başkasını yeniden uygulayan bir döngü eklemeyi başardım. Partiler, girişin durma noktasına olan pip mesafesine göre hesaplanacaktır. Sadece bu değil, kar hedefinin durma mesafesi ile bir oran olarak nasıl çalıştığını (extern int - 1-2-3 R;R vb. seçtiğim bir şey) çözmeyi başardım - bu da hareket ediyor.

Bu nedenle, kodumu ve diğer küçük ayrıntıları yazdırmaya ilişkin önceki gönderilere yaptığınız yorumlar için teşekkür ederiz!


Her neyse - fiyat 2x oranlı kar hedefimin %50'sine ulaştığında pozisyonun yarısını kapatmaya çalışıyorum... Bir şeyleri Journal'a yazdırmam gerektiğini biliyorum ve şu anda bunu yazıyorum, ancak herhangi biri söyleyebilir mi? yine de bunu yanlış yazıyorsam? Belki "OrderLots()/2" ile ilgili olarak?

"btp" = belirli bir fiyat döndürür.

         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 :

Bu yüzden, bekleyen emri silen ve durdurmanın hareketli ortalama ile senkronize edilmesi temelinde bir başkasını yeniden uygulayan bir döngü eklemeyi başardım. Partiler, girişin durma noktasına olan pip mesafesine göre hesaplanacaktır. Sadece bu değil, kar hedefinin durma mesafesi ile bir oran olarak nasıl çalıştığını (extern int - 1-2-3 R;R vb. seçtiğim bir şey) çözmeyi başardım - bu da hareket ediyor.

Bu nedenle, kodumu ve diğer küçük ayrıntıları yazdırmaya ilişkin önceki gönderilere yaptığınız yorumlar için teşekkür ederiz!


Her neyse - fiyat 2x oranlı kar hedefimin %50'sine ulaştığında pozisyonun yarısını kapatmaya çalışıyorum... Bir şeyleri Journal'a yazdırmam gerektiğini biliyorum ve şu anda bunu yazıyorum, ancak herhangi biri söyleyebilir mi? yine de bunu yanlış yazıyorsam? Belki "OrderLots()/2" ile ilgili olarak?

"btp" = belirli bir fiyat döndürür.

OrderLots()/2'nin her durumda keseceğini sanmıyorum (punto için kusura bakmayın), kapatmak istediğiniz pozisyon boyutunu MarketInfo() MODE_LOTSTEP ve MODE_MINLOT'a göre doğrulamanız gerektiğine oldukça eminim.

Buraya bakın: https://www.mql5.com/en/forum/143966

 
RaptorUK : OrderLots()/2'nin her durumda keseceğini sanmıyorum (kelime oyunu için kusura bakmayın), kapatmak istediğiniz pozisyon boyutunu MarketInfo() MODE_LOTSTEP ve MODE_MINLOT'a göre doğrulamanız gerektiğine eminim.
Aynen öyle. CloseOrder'ımı görün()
 

Teşekkürler RaptorUK - Bağlantınızda WHRoeder'ı nerede aradığımdan emin değilim, ama teşekkürler.

Sadece ben miyim, yoksa açık bir pozisyonda kura kapatma süreci biraz ters sezgisel mi... Yapmak istediğim şey düşünüldüğünde gereksiz yere karmaşık görünüyor...

Dostum, sanırım bu koda bir gün yetecek kadar baktım - MarkerInfo()'u OrderClose ile nasıl kullandığımı anlamıyorum... gereksiz yere karmaşık görünüyor.

 
DomGilberto :

Teşekkürler RaptorUK - Bağlantınızda WHRoeder'ı nerede aradığımdan emin değilim, ama teşekkürler.

Sadece ben miyim, yoksa açık bir pozisyonda kura kapatma süreci biraz ters sezgisel mi... Yapmak istediğim şey düşünüldüğünde gereksiz yere karmaşık görünüyor...

Dostum, sanırım bu koda bir gün yetecek kadar baktım - MarkerInfo()'u OrderClose ile nasıl kullandığımı anlamıyorum... gereksiz yere karmaşık görünüyor.

Sipariş pozisyon boyutunuz 0,3 lot ise ve bunun 0,15 lot olan yarısını kapatmak istiyorsanız, Broker'ınızın MODE_LOTSTEP değeri 0,1 ise 0,15 geçersiz bir lot boyutudur. . . bu yüzden OrderClose()'u kullanmadan önce kapatmak üzere olduğunuz pozisyon büyüklüğünü doğrulayın.
 
Anladım! Teşekkürler RaptorUK! Son soru, parti büyüklüğünü doğrula derken If deyimlerini kullanarak karşılaştır mı diyorsun?
 
DomGilberto : Bağlantınızda WHRoeder'ı nerede aradığımdan emin değilim, ama teşekkürler.
O sayfadaki en üstteki bağlantı
 
Ah kahpe! Bu epik bir kodlama... :o!

Umarım bir gün bu programlama seviyesini koruyabilirim... (sizin adına biraz daha sabırla - şaka yapıyorum: P)


Teşekkürler WHRoeder!
 
DomGilberto :
Anladım! Teşekkürler RaptorUK! Son soru, parti boyutunu doğrula derken If deyimlerini kullanarak karşılaştır mı diyorsunuz?

Hayır, MODE_LOTSTEP ve MODE_MINLOT ile uyumlu olacak şekilde ayarlayın diyorum. . . o zaman geçerli (doğrulandı), gönderdiğim bağlantıya bakarsanız. . .

mlots = MathFloor (mlots / lotstep) * lotstep; 

Mlots'un 0.15 mlot (MODE_MINLOT) 0.1 olduğunu ve lotstep'in (MODE_LOTSTEP) 0.1 olduğunu varsayın, böylece kod bunu yapacaktır.

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

//  mlots = 1 * 0.1;  

böylece mlotlar 0,15'ten 0,1'e ayarlanır ve geçerli olur.

 
Ah nokta! Bunu temizlediğiniz için teşekkürler - anladım!