Yarım lotları kapatmak. - sayfa 12

 
DomGilberto :
Ah evet - anladım! Sanırım nasıl yapacağımı biliyorum - şimdi oynamaya geri dönelim :)
 
int start()
   {
   if (IsNewCandle())
      {
      CheckForMaTrade();
       if (UseCandleTrail)AdjustTrail();
      }

   if (OpenOrdersThisPair( Symbol ())> 0 )
      {
       if (UseMoveToBreakEven)MoveToBreakEven();
       if (UseTrailingStop)AdjustTrail();
       if (Use_MA_Trail)MA_Trail();
      CloseHalfOrder(); // If there is an order call this void - loop inside the void - "if(OrderType()!=OP_BUY)continue;"
      }
   }
Işe yarar mı? Oradan her onay işaretini kontrol eder mi? (CloseHalfOrder() )

AŞAĞIDAKİ GÜNCELLEME - işe yarıyor :)
 

Üzgünüm - bir şeyleri denemeden önce 101 soru sormayı bırakmalıyım: P

Evet - bu işe yarıyor. Şimdi, kene gelir gelmez kapandığı yerde çalışmasını sağladım ve teklif> = belirtilen OrderClose fiyatı: D

Doğru yönde güzel büyük adım! Şimdi, fiyatın OrderClose işlevinde belirtilen aynı fiyatı her tekrar ziyaret ettiğinde sürekli olarak yarıları kapatmasını durdurmak için bir kıskaç koymak için :)

(Bu can sıkıcı OrderModify hatası 1'den de kurtuldum!) Hmmm, ilk hedef (1:1) yakın sırasını tamamladıktan sonra BEKLEYİN için doğru mantığı düşünemiyorum... Herhangi bir fikriniz var mı? OrderTicket() numarası aynı... yani öyle olamaz mı? Şimdi o kısma takıldım :) Bu parçayı aldıktan sonra epeyce çatladı :)

Adamım, yardımın için çok minnettarım!

 
DomGilberto :


Adamım, yardımın için çok minnettarım!

Rica ederim, dinleyen ve önce kendilerine yardım etmekten mutluluk duyan insanlara yardım etmekte hiçbir sorunum yok.
 
Inanılmaz 1 2 3 4 5 6 7 8 9 10 11 12

bu ne kadar büyük bir konu

Yarım lotları kapatmak.

umarım bildiğin anda başka birine nasıl yapılacağını açıklayabilirsin

101 soru... Kim hepsini okumak ister ki...

İçin (Bu can sıkıcı OrderModify hatası 1'den de kurtuldum!)

Bu, ticareti zaten sahip olduğu ayarlarla değiştirmeyi denerseniz çoğu zaman olur.

 

Adamım, sen de anladığında çok ödüllendirici! Açıkçası sizin de katkınız sayesinde!

Takıldığım son bit, döngüye açık siparişi o OrderClose() çıkış fiyatında sürekli olarak yarıya indirmeyi bırakmasını söylemek mi? Gerçekten mantığını çözemedim? Kısmen kapanmak için NE ZAMAN ve NE fiyatı ile açık. Sadece bir kez siparişi yarıya indirdiğinde durmasını söylemem gerekiyor?

Sorun şu ki, OrderClose() açık pozisyonda yarısını kapattıktan sonra, "int start", her "OP_BUY" açık olduğunda "CloseHalfOrder()" öğesini çağırdığı için tekrar tekrar çağrılacak. ... Düşüncesi olan var mı?

 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   if(OrderType()==OP_BUY)
      {
      CloseHalfOrder();
      } 
} // ---// <<<<<<<<<<<<< I haven't bothered copying and pasting all of in start() functions. Just showing you how the "CloseHalfOrder" is being called...


//+--------------------------------------------------------------------------------------------------+
//| Close OP_BUY Half lots @ 1:1 Function                                                            |
//+--------------------------------------------------------------------------------------------------+
void CloseHalfOrder()
{   
   
   double minLot=MarketInfo( Symbol (),MODE_MINLOT);
   //Print("The minimum lots are: ",DoubleToStr(minLot,Digits));

   double lotStep=MarketInfo( Symbol (),MODE_LOTSTEP);
   //Print("The Lotstep is: ",DoubleToStr(lotStep,Digits));

   double half= MathFloor (OrderLots()/ 2 /lotStep)*lotStep;
   Print ( "The Lots to close is: " ,DoubleToStr(half, Digits ));

for ( int c= OrdersTotal ()- 1 ; c>= 0 ; c--)
      {
       if ( OrderSelect (c,SELECT_BY_POS,MODE_TRADES)== true )
         {
         Print ( "Order Ticker Number = " ,OrderTicket());
         Print ( "Order Lots Open = " ,OrderLots());
         }
       else
          {
           Print ( "Order Select returned the error of " , GetLastError ()); // Order Select does not seem to want to work?
           continue ;
          }

       double FirstTarget_Buy=OrderOpenPrice()+(( OrderTakeProfit()-OrderOpenPrice())/ 2 );
       Print ( "FirstTarget_Buy: " ,DoubleToStr(FirstTarget_Buy, Digits ));
      
       if (OrderMagicNumber()==MagicNumber)
         if (OrderSymbol()== Symbol ())
             if (OrderLots()>minLot)
            {
             Print ( "Current Bid: " ,DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " ,DoubleToStr(FirstTarget_Buy, Digits ));
             int HalfCloseTicket = OrderTicket();
            
             if (OrderType()==OP_BUY && Bid>=FirstTarget_Buy+( Point / 2 )) // Doesn't seem to even go further than this as I do not get an error from OrderClose?
               {
               Print ( "Bid >= FirstTarget_Buy - Current Bid: " ,DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " ,DoubleToStr(FirstTarget_Buy, Digits ));
               bool Close_Half_Order_Buy=OrderClose(HalfCloseTicket,half,Bid, 3 , CLR_NONE );
               if (Close_Half_Order_Buy!=TRUE) Print ( "Close_Half_Order_Buy Last Error = " , GetLastError ());
               if (Close_Half_Order_Buy==True) Print ( "First Target Closed: " , OrderLots());
               }
            }
         if (Close_Half_Order_Buy==True)
         {
         MoveToBreakEven(); // This is a void.
         EMA_Exit(); // This is another void being called on the basis I can get this loop above to just close the OP_BUY once...
         }    
     }
}
 
deVries :
Inanılmaz 1 2 3 4 5 6 7 8 9 10 11 12

bu ne kadar büyük bir konu

Yarım lotları kapatmak.

umarım bildiğin an başka birine nasıl yapılacağını açıklayabilirsin

101 soru... Kim hepsini okumak ister ki...

İçin (Bu can sıkıcı OrderModify hatası 1'den de kurtuldum!)

Bu, ticareti zaten sahip olduğu ayarlarla değiştirmeyi denerseniz çoğu zaman olur.


Dostum, açık bir siparişi kısmen kapatmanın basit ve etkili bir yolunu açıklayan bir ileti dizisi yazmaktan çok mutlu olacağım - Sadece son bir parça ile sıkışıp kaldım ve sonra çalışıyor! Hepsini, başkalarının kullanması için tek bir kısa başlıkta / başlıkta toplayacağım? (Bunu nasıl yapacağımdan emin değil misiniz?)

Yukarıdaki son gönderiye bakın - Bunu neredeyse yaptım, döngüye sürekli olarak aynı OrderClose() çıkış fiyatında yarıları DURDURMA demenin mantığını çözemiyorum?

OrderModify hatası 1 ile ilgili ipucu için de teşekkürler :)
 
DomGilberto :

Dostum, açık bir siparişi kısmen kapatmanın basit ve etkili bir yolunu açıklayan bir ileti dizisi yazmaktan çok mutlu olacağım - Sadece son bir parça ile sıkışıp kaldım ve sonra çalışıyor! Hepsini, başkalarının kullanması için tek bir kısa başlıkta / başlıkta toplayacağım? (Bunu nasıl yapacağımdan emin değil misiniz?)

Yukarıdaki son gönderiye bakın - Bunu neredeyse yaptım, döngüye sürekli olarak aynı OrderClose() çıkış fiyatında yarıları DURDURMA demenin mantığını çözemiyorum?

OrderModify hatası 1 ile ilgili ipucu için de teşekkürler :)

Neden önce biletinizi başabaş noktasına taşımıyorsunuz, bu size daha önce söylendi ve sonra işlemin bir kısmını kapatıyorsunuz .... if OrderLots() >= .......
 
deVries :

Neden önce biletinizi başabaş noktasına taşımıyorsunuz, bu size daha önce söylendi ve sonra işlemin bir kısmını kapatıyorsunuz .... if OrderLots() >= .......

Bu nedenle? İlk önce kırmak için hareket etsem de fark etmez... Birinci engel anlayamadığım kısım bu mu? İlk önce başabaş, ardından yarıyı kapatmak üzere hareket etsem bile, bu, "CloseHalfOrder();" çağrıldığında tekrar HERHANGİ bir açık pozisyonu ve OrderClose()'u aynı fiyattan çağırır mı?

 int start()
   {
    
   if (OrderType()==OP_BUY)
      {
      CloseHalfOrder();
      } 
      
   }
 
DomGilberto :

Bu nedenle? İlk önce kırmak için hareket etsem de fark etmez... Birinci engel anlayamadığım kısım bu mu? İlk önce başabaş, ardından yarıyı kapatmak üzere hareket etsem bile, bu, "CloseHalfOrder();" çağrıldığında tekrar HERHANGİ bir açık pozisyonu ve OrderClose()'u aynı fiyattan çağırır mı?


Yalnızca BE'ye geçersiniz ve SL zaten BE'de değilse yarısını kapatırsınız