yeni başlayan birinin maceraları - sayfa 11

 
niko :
teşekkürler CB, bunu fark etmeliydim, yani hata sonunda doğruydu (130).

O zaman çalışıyor mu?


CB

 

Hey CB, İşlemleri yürütüyor ama mantığın doğru izlenip izlenmediğini görmek için işlemlerin üzerinden ayrıntılı bir şekilde geçmedim (ilk bakışta görünüyor). Bu yüzden büyük bir 'TEŞEKKÜR EDERİM!!!!' dememin zamanı geldi. :-)

Bu, stratejinin kârlı bir şekilde çalışması için hala oldukça uzun bir yol, kod sadece işlemleri otomatikleştirmenin bir yolu olduğundan, stratejinin kendisini geliştirmek için kendi tarafımda biraz çalışmam gerekiyor. Görünüşe göre tüm bu çabalar işe yaradı, ancak kodlama konusunda hala kafam çok karışık. Grafiklerimde yorumları görüntülemek için kendi başıma küçük kodlar yapmaya başlayacağım ve kullandığınız işlevleri ve diğer şeyleri öğrenmeme yardımcı olması için bunlarla uğraşacağım. Bu CB ile ilgili yardımınız ve aynı şeyi tekrar tekrar sorup aynı hataları yaptığım için sabrınız için çok teşekkür ederim. Teşekkür ederim!

 
CB, bu bana bir şeyi hatırlattı. Aynı yönde 2 veya en fazla 3 işlemin açılmasına izin vermek için kodunuzda nasıl değişiklik yapabilirim (bu, kodunuzun 2. sürümü gibidir). OP_BUY/OP_SELL'i eski kod için kullandık, bu yüzden birkaç şeyi değiştirmemiz gerekecek. Bana ne yapacağımı 'iskelet' formunda söylerseniz (örneğin: bunu yapmak için bir fonksiyon oluşturun ...), o zaman deneyip kodlayabilir ve incelemeniz için size geri götürebilirim. Mantığınızı takip edip kodlama bitlerini öğrendiğim için bu yol, kendiniz kodlamanızdan daha iyidir. Ne düşünüyorsun? (Aynı yönde kaç alım satıma izin verileceğini ayarladığımız harici bir değişkenimiz olacağını görebiliyorum, sonra alımları hesaplamak için bir fonksiyon yapıyoruz, bir diğeri de satışları hesaplamak için bir fonksiyon yapıyoruz, sonra bu iki fonksiyonu start() olarak adlandırıyoruz. ve oradaki harici değişkeni de kontrol edin ... bunun gibi bir şey mi?
 

Bu kolay olacak.

Kendinize maksimum açık sipariş sayısı olan bir parametre belirleyin. Sık sık değiştirmeniz gerekiyorsa, dışarı çıkarın.

Ardından, yalnızca fnOrderDuplicate() işlevini değiştirerek uygulayın - start() işlevini değiştirmeniz gerekmez. Bu, uygulamanın mevcut mimarisinin korunmasına yardımcı olacaktır.


CB

 
dostum, keşke bir gün 'kolay olacak!' diyebileceğim. tamam yapacağım, bakalım ne olacak! teşekkür ederim!
 

Hey CB, 2 saatimi yukarıdaki gönderide istediğini yapmaya çalışarak geçirdim, diğer kodlara, belgelere baktım ve ilerleme yok (sadece ne yapacağımı bilmiyorum). Dostum, böyle takılıp kalıyorum, çok sinir bozucu, en basit şeylerde bile! Şu anda nasıl gittiğimden daha kolay öğrenmenin bir yolu olmalı, öğrenmede ilerleme kaydetmediğimi hissediyorum, lütfen tüm kodları benim için yazıyorsunuz.


 bool fnOrderDuplicate ( )
 {
  iDuplicateOrders = 0 ;                                    //setting orderdup to zero
  iOrders = OrdersTotal ( ) - 1 ;                              //iOrders returns market orders count - 1. So if zero orders, we get -1
   for ( int i = iOrders ; i > = 0 ; i - - )                          // the loop to cycle through total orders
   {
     OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ;              //select order for function
     if ( ( OrderType ( ) ! = OP_BUY ) & & ( OrderType ( ) ! = OP_SELL ) )        //if order is NOT op-buy and is NOT op-sell, sCurrentOrderType = other (ie no order)
     sCurrentOrderType = "OTHER" ;
     if ( OrderType ( ) = = OP_BUY )                            //if order=buy, sCurrent OrderType = buy
     sCurrentOrderType = "BUY" ;                            //***7Jul09 ';' was missing at end of line
     if ( OrderType ( ) = = OP_SELL )                            //***7Jul09: the end ')' was missing.
     sCurrentOrderType = "SELL" ;                          //if orderfound = sell, sCurrentOrder= sell
     if ( ( OrderSymbol ( ) = = Symbol ( ) ) & & ( sCurrentOrderType = = sSignal ) )    //if ordersymbolfortheorder= symbolforchart && ScurrentOrder = sSignal(fn_entryrules) 
        iDuplicateOrders + + ;                                //iDuplicateOrders is added 1
   }
   if ( iDuplicateOrders = = 0 )                              //if iduporders = 0 then fnOrderDuplicate = false, otherwise it's true.
   return ( false ) ;
   return ( true ) ;
 }
 
hey CB, yukarıdaki konuda herhangi bir yardım, 1 yönde birden fazla işlem yapmak için kodu nasıl düzeltebilirim?
 
niko :
hey CB, yukarıdaki konuda herhangi bir yardım, 1 yönde birden fazla işlem yapmak için kodu nasıl düzeltebilirim?

Sadece şunu değiştirin: if ( iDuplicateOrders = = 0 ) to: if ( iDuplicateOrders <= iMaxDuplicateOrders )

CB

 

Hey CB, bunun için teşekkür ederim. Bu seçenekle, 1 yönde kaç tane açık siparişe izin verileceğini düzenleyemiyorum (diyelim ki harici iMaxDuplicateOrders = 4;) ea 4 kısa çalıştıracak ve parametreyi eşit olarak dağıtmayacak (örn: 2 kısa maksimum, 2 uzun maksimum ). bool fnOrderDuplicate'in bir kopyasını oluşturayım mı (örneğin: bool fnOrderDuplicateBuys ve bool fnOrderDuplicateSells) ve sonra sırasıyla bool fnShouldWeTrade içinde her birine atıfta bulunayım. Aklımda bu işe yarayabilir, ne dersin?

 
niko :

Hey CB, bunun için teşekkür ederim. Bu seçenekle, 1 yönde kaç tane açık siparişe izin verileceğini düzenleyemiyorum (diyelim ki harici iMaxDuplicateOrders = 4;) ea 4 kısa çalıştıracak ve parametreyi eşit olarak dağıtmayacak (örn: 2 kısa maksimum, 2 uzun maksimum ). bool fnOrderDuplicate'in bir kopyasını oluşturayım mı (örneğin: bool fnOrderDuplicateBuys ve bool fnOrderDuplicateSells) ve sonra sırasıyla bool fnShouldWeTrade içinde her birine atıfta bulunayım. Aklımda bu işe yarayabilir, ne dersin?


iMaxDuplicateOrders = 4 olarak ayarlamak, sayacı artırmadan önce yönü kontrol ettiğimiz için maksimumun her yönde 4 sipariş olacağı anlamına gelir.


Kredinin vadesi geldiği yerde kredi. Bu durumda tersi geçerlidir. Özür dilerim - Değişikliği kendiniz yapmadığınız için zaten hayal kırıklığına uğradım. Yapılması gereken TÜM, limiti tek bir düzenden bir değişkene değiştirmekti.


Ek açıklamalardan, mantığı gerçekten anlamadan kodu düzyazı olarak yeniden yarattığınız açıktır.


CB