KimIV'ten faydalı özellikler - sayfa 87

 
keekkenen писал(а) >>

hayır, bu işe yaramaz.. bir sipariş - bir lot, lot 3 ile bir sipariş açarsanız, lotu istediğiniz gibi bölemezsiniz - önce 1, sonra 1 ve sonra 1 - sipariş tamamen kapanır , yani sipariş açılan lot ile kapatılır, siparişleri parça parça kapatamazsınız..

yanılıyorsun, partimi parça parça kapatan bir trolüm var

 

yeni siparişler tabii ki açılmıyor?

 
17.07.2009 03:48
hope писал(а) >> yazdı aynı değil. Partinin üçte biri kapandı (koşullardan birine göre - fiyatın +150 puana ulaştığını varsayalım). İkinci üçte biri, örneğin açılıştan +300 pp olduğunda vb. kapanacaktır.

hayır, bu işe yaramaz.. bir sipariş - bir lot, lot 3 ile bir sipariş açarsanız, lotu istediğiniz gibi bölemezsiniz - önce 1, sonra 1 ve sonra 1 - sipariş tamamen kapanır , yani sipariş açılan lot ile kapatılır, siparişleri parça parça kapatamazsınız..

......................

".... partiyi bölemezsiniz ..." - neden? Teknik olarak uzun zaman önce uygulandı ve 85. sayfadaki Roger ve KimIV sayesinde partileri normalleştirerek 131 hatasından kurtuldum. Ayrıca "... bir sipariş - bir lot, lot 3 ile bir sipariş açarsanız lotu istediğiniz gibi bölemezsiniz - önce 1, sonra 1 ..." ifadesi yanlıştır: sipariş - lot olarak da bilinir - bir hacimden oluşur: 0.03 , 0.3, 3... ve sessizce kapalı kısımlar: 0.01, 0.1, 1... değil mi?

 

Ve son isteğimin özü şuydu: TÜM pozisyonları dizilere başvurmadan, ancak standart hesaplamaları kullanarak ve türe göre ekleyerek kapatmak mümkün mü?

   BuyTotalOp = 0 ;                                  // Количество Buy ордеров
   SellTotalOp = 0 ;                                // Количество Sell ордеров
   for ( int i = 1 ; i < = OrdersTotal ( ) ; i + + )          // Цикл перебора ордер
       {
       if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) // Если есть следующий
         {                                        // Анализ ордеров:
         if ( OrderSymbol ( ) ! = Symb ) continue ;        // Не наш фин. инструм
         if ( OrderType ( ) > 1 )                      // Попался отложенный
           {
             Alert ( "Обнаружен отложенный ордер. Эксперт не работает." ) ;
             return ;                              // Выход из start()
           }
         if ( OrderType ( ) = = OP_BUY )
           {
            BuyTotalOp + + ;                          // Счётчик ордеров Buy

Şimdi içimde yorgun, okyanusu geçen bir geminin hissine kapılıyorum ve sana bu yöne mi yelken açman gerektiğini, yoksa başka bir yol mu denemen gerektiğini söyleyecek bir deniz fenerini umuyor...

Igor - dalını boşuna mı koparıyoruz?

 

Her şeyi tek tek kapatabilirsiniz, ancak rengarenk, örneğin şöyle:

b,s,s,b,b,s,b hacim 1,2,1,2,2,1,2 toplam örtüşen hacim 1-2-1+2+2-1+2=3 lot

Özetle, 3 lot satın almanın toplamını alıyoruz ve bu 3 lot satış hacminin sayacını belirliyoruz.

ve ardından yakın bi'yi kapatın.

*

Ancak şu soruya: TÜM pozisyonları kapatmak mümkün mü?

Evet, art arda, bir komut dosyası ile hızlı, aap! ve herşey...

Komut dosyaları veya kapatma işlevleri bir kereden fazla yayınlanmıştır...

Ayrıca, bunları yapılandırdıktan sonra, her ikisini de aynı anda ve kriterlere göre kapatabilirsiniz, örneğin:

- belirli bir sembolle

- sadece alır veya sadece satar

- sadece karlı

Buna göre, kriter kombinasyonları da mümkündür ...

 

Lütfen sizin için uygun olan herhangi bir koşula göre siparişi kapatmama yardım edin, aksi halde işe yaramaz.

Şimdiden teşekkürler

Dosyalar:
help.rar  7 kb
 

Her şeyi kapatın!!!

 void CloseAll ( ) 
{ 
   for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - ) 
       { 
       if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = false ) break ; 
       if ( OrderType ( ) = = OP_BUY        ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( OrderSymbol ( ) , MODE_BID ) , 100 ) ; 
       if ( OrderType ( ) = = OP_SELL      ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( OrderSymbol ( ) , MODE_ASK ) , 100 ) ; 
       if ( OrderType ( ) = = OP_BUYSTOP    ) OrderDelete ( OrderTicket ( ) ) ; 
       if ( OrderType ( ) = = OP_SELLSTOP ) OrderDelete ( OrderTicket ( ) ) ; 
       if ( OrderType ( ) = = OP_BUYLIMIT ) OrderDelete ( OrderTicket ( ) ) ; 
       if ( OrderType ( ) = = OP_SELLLIMIT ) OrderDelete ( OrderTicket ( ) ) ; 
       }   
}

Yalnızca açık pozları kapatır.

 void CloseAll2 ( ) 
{ 
   for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - ) 
       { 
       if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = false ) break ; 
       if ( OrderType ( ) = = OP_BUY        ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( OrderSymbol ( ) , MODE_BID ) , 100 ) ; 
       if ( OrderType ( ) = = OP_SELL      ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( OrderSymbol ( ) , MODE_ASK ) , 100 ) ; 
       } 
}

Çağrı örneği.

 // Скрипт. Закрыть все ордера.mq4 -----------------------------------
#include <WinUser32.mqh> 

void start ( ) 
   { 
   if ( MessageBox ( "Закрыть (удалить) все ордера?" ,
   "Скрипт" , MB_YESNO | MB_ICONQUESTION ) ! = IDYES ) return ; 
   CloseAll ( ) ; 
   } 

Kapanış komut dosyasını tamamlayın.

 // Скрипт. Закрыть все.mq4 -----------------------------------
#property copyright "herurg@bk.ru" 
#include <WinUser32.mqh> 

void start ( ) 
   { 
   if ( MessageBox ( "Закрыть (удалить) все ордера?" ,
   "Скрипт" , MB_YESNO | MB_ICONQUESTION ) ! = IDYES ) return ; 
   CloseAll ( ) ; 
   } 

void CloseAll ( ) 
{ 
   for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - ) 
       { 
       if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = false ) break ; 
       if ( OrderType ( ) = = OP_BUY        ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( OrderSymbol ( ) , MODE_BID ) , 100 ) ; 
       if ( OrderType ( ) = = OP_SELL      ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , MarketInfo ( OrderSymbol ( ) , MODE_ASK ) , 100 ) ; 
       if ( OrderType ( ) = = OP_BUYSTOP    ) OrderDelete ( OrderTicket ( ) ) ; 
       if ( OrderType ( ) = = OP_SELLSTOP ) OrderDelete ( OrderTicket ( ) ) ; 
       if ( OrderType ( ) = = OP_BUYLIMIT ) OrderDelete ( OrderTicket ( ) ) ; 
       if ( OrderType ( ) = = OP_SELLLIMIT ) OrderDelete ( OrderTicket ( ) ) ; 
       }   
}
 

Kim Sen en iyisisin. Sana şapka çıkarırım.

Bütün fonksiyonlarını inceledim, ama burada tek bir tane ya da bir garazd yok. Şimdi fonksiyonları ne zaman yazarım, kafamdan yazarım ama kafamda sonra senin fonksiyonların :-)

Bir programcı olarak kariyerimin başında birçok yararlı işlevinizi inceledim.

Teşekkür ederim.

 
gince >> :

Lütfen sizin için uygun olan herhangi bir koşula göre siparişi kapatmama yardım edin, aksi halde işe yaramaz.

Şimdiden teşekkürler

Açıklama

Siparişi kapatma stratejisi önemsizdir, herhangi biri olabilir. Siparişi kapatmak için Kim'in işlevlerinin yardımıyla yardım


 int start ( )
{
  //----
  //Print (ExpertName);
  if ( Bars < 20 ) return ( 0 ) ;
  if ( CheckNevBar )
  if ( ! NevBar ( ) ) return ( 0 ) ;
   
  TradesInThisSymbol = ExistPositions ( sy ) ;
  if ( TradesInThisSymbol > 0 ) return ( 0 ) ;
   
  if ( AccountFreeMargin ( ) < MarginMin ) 
  {
  //Print("Not enough money to trade Strategy:", ExpertName);
  return ( 0 ) ;
  }
  sy = Symbol ( ) ;
  Lots = GetSizeLot ( sy , LotsWayChoice , LotsPercent , LotsDeltaDepo , LotsDepoForOne , LotsMax ) ;
   
   
  if ( CheckForOpen_Sell ( ) )
  OpenPosition ( sy , OP_SELL , Lots ) ;           // Тут  работает
  if ( CheckForOpen_Buy ( ) )
  OpenPosition ( sy , OP_BUY , Lots ) ;            // Тут  работает
  
  if ( CheckForClose_Buy ( ) )
  ClosePositions ( sy , OP_BUY ) ;                 // Тут  у меня что то неработает
  if ( CheckForClose_Sell ( ) )  
  ClosePositions ( sy , OP_SELL ) ;               // Тут  у меня что то неработает
  
  //----
  return ( 0 ) ;
}

//------------------------

bool CheckForClose_Buy ( )
  {
  Indicat_Var ( ) ;
  if ( ExistPositions ( sy , OP_BUY , MagicNumber ) )
  {
  if ( VininI_fast_trend = = - 1 ) return ( true ) ;   // Тут любое условие на закрытие
  //if(BB_MACD_2 > 0)return(true);           // Тут любое условие на закрытие
  else
  return ( false ) ;
  }  
  }
//------------------------
bool CheckForClose_Sell ( )
  {
  Indicat_Var ( ) ;
  if ( NumberOfPositions ( sy , OP_SELL , MagicNumber ) > 0 )
  {
  if ( VininI_fast_trend = = 1 ) return ( true ) ;         // Тут любое условие на закрытие
  //if(BB_MACD_1 > 0)                             // Тут любое условие на закрытие
  //return(true);
  else
  return ( false ) ;  
  }
  }
 
Burada bir şey bende çalışmıyor yani kapanmıyor, hata vermiyor.
Neden: