Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 122

 
skyjet :

Merhaba! Bu fonksiyondaki hataları arıyorum.

Teoride, açılmamış bekleyen emirler, verildikten iki gün sonra silinmelidir.

dk=1440;

 if ( OrdersTotal ()> 0 )
{   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
      {   if (OrderSymbol()!= Symbol ()) continue ;
         if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
         {   if ( TimeCurrent ()-OrderOpenTime()>=min)
            {  OrderDelete(OrderTicket());
               return ;
         }  }
}  }  }
 
skyjet :

Merhaba! Bu fonksiyondaki hataları arıyorum.

Teoride, açılmamış bekleyen emirler, verildikten iki gün sonra silinmelidir.

dk=1440;


Bekleyen siparişleri neden takip edip silmelisiniz ? Onlara tarihsaat süre sonu=TimeCurrent()+min*60+sec; Ayarlandıktan sonra min*60+sn içinde kendiliğinden kaldırılırlar.
 
Sepulca :

Bekleyen siparişleri neden takip edip silmelisiniz? Onlara tarihsaat süre sonu=TimeCurrent()+min*60+sec; Ayarlamadan sonra min*60+sn içinde kendileri kaldırılacaktır.
Bekleyen bir emri bir algoritmaya göre kapatması ve bir koşulda, örneğin başka bir koşulda 1 günde kapatması mümkündür. 2 gün.
 
Sepulca paladin80 Teşekkürler! datetime son kullanma tarihi ihtiyacınız olan şeydir :)
 

paladin80 :

OrderOpenTime(), sipariş açılış saatini döndürür.

Bekleyen bir sipariş için bu işlev sıfır döndürür.

 
PapaYozh :

OrderOpenTime(), sipariş açılış saatini döndürür.

Bekleyen bir sipariş için bu işlev sıfır döndürür.

Hmm, işlevleri kontrol etmeden kodu hızlıca değiştirdim. Tam olarak, OrderOpenTime(), aracının bekleyen emri kabul ettiği zamanı değil, aracının pozisyonu açtığı zamanı gösterir. Onlar. Kapanış saatini hemen siparişte belirtmek veya sihirli sayıya siparişin gönderilme zamanını yazmak (herhangi bir şekilde kullanılmıyorsa) ve TimeCurrent() ile OrderMagicNumber()'ı karşılaştırmak muhtemelen daha iyidir.
 

Tünaydın. Lütfen özel gösterge ile bana yardım edin.

Trend çizgisine olan mesafeyi belirleme problemini çözüyorum. Trend çizgisine olan mesafeyi özellikle çizildiği zamanda (terminalde açık olan zamandan bağımsız olarak) almak gerekir. ObjectGetValueByShift işlevini kullanarak trend çizgisinin geçerli değerini alıyorum. Hesaplamalar ancak açık bir zamanda yapılabileceği için küçük bir gösterge yazdım. iCustom işlevinin bir zaman aralığı parametresine sahip olması beni etkiledi, ancak göstergeyi çağırırken bu parametrenin nasıl dikkate alındığı bir sorudur.

İşte gösterge:


 #property indicator_chart_window
#property indicator_buffers 1
//--------------------------------------------------------------------   
extern string TL_name = "TL_1" ;
//--------------------------------------------------------------------   
double valueBuf[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
   //---- indicators
   SetIndexBuffer ( 0 ,valueBuf);
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 1 , White);
   //----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
   //----
   //----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int i;
   int     counted_bars = IndicatorCounted();
   //----
   i = Bars - counted_bars - 1 ;           // Индекс первого непосчитанного
   
   // Цикл по непосчитанным барам
   while (i>= 0 ) {
      valueBuf[i] = NormalizeDouble (ObjectGetValueByShift(TL_name,i), Digits );
      i--;
   }     
   //----
   return ( 0 );
}

Gösterge, mevcut değeri bir trend olarak kabul eder.
Göstergeyi şöyle adlandırıyorum:

TL_price_now = iCustom ( NULL , PERIOD_D1 , "TL_value" ,TL_name, 0 , 0 );

Burada örneğin PERIOD_D1 süresi, trend çizgisinin çizildiği ve mesafenin hesaplanması gereken bir parametre olarak göstergeye iletilir.

Trend çizgisine olan mesafeyi basitçe hesaplarım:

dist = NormalizeDouble (TL_price_now - Bid, Digits );
Her şey öyle görünüyor, ama öyle değil: diğer yarılara geçerken (D1 dışında), gösterge diğer değerleri döndürür (geçtiğim yarılar için doğru).
Burada soru ortaya çıkıyor: iCustom işlevi çağrılırken süre ne ölçüde dikkate alınır?
Ya da belki göstergede çok zekiyim?
 
pako :


t = Sipariş Toplamı ();

neden say???? hesaplanmış???


Bu yüzden değeri referans olarak iletmek için bunu yaptım. Mantık basit!
 
artmedia70 :

Benim versiyonumda işlev daha kısa olacak ... :)



Evet, bu arada, bu uyum uygulamada daha yetkin. Eşlik eden işlevin başlangıcındaki akım daha fazla yer kaplamaya başladı. Şu şekilde çıktı:

 void FindOrders( int & massive[])
{
   int oType;
   ArrayInitialize (massiveOfOrders, 0 );
   for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
      
      oType = OrderType();
      massiveOfOrders[oType] = massiveOfOrders[oType] + 1 ;
   }
}

 int start()
{
   int i, oTotal = 0 , oPending = 0 ;
   
   FindOrders(massiveOfOrders);
   
   for (i= 0 ; i<= 7 ; i++)
   {
       if (i > 1 && i < 6 )
       {
           oPending += massiveOfOrders[i];
       }
       if (i < 6 )
       {
          oTotal += massiveOfOrders[i];
       }
   }
   pr ( "FindOrders(): " + "oTotal = " + oTotal);
   pr ( "FindOrders(): " + "oPending = " + oPending);

Optimize edilecek bir şey yok gibi görünüyor, değil mi?

Demek istediğim, başlangıçta çok az şey olduğunda çok daha uygun. Ve her şey tamamen işlevlerle çağrılır. Ve en son, başlangıçta, ana işlevlerde çok sayıda büyüme olduğu ve ek işlevler arandığı ortaya çıktı ...

 

Güzel gün!

Lütfen yardım edin ve danışmanın neden ticaret yapmadığını açıklayın?