Roger :
Genellikle init bölümünde sadece bir kez kontrol ederim:
Kodunuz hatasız değil, 1 veya 2 (altın) veya diğer basamaklı Semboller var.
Daha iyi bir yol buldum (yine de birkaç broker ile test etmem gerekiyor). Eurusd adını bulmak için geçmiş klasöründe symbol.raw'ı okur ve ardından MarketInfo()'yu kullanır;
/** * determine the pip multiplier (1 or 10) depending on how many * digits the EURUSD symbol has. This is done by first * finding the exact name of this symbol in the symbols.raw * file (it could be EURUSDm or EURUSDiam or any other stupid name * the broker comes up with only to break other people's code) * and then usig MarketInfo() for determining the digits. */ double pointsPerPip(){ int i; int digits; double ppp = 1 ; string symbol; int f = FileOpenHistory( "symbols.raw" , FILE_BIN | FILE_READ ); int count = FileSize (f) / 1936 ; for (i= 0 ; i<count; i++){ symbol = FileReadString (f, 12 ); if ( StringFind (symbol, "EURUSD" ) != - 1 ){ digits = MarketInfo(symbol, MODE_DIGITS); if (digits == 4 ){ ppp = 1 ; } else { ppp = 10 ; } break ; } FileSeek (f, 1924 , SEEK_CUR ); } FileClose (f); return (ppp); }
Sadece bir para birimi için bir koddu. EA'nızı çoklu para birimleri için kullanmak istiyorsanız, her bir durum için ayrı ayrı hesaplamanız gerekir.
7bit :
Daha iyi bir yol buldum (yine de birkaç broker ile test etmem gerekiyor). eurusd adını bulmak için geçmiş klasöründe symbol.raw'ı okur ve ardından MarketInfo()'yu kullanır;
Daha iyi bir yol buldum (yine de birkaç broker ile test etmem gerekiyor). eurusd adını bulmak için geçmiş klasöründe symbol.raw'ı okur ve ardından MarketInfo()'yu kullanır;
Bu, symbol.raw dosyasını değiştirirlerse bozulur (ve MT4'ün eski sürümleriyle çalışmayabilir... gerçi bu muhtemelen bir sorun değildir).
Roger'ınkine benzer bir yöntem kullanıyorum ve henüz bana bir sorun yaratmadı.
Çoğu olasılık için işe yarayacaktır. Geleceğe uymayan birini bulursanız, bulduğunuzda o köprüyü geçmeniz yeterli.
CB
Çoğu olasılık için işe yarayacaktır. Geleceğe uymayan birini bulursanız, bulduğunuzda o köprüyü geçmeniz yeterli.
CB
//++++ These are adjusted for 5 digit brokers. double pips2points, // slippage 3 pips 3=points 30=points pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init() { if (Digits == 5 || Digits == 3) { // Adjust for five (5) digit brokers. pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; }
WHRoeder :
if ( Digits == 5 || Digits == 3 ) { // Adjust for five (5) digit brokers.Zaten yetersiz bulduğum şeyi tekrar ediyorsun. Digits değişkenini tek başına kullanmak soruna yardımcı olmaz (ilk gönderide tanımlanan sorun ben olabilirim), çünkü o anda hangi sembol üzerinde çalıştığını ve bu sembolün kaç basamaklı olması gerektiğini hesaba katmaz. Bazı egzotik çiftlerde 0'dan 5'e kadar herhangi bir sayıda rakam olabilir, sadece 5 veya 3'e karşı 4 veya 2 değil. Bu kadar basit olsaydı bu konuyu açmamıştım. Bu nedenle, hangi çiftte çalışırsa çalışsın, şimdi sadece eurusd'un rakamlarını kullanıyorum. En büyük problem eurusd'un gerçek adını bulmaktı ve şu ana kadar symbol.raw yöntemi en basit ve en güvenilir yöntem gibi görünüyor.
cloudbreaker :
Geleceğe uymayan birini bulursanız, bulduğunuzda o köprüyü geçmeniz yeterli.
Kırılmayacak kusursuz bir kod yazmaya çalışıyorum. (Bilerek) buggy kodu yazmak ve düzeltmeden önce bozulana kadar beklemek, yazılım geliştirmenin nasıl yapılması gerektiği konusundaki felsefeme uymuyor.
Geleceğe uymayan birini bulursanız, bulduğunuzda o köprüyü geçmeniz yeterli.
7bit wrote >>
Kırılmayacak kusursuz bir kod yazmaya çalışıyorum. (Bilerek) buggy kodu yazmak ve düzeltmeden önce bozulana kadar beklemek, yazılım geliştirmenin nasıl yapılması gerektiği konusundaki felsefeme uymuyor.
Kırılmayacak kusursuz bir kod yazmaya çalışıyorum. (Bilerek) buggy kodu yazmak ve düzeltmeden önce bozulana kadar beklemek, yazılım geliştirmenin nasıl yapılması gerektiği konusundaki felsefeme uymuyor.
Felsefenin güzelliği, pratiklik ile asenkron olarak çalışabilmesidir :)
-BB-
Belirli bir fiyata göre bir noktanın ne olduğunu bulmak ve ardından fiyatın rakamlarına kıyasla hangi hanede olduğuna karar vermek basit (belki de matematik açısından o kadar basit değil) meselesi değil mi?
Bunu başarmanın basit bir yolu, bir fiyat almak ve bir nokta eklemek olabilir ve sonucunuz aynı değilse, çarpanı aynı değilse, eşleşene kadar bir döngüde çoğaltıcınızı artırın.
Bunu başarmanın basit bir yolu, bir fiyat almak ve bir nokta eklemek olabilir ve sonucunuz aynı değilse, çarpanı aynı değilse, eşleşene kadar bir döngüde çoğaltıcınızı artırın.
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Doğru rakamları bulmak için daha karmaşık bir algoritmaya sahip olan var mı? Bence her şey önce EURUSD'nin sembol adının tam olarak nasıl olduğunu bulma sorununa bağlı ve gerisi kolay. Örneğin, "EURUSD" içeren veya onunla başlayan bir isim arayabilmem için mevcut tüm sembolleri numaralandırmanın kolay bir yolu var mı?