Sadece Karlı İşlemleri Kapatın, Kar Hedefinde

 

Merhaba, bu adeti test ediyorum ve siparişleri kapatmanın çok faydalı olduğunu düşünüyorum, ancak benim durumumda tüm açık siparişleri kapatmak istemiyorum, sadece karlı siparişleri kapatmak istiyorum.

"CloseProfitableTradesOnly" değerini false değerinden true değerine değiştirdim, ancak siparişler 1 usd'de kapanmaya devam ediyor. Ve aradığım şey, yalnızca karlı siparişleri birlikte 25 usd'ye ulaştığında kapatmak. 1 usd kar üzerindeki tüm kapalı siparişler.

Herhangi bir öneriniz varsa, bunu gerçekten takdir ediyorum. Yardımlarınız için şimdiden teşekkür ederiz.

İşte adet ve kod:

 //|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//|              Close 
//|   Last Updated 12-12-2006 10:00pm
//|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#define     NL     "\n" 

extern int     ProfitTarget     = 25 ;             // closes all orders once Float hits this $ amount
extern bool    CloseAllNow      = false ;           // closes all orders now
extern bool    CloseProfitableTradesOnly = false ; // closes only profitable trades
extern double ProftableTradeAmount      = 1 ;     // Only trades above this amount close out
extern bool    ClosePendingOnly = false ;           // closes pending orders only
extern bool    UseAlerts        = false ;

//+-------------+
//| Custom init |
//|-------------+
int init()
  {

  }

//+----------------+
//| Custom DE-init |
//+----------------+
int deinit()
  {

  }

//+------------------------------------------------------------------------+
//| Closes everything
//+------------------------------------------------------------------------+
void CloseAll()
{
   int i;
   bool result = false ;

   while ( OrdersTotal ()> 0 )
   {
       // Close open positions first to lock in profit/loss
       for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
      {
         if ( OrderSelect (i, SELECT_BY_POS)== false ) continue ;

         result = false ;
         if ( OrderType() == OP_BUY)  result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 15 , Red );
         if ( OrderType() == OP_SELL)  result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 15 , Red );
         if (UseAlerts) PlaySound ( "alert.wav" );
      }
       for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
      {
         if ( OrderSelect (i, SELECT_BY_POS)== false ) continue ;

         result = false ;
         if ( OrderType()== OP_BUYSTOP)  result = OrderDelete( OrderTicket() );
         if ( OrderType()== OP_SELLSTOP)  result = OrderDelete( OrderTicket() );
         if ( OrderType()== OP_BUYLIMIT)  result = OrderDelete( OrderTicket() );
         if ( OrderType()== OP_SELLLIMIT)  result = OrderDelete( OrderTicket() );
         if (UseAlerts) PlaySound ( "alert.wav" );
      }
       Sleep ( 1000 );
   }
}
   
//+------------------------------------------------------------------------+
//| cancels all orders that are in profit
//+------------------------------------------------------------------------+
void CloseAllinProfit()
{
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
 {
     OrderSelect (i, SELECT_BY_POS);
     bool result = false ;
         if ( OrderType() == OP_BUY && OrderProfit()+OrderSwap()>ProftableTradeAmount)  result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5 , Red );
         if ( OrderType() == OP_SELL && OrderProfit()+OrderSwap()>ProftableTradeAmount)  result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5 , Red );
         if (UseAlerts) PlaySound ( "alert.wav" );
 }
   return ; 
}

//+------------------------------------------------------------------------+
//| cancels all pending orders 
//+------------------------------------------------------------------------+
void ClosePendingOrdersOnly()
{
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
 {
     OrderSelect (i, SELECT_BY_POS);
     bool result = false ;
         if ( OrderType()== OP_BUYSTOP)   result = OrderDelete( OrderTicket() );
         if ( OrderType()== OP_SELLSTOP)  result = OrderDelete( OrderTicket() );
  }
   return ; 
  }

//+-----------+
//| Main      |
//+-----------+
int start()
  {
   int       OrdersBUY;
   int       OrdersSELL;
   double    BuyLots, SellLots, BuyProfit, SellProfit;

//+------------------------------------------------------------------+
//  Determine last order price                                       |
//-------------------------------------------------------------------+
       for ( int i= 0 ;i< OrdersTotal ();i++)
      {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) continue ;
         if (OrderType()==OP_BUY)  
         {
            OrdersBUY++;
            BuyLots += OrderLots();
            BuyProfit += OrderProfit() + OrderCommission() + OrderSwap();
         }
         if (OrderType()==OP_SELL) 
         {
            OrdersSELL++;
            SellLots += OrderLots();
            SellProfit += OrderProfit() + OrderCommission() + OrderSwap();
         }
      }               
   
     if (CloseAllNow) CloseAll();
    
     if (CloseProfitableTradesOnly) CloseAllinProfit();
    
     if (BuyProfit+SellProfit >= ProfitTarget) CloseAll(); 

     if (ClosePendingOnly) ClosePendingOrdersOnly();
       
   
   Comment ( "                            Comments Last Update 12-12-2006 10:00pm" , NL,
           "                            Buys    " , OrdersBUY, NL,
           "                            BuyLots        " , BuyLots, NL,
           "                            Sells    " , OrdersSELL, NL,
           "                            SellLots        " , SellLots, NL,
           "                            Balance " , AccountBalance(), NL,
           "                            Equity        " , AccountEquity(), NL,
           "                            Margin              " , AccountMargin(), NL,
           "                            MarginPercent        " , MathRound ((AccountEquity()/AccountMargin())* 100 ), NL,
           "                            Current Time is  " ,TimeHour(CurTime()), ":" ,TimeMinute(CurTime()), "." ,TimeSeconds(CurTime()));
 } // start()

 


 
if((BuyProfit+SellProfit >= ProfitTarget)  && CloseProfitableTradesOnly) CloseAllinProfit();
 
af1 :

Merhaba, bu adeti test ediyorum ve siparişleri kapatmanın çok faydalı olduğunu düşünüyorum, ancak benim durumumda tüm açık siparişleri kapatmak istemiyorum, sadece karlı siparişleri kapatmak istiyorum.

"CloseProfitableTradesOnly" değerini false değerinden true değerine değiştirdim, ancak siparişler 1 usd'de kapanmaya devam ediyor. Ve aradığım şey, yalnızca karlı siparişleri birlikte 25 usd'ye ulaştığında kapatmak. 1 usd kar üzerindeki tüm kapalı siparişler.


Bu kodu sen yazmadın sanırım. . .

     if (CloseAllNow) CloseAll();
    
     if (CloseProfitableTradesOnly) CloseAllinProfit();
    
     if (BuyProfit+SellProfit >= ProfitTarget) CloseAll(); 

     if (ClosePendingOnly) ClosePendingOrdersOnly();

. . . ama okuyabilmelisin.

"CloseProfitableTradesOnly" değerini false değerinden true değerine değiştirdiniz, bu nedenle yukarıya bakarsanız CloseAllinProfit() çağrılır. . . toplam kârdan bağımsız olarak.

Bu değişikliği deneyin:

     if (CloseAllNow) CloseAll();
    
     if (CloseProfitableTradesOnly && ProfitTarget == 0.0 ) CloseAllinProfit();
    
     if (BuyProfit+SellProfit >= ProfitTarget && !CloseProfitableTradesOnly) CloseAll(); 

     if (CloseProfitableTradesOnly && BuyProfit+SellProfit >= ProfitTarget) CloseAllinProfit();

     if (ClosePendingOnly) ClosePendingOrdersOnly();
 

Merhaba Raptor, cevabınız için teşekkürler.

Bu kodu ben yazmadım, sadece "CloseProfitableTradesOnly" giriş değerini yanlıştan doğruya şöyle değiştirdim:

Değişikliklerinizi deniyorum ama yine de adet kâr hedefinde kapanmıyor (bu durumda 25 usd.)


Ayrıca kodda 0.0'dan 25.0'a değiştirmem gerekiyor mu?

 if (CloseProfitableTradesOnly && ProfitTarget == 0.0 ) CloseAllinProfit();
 
af1 :

Merhaba Raptor, cevabınız için teşekkürler.

Bu kodu ben yazmadım, sadece "CloseProfitableTradesOnly" giriş değerini yanlıştan doğruya şöyle değiştirdim:

Değişikliklerinizi deniyorum ama yine de adet kâr hedefinde kapanmıyor (bu durumda 25 usd.)


Ayrıca kodda 0.0'dan 25.0'a değiştirmem gerekiyor mu?


Hayır, bu satır istediğinizi yapıyor olmalı, TÜM değişiklikleri yaptığınızdan emin misiniz?

     if (CloseProfitableTradesOnly && BuyProfit+SellProfit >= ProfitTarget) CloseAllinProfit();
 
bundan değiştim
 if (CloseAllNow) CloseAll();
    
if (CloseProfitableTradesOnly) CloseAllinProfit();
    
if (BuyProfit+SellProfit >= ProfitTarget) CloseAll(); 

if (ClosePendingOnly) ClosePendingOrdersOnly();

Buna:

 if (CloseAllNow) CloseAll();
    
if (CloseProfitableTradesOnly && ProfitTarget == 0.0 ) CloseAllinProfit();
    
if (BuyProfit+SellProfit >= ProfitTarget && !CloseProfitableTradesOnly) CloseAll(); 

if (CloseProfitableTradesOnly && BuyProfit+SellProfit >= ProfitTarget) CloseAllinProfit();

if (ClosePendingOnly) ClosePendingOrdersOnly();


Ve "CloseProfitableTradesOnly" girişi yanlıştan doğruya.


Ama kapatmayın. Başka ne olabilir?

 
af1 :
bundan değiştim

Buna:


Ve "CloseProfitableTradesOnly" girişi yanlıştan doğruya.


Ama kapatmayın. Başka ne olabilir?

Belki toplam kârınız 25.0'dan azdır
 
RaptorUK :
Belki toplam kârınız 25.0'dan azdır


25'ten küçükse, daha da hızlı kapanması gerekir.

 
af1 :


25'ten küçükse, daha da hızlı kapanması gerekir.

Hayır, kapanmadan önce kârın 25.0'dan büyük veya buna eşit olması gerekir. . .

 if (CloseProfitableTradesOnly && BuyProfit+SellProfit >= ProfitTarget) CloseAllinProfit();
 
RaptorUK :

Hayır, kapanmadan önce kârın 25.0'dan büyük veya buna eşit olması gerekir. . .


İşte bir örnek Raptor. 97.9 kârlı 4 siparişim var. Dolayısıyla, kâr hedefim 25 ise ve koşul "Yalnızca YakınKarlıTicari İşlemler" doğruysa, bu 4 emir kapanmalıdır. Ama herhangi bir siparişi kapatmıyor.

 
af1 :


İşte bir örnek Raptor. 97.9 kârlı 4 siparişim var. Dolayısıyla, kâr hedefim 25 ise ve koşul "Yalnızca YakınKarlıTicari İşlemler" doğruysa, bu 4 emir kapanmalıdır. Ama herhangi bir siparişi kapatmıyor.

Hayır, toplam kâr 25.0'dan büyük olmalı, sizinki -59.80