5 basamak algılama - sayfa 6

 
Cameofx 2010.07.29 10:52

Şimdi aşağıdaki işlevleri kullanıyorum ve farklı brokerler ve araçlar arasında kullanılabilir.

 double vPoint; 
if ( Digits == 2 || Digits == 4 ) vPoint = Point ; else
if ( Digits == 3 || Digits == 5 ) vPoint = Point * 10 ; // I use this for my indies; call once on init() & use where Point supposed to be used in start() 

double Poin() 
{ 
   int d = Digits ;
   switch (d){
   case 2 : { return ( Point ); break ;}
   case 4 : { return ( Point ); break ; }
   case 3 : { return ( Point * 10 ); break ;}
   case 5 : { return ( Point * 10 ); break :}
   default : return ;
} // I just come up with this. Untested but should be ok/robust. To be used to replace Point for trade parameters calculations. 

şerefe, ~ kamera hücresi

İşte kullandığım soruna alternatif bir çözüm ...

 int init()
  {
   double SymPoint;
   if ( Point == 0.00001 ) SymPoint = 0.0001 ; //5 digits
   else if ( Point == 0.001 ) SymPoint = 0.01 ; //3 digits
   else SymPoint = Point ; //Normal
   
   return ( 0 );
  }

Ardından, Point değişkeni yerine SymPoint değişkenini kullanın. Cameo'ya çok benzer

 

İşleri biraz daha karıştırmak için, BrocoTrader çeşitli menkul kıymetleri için 0 ila 5 basamaklı menkul kıymetlere sahiptir...

 
kennyhubbard :

Merhaba 7bit,

Bence kurşun geçirmez kod oluşturmaya çalışmakta haklısın...... ama her zaman sınırlar olacak.

Her biri kendi para birimi çifti son ekine sahip (birden çok kaynaktan tek bir toplu beslemenin aksine) farklı likidite sağlayıcılarının birleşik bağımsız beslemesini test ettikleri The Collective FX için demo beslemesine bakmanız yeterlidir (bulduk mu? Son ek için bir kullanım?), sorunun kapsamını anlamak için. Bu, 1 platform içerisinde EURUSD_fx veya EURUSDm veya EURUSD_dbfx arasından istediğiniz gibi seçim yapabileceğiniz anlamına gelir. Bazıları 4 haneli fiyatlandırma ve diğer 5 haneli fiyatlandırma olduğundan, bu tek başına stratejinizde büyük bir delik açacak.

"if (Digits == 3 || Digits == 5)", yalnızca 2 tür broker aldığınız, yani tam pip beslemeleri olan basit bir önermede çalıştığı için bulacağınız kadar kapsamlıdır. ve 1/10 pip beslemesine sahip olanlar. Bu dava 2/3/4/5 döviz çiftlerini ve brokerleri kapsar.

Kendi bilgilerime göre, istisna olabilecek herhangi bir vaka gördünüz mü? Altın söz konusu olduğunda, her zaman 2 basamaklı bir fiyat teklifi olmuştur ve yeni 1/10'luk pip brokerleri bunu 3 basamaklı olarak alıntılamaktadır, bu nedenle bu durum bile iyi bir şekilde ele alınmaktadır.

Bir genel çözüm bulmaya çalışmak yerine, bulduğunuz istisnaları bu şekilde ele almanızı ve belki de belirli bir sorunu sabit kodlamanızı öneririm.


Bu konuşma ortaya çıktığında fark ettiğim bir şey, insanların bir son ekten bahsetmeleri, ancak asla bir önek hakkında konuşmamaları. Bir önek olması da mümkündür. Ön eki olan bir komisyoncuyla karşılaştım.

Bu konudaki düşüncelerim buradaki orijinal posterle uyum içinde, müşterilerim için mümkün olduğunca sağlam ürünler istiyorum, daha sonra düzeltmek için daha fazla kodlamayı riske atmayı umursamıyorum. Kodumun tamamı bu değişikliğin etrafına sarılabilir ve onu değiştirmek için binlerce kod satırından geçmek bana birkaç geliştirici saatine mal olabilir. Bu yüzden ilk seferde doğru yapın, geri dönüp düzeltme riskini ve masrafını azaltır. Bunun bir hata olduğuna da katılıyorum, ancak kodumuzdaki bir hata değil, MQL'deki bir zayıflık kadar.

Ancak, ben de bir çözüm düşünüyordum. Çözümlerimden biri, sembol listesini gözden geçirmek ve ona ulaşmak için alt diziyi kullanarak EURUSD'yi bulmaktı. Ardından teklif değerini alın. Teklif değerine sahip olduğumda, bir doubletostr yapabilir, ardından dizedeki karakterleri strlen veya benzeri bir şey gibi saymanın bir yolunu bulabilirim. Sırtım ağrıyor ama bana oldukça sağlam olacak 4 veya 5 basamaklı bir belirleme verebilir. Bundan Altın gibi tuhaflıklar için temelimi oluşturabilirim.

Bu sadece bir teori, henüz denemedim. Mevcut projeleri halletmeye çalışmakla çok meşgulüm.

 

EA'mda bu kodu Pip hesabı için kullanıyorum - bu Pip'i her yerde kullanıyorum SL, TP, TS gibi piplere girilen harici bool ile uğraşıyorum veya piplerde kar görmek istiyorum .. 3 farklı broker üzerinde test edildi - fark üzerinde sorun yok çiftler, DAX 1/2 ondalık sayılar ... ya önceki gönderilere benzer göründüğünü biliyorum, ancak işlevsel canlı...


Pip = Point ;
if ( Digits == 2 || Digits == 4 || Digits == 6 ) Pip = 100 * Point ;
else if ( Digits == 1 || Digits == 3 || Digits == 5 ) Pip = 10 * Point ; 

diğer indis'imde de JPY sembolünü aramaya çalışıyorum ... :-)

Tmp_int = StringFind ( Symbol (), "JPY" , 0 );
if (Tmp_int< 0 ) Pip = 10000 ;
else Pip = 100 ;
 
seic :

EA'mda bu kodu Pip hesabı için kullanıyorum - bu Pip'i her yerde kullanıyorum SL, TP, TS gibi piplere girilen harici bool ile uğraşıyorum veya piplerde kar görmek istiyorum .. 3 farklı broker üzerinde test edildi - fark üzerinde sorun yok çiftler, DAX 1/2 ondalık sayılar ... ya önceki gönderilere benzer göründüğünü biliyorum, ancak işlevsel canlı...


diğer indis'imde de JPY sembolünü aramaya çalışıyorum ... :-)

JPY aramak yerine her para birimi için "Puan"ı bulmak istiyorum. Bu denedim:

   ObjectSetText ( "pi_Pair01" , MarketInfo (Pair01, MODE_POINT ));

Dolayısıyla beklenti, Pair01'de depolanan çift için ilgili değeri vermek olacaktır. Ancak bu sadece 0 döndürür. Neden bu? Örneğimde Pari01 "AUDCAD" ve gösterge bir EURUSD grafiğine eklenmiştir.

Daha fazla deney yaptığımda, bunun bazı para birimleri için işe yaradığını, ancak diğerleri için çalışmadığını görüyorum. Bu oldukça kafa karıştırıcı. MODE_DIGITS daha iyi çalışıyor gibi görünüyor. Nasıl olabilir?

pi

 
seic :

EA'mda bu kodu Pip hesabı için kullanıyorum - bu Pip'i her yerde kullanıyorum SL, TP, TS gibi piplere girilen harici bool ile uğraşıyorum veya piplerde kar görmek istiyorum .. 3 farklı broker üzerinde test edildi - fark üzerinde sorun yok çiftler, DAX 1/2 ondalık sayılar ... ya önceki gönderilere benzer göründüğünü biliyorum, ancak işlevsel canlı...

 if ( Digits == 2 || Digits == 4 || Digits == 6 ) Pip = 100 * Point ;

Sadece 5 basamaklı bir komisyoncu olduğunuz için. 4 basamaklı bir komisyoncuda PIP ve Point aynıdır .
TİCK nedir? - MQL4 ve MetaTrader 4 - MQL4 programlama forumu

 

Ve InstaForex'in USDSEK ve USDNOK için 4, EURUSD için 5 rakamı vardır.


Bu yüzden, kene değil pip miktarını almak için her teklif para birimi için bir ayara sahip bir diziye sahip olmanız gerektiğini düşünüyorum.

Neden: