Fiyat != Fiyat ? - sayfa 6

 

Çifte solucan kutusu dediğim şey bu.... (cinas amaçlı;)

Önerilen birkaç özel işlevden hiçbiri fikir birliğine varmadı. Bu noktada (punto amaçlanmamıştır) paylaşmak isteyen var mı, hangisini günlük CompareDouble işlevi olarak kullanıyorlar?

Açıkçası, güvenilir sistemler istiyorsak, bazı özel CompareDouble işlevini kullanmalıyız.

 

EXACT değeri önemli olmadığı sürece sorun göz ardı edilebilir.

(Muhtemelen normalleştirilmemiş) bir tetikleyici fiyatının üzerinde açılmak istiyorsam, Teklif> tetikleyiciyi kullanırım. Yuvarlama nedeniyle fiyatta tetiklenirse , gerçekten umurumda değil.

AT veya çevresinde (muhtemelen normalleştirilmemiş) bir tetikleyici fiyat açmak istiyorsam, bir boşluk olup olmadığını test ederim: Teklif > tetikleyici && Teklif <tetikleyici+3*pips2dbl. Piyasa tek bir tıklamayla bütün bir pip'i kolayca hareket ettirebilir, bu nedenle Bid == trigger her zaman yanlıştır ve MathAbs(bid-trigger) < Point/2 doğrudur ancak büyük olasılıkla çalışmayacaktır.

Eşitler önemliyse, örneğin bir SL'yi taşımak istiyor ama pazara çok yakınım ( stop level ) ve Bid - newSL > StopLelvel - Point/2 kullanıyorum

 
WHRoeder :

EXACT değeri önemli olmadığı sürece sorun göz ardı edilebilir.

(Muhtemelen normalleştirilmemiş) bir tetikleyici fiyatının üzerinde açılmak istiyorsam, Teklif> tetikleyiciyi kullanırım. Yuvarlama nedeniyle fiyatta tetiklenirse , gerçekten umurumda değil.

AT veya çevresinde (muhtemelen normalleştirilmemiş) bir tetikleyici fiyat açmak istiyorsam, bir boşluk olup olmadığını test ederim: Teklif > tetikleyici && Teklif <tetikleyici+3*pips2dbl. Piyasa tek bir tıklamayla bütün bir pip'i kolayca hareket ettirebilir, bu nedenle Bid == trigger her zaman yanlıştır ve MathAbs(bid-trigger) < Point/2 doğrudur ancak büyük olasılıkla çalışmayacaktır.

Eşitler önemliyse, örneğin bir SL'yi taşımak istiyor ama pazara çok yakınım (durma seviyesi) ve o zaman Bid - newSL > StopLelvel - Point/2 kullanıyorum


Teşekkürler. İşte ben buna kaynatılmış iplik derim..

Aslında bahsettiğiniz şey benim uygulamama çok yakın: Yeni TakeProfit'in (broker veya MQL4 standartlarına göre) önceden ayarlanmış ve gönderilen orijinal TakeProfit'ten farklı olup olmadığını tespit ediyorum. OrderModify çağrılmadan önce iki gösterge değerini ve iki TakeProfit değerini karşılaştırıyorum.

 if ( Volume [ 0 ]> 1 ) return ;
 
       for ( int b= OrdersTotal ()- 1 ;b>= 0 ; b--)
       {
       if (atr2kTP == atr2kTPAdjust|| btphold==btp)) return ; //-----------This is where I am comparing them, and where the function would go.
         if ( OrderSelect (b, SELECT_BY_POS , MODE_TRADES ))
           if ( OrderMagicNumber ()==MAGICMA)
             if ( OrderSymbol ()== Symbol ())
                 if ( OrderType ()== OP_BUY )                                  
                  atr2kTPAdjust=atr2kTP; 
                       OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),btp, 0 ,CLR_NONE);                          
 
       }              
         for ( int s= OrdersTotal ()- 1 ;s>= 0 ; s--)
         {
           if (atr2kTP == atr2kTPAdjust|| stphold==stp) return ;
           if ( OrderSelect (s, SELECT_BY_POS , MODE_TRADES ))
             if ( OrderMagicNumber ()==MAGICMA)
               if ( OrderSymbol ()== Symbol ())
                   if ( OrderType ()== OP_SELL )                      
                      atr2kTPAdjust=atr2kTP;                      
                         OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),stp, 0 ,CLR_NONE);
         }
 }
 

Bu, Double order değerlerini karşılaştırmak için Point/2 filtresini kullanan son OrderMod kodumdu. Her seferinde hatasız ve değiştirilmiş siparişler çalıştı. Teşekkürler!

 void AutoAdjustTakeProfit()
{
if ( Volume [ 0 ]> 1 || atr2kTP == atr2kTPAdjust) return ;  

       for ( int b= OrdersTotal ()- 1 ;b>= 0 ; b--)
          { 
             if ( OrderSelect (b, SELECT_BY_POS , MODE_TRADES ))
               if ( OrderMagicNumber ()==MAGICMA)
                 if ( OrderSymbol ()== Symbol ())
                    {          
                       if ( OrderType ()== OP_BUY ) // buy ordeer section
                        {  
                           if ((btphold-btp> Point / 2 ) || (btphold-btp<- Point / 2 ))   //--------------------------This is the DoubleCompare Code
                            {                                                                             
                              atr2kTPAdjust=atr2kTP; 
                               OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),btp, 0 ,CLR_NONE);                          
                            }
                        } 
                     
                       if ( OrderType ()== OP_SELL ) // Sell ordeer section
                        {   
                           if ((stphold-stp> Point / 2 ) || (stphold-stp <- Point / 2 )) //--------------------------This is the DoubleCompare Code
                            {                                                  
                               atr2kTPAdjust=atr2kTP;                      
                               OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),stp, 0 ,CLR_NONE);
                            }
                        }
                    }
           }
}
 
  1. if ( Volume [ 0 ]> 1 ) return ;
    Yeni bir çubuğun başlangıcında bazı işaretleri kaçırırsanız, kodunuz yürütülmez. Her zaman zamanı kullan
  2.    if ((stphold-stp> Point / 2 ) || (stphold-stp <- Point / 2 ))
       if ( MathAbs (stphold - stp) > Point / 2 ) // Simplified
    Tekrar ediyorum, gerçekten eşitleri önemsiyor musunuz? Kullandıysanız:
       if ( MathAbs (stphold - stp) >= Point )
    bir noktadan biraz daha kısa sürede tetiklenebilir. Bu hala eşit değil ile aynı.
  3. Neden bir noktaya hareket ettirin, pip ile hareket ettirin ve yuvarlama probleminden kaçının ve ERR_TOO_FREQUENT_REQUESTS
 

newBar harika çalışıyor.

MathAbs kayaları, sadece denklemlerin sol tarafındaki negatifleri dönüştürdüğünü sanıyordum, farkı da pozitif değere çevireceğini bilmiyordum.

Nokta/2 hassasiyeti benim sinyal amaçlarım için önemli değil. Zayıf kodlamadan kaçınmak için yalnızca yuvarlama hatalarından kaçınmak istedim.

Yuvarlama hatalarının yanı sıra frekans hatalarını da durdurmayı tercih ederim. Bu yüzden en doğru hesaplama kodunun aksine en hatasız kararlı hesaplamaları kullanmak istiyorum.

Yani TakeProfit MathAbs (stphold - stp) karşılaştırmalarımı >2*pip'e yükselterek, yuvarlama hatalarını ve frekans hatalarını ortadan kaldırmak için en büyük şansım olabilir mi?

çok teşekkürler.

removed.

 
moneycode :

newBar harika çalışıyor.

Daha önce IsNewCandle ile ilgili sorunlar buldum, bu yüzden Volume tetikleyicisine geçtim. Hacim kenelerinin işlenmesi yavaş veya eksik olabilirse, mumlar da olabilir. Yani ikisi de kötü bir fikirdi..

newBar düzgün çalıştığından, şimdi aşağıdaki kodla IsNewCandle başarısız oluşumlarını belirlemeye çalıştım:

IsNewCandle() işlev çağrısı, newBar kod satırının ÜSTÜNDE, start() içindedir. (en düşük kod resmini sat) Bu baskı testi işe yaramadı, bunun yerine her yeni çubuğa yazdırıldı.

Bence bir işleve yeni bir çubuk denetimi koymak kötü bir fikir, kodu yeniden kullanılabilir hale getirmek için bir işlev kullanılıyor. . . Yeni bir çubuğun aynı ilk işareti sırasında IsNewCandle() öğesini iki kez aramayı deneyin ve hangi yanıtları aldığınızı görün. . .

Bu arada . . . bu konu bu başlık için konu dışı, tartışmaya devam etmek istiyorsanız lütfen yeni bir konuya taşıyın. Daha sonra toparlayacağım. .

 
WHRoeder :

....Fiyatlar yalnızca noktanın katı kadar değişebileceğinden, nokta/2 tam da budur....


Fiyatları karşılaştırıyorsanız, sorun değil. Bununla birlikte, örneğin fiyat ortalamaları gibi çiftleri karşılaştırıyorsanız, Nokta/2 işe yaramaz.
 
HarriMQL4 :

Fiyatları karşılaştırıyorsanız, sorun değil. Bununla birlikte, örneğin fiyat ortalamaları gibi çiftleri karşılaştırıyorsanız, Nokta/2 işe yaramaz.


Bu konunun başlığına dikkat ettiniz mi?

;)

 
HarriMQL4 :

Fiyatları karşılaştırıyorsanız, sorun değil. Bununla birlikte, örneğin fiyat ortalamaları gibi çiftleri karşılaştırıyorsanız, Nokta/2 işe yaramaz.
Fiyatlar iki katıdır. . .