Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 32
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
Göstergenin hazır olup olmadığını bu şekilde kontrol ediyorum ( OnCalculate'in en başında)
ayrıca bir dönem kontrolü de ekleyebilirsiniz
1. Sadece bir açıklama. Şimdi aynı şeyden bahsettiğimiz açık.
2. Bunu anladım, ancak bunun için dizileri çevirmenin gerekli olduğuna katılmıyorum. İki terminal için bir göstergeye sahip olmak gerekli mi??? 2'si 1 arada tırpan ve balta yapmakla neredeyse aynı.
3. Buffer[] anladığım kadarıyla CopyBuffer() işlevinde alıcı tarafından sadece 1 gösterge değeri almak için kullanılıyor.
4. En önemli şeye dikkat etmediniz. Gösterge değerinin kopyalanmasının başlangıcı, çubuk indeksine göre değil, i-inci çubuğun zamanına göre belirlenmelidir.
1. İyi.
2. Diziyi çeviriyorum çünkü göstergeyi dörtten yeniden yazıyorum - içindeki her şey olması gerektiği gibi çalışıyor, tüm veriler doğru şekilde elde ediliyor. İçindeki her şey, verileri tam olarak döngüde okundukları sırayla almaya bağlıdır. Tamponu çevirmezseniz, göstergeyi sıfırdan yazmanız gerekecek - neden? Oldukça karmaşık. Bu gösterge yalnızca yerel olmayan bir TF'den veri alma hatasına bir örnek olarak verilmiştir.
3. Hayır. Veriler, döngüde birer birer Tampon[]'a girilir - döngünün her yinelemesinde, AO()'dan elde edilen bir değer girilir
4. "Kopyalamaya başla" ile ne demek istiyorsunuz?
1. İyi.
2. Diziyi çeviriyorum çünkü göstergeyi dörtten yeniden yazıyorum - içindeki her şey olması gerektiği gibi çalışıyor, tüm veriler doğru şekilde elde ediliyor. İçindeki her şey, verileri tam olarak döngüde okundukları sırayla almaya bağlıdır. Tamponu çevirmezseniz, göstergeyi sıfırdan yazmanız gerekecek - neden? Oldukça karmaşık. Bu gösterge yalnızca yerel olmayan bir TF'den veri alma hatasına bir örnek olarak verilmiştir.
3. Hayır. Veriler, döngüde birer birer Tampon[]'a girilir - döngünün her yinelemesinde, AO()'dan elde edilen bir değer girilir
4. "Kopyalamaya başla" ile ne demek istiyorsunuz?
2. Hiçbir şey 0'dan Rate_total-1'e bir döngü oluşturmayı engellemez
3. Evet, bir yerde bir şeyler karıştırdım.
4. Kodunuzda
ile değiştirilmelidir
"Nereden başlıyoruz" veya "hangi tarihten itibaren" gösterge değerlerinin alıcı dizisine kopyalanmasının başlangıcıdır.
3. Evet, bir yerde bir şeyler karıştırdım.
4. Kodunuzda
ile değiştirilmelidir
"Nereden başlıyoruz" veya "hangi tarihten itibaren" gösterge değerlerinin alıcı dizisine kopyalanmasının başlangıcıdır.
Değeri döngü indeksine göre okuyorsam neden tarihi geçeyim? Bu test göstergesini çalıştırdınız mı? Ayarlarda her zaman yalnızca bir verilen TF'den AO çekiyor. Mevcut TF'yi nasıl değiştirirseniz değiştirin, AO grafiği her zaman ayarlarda verilen TF'ye karşılık gelir.
Ve tam o sırada tüm veriler yarı yarıya bir günahla döndürülür, ancak yeniden yaptığım göstergemde, veriler yerel olmayan bir TF'den döndürülmez - ve en azından çatlak ...
Bu test göstergesine artık ihtiyaç yoktur - zaten yerel olmayan bir TF'den veri döndürür. Ama benimkinde - hayır, ama verileri tamamen aynı şekilde alıyorum.
Değeri döngü indeksine göre okuyorsam neden tarihi geçeyim? Bu test göstergesini çalıştırdınız mı? Ayarlarda her zaman yalnızca bir verilen TF'den AO çekiyor. Mevcut TF'yi nasıl değiştirirseniz değiştirin, AO grafiği her zaman ayarlarda verilen TF'ye karşılık gelir.
Ve tam o sırada tüm veriler yarı yarıya bir günahla döndürülür, ancak yeniden yaptığım göstergemde, veriler yerel olmayan bir TF'den döndürülmez - ve en azından çatlak ...
Bu test göstergesine artık ihtiyaç yoktur - zaten yerel olmayan bir TF'den veri döndürür. Ama benimkinde - hayır, ama verileri tamamen aynı şekilde alıyorum.
Sıfır çubuğu H4, DÖRT çubuk H1 içerdiğinden. Ve H4 dönemi için gösterge değerini H1 döneminin 2. indeksine göre talep ederseniz, H4 dönemi için 2. çubuktaki gösterge değerini alırsınız.
Yazdıklarımı anlamakta güçlük çekiyorum...
Şu anki saat 13:35. Mevcut çubuğun açılma zamanı H1 = 13:00. Gösterge değerlerini bar indeksi =1, yani mevcut H1 döneminin bar 12:00'sine göre kopyalamaya çalışıyorsunuz. Ve saat 8:00'in H4 zamanında 12:00 yerine alırsınız.
H1 için ilk bar 12:00
H4 için ilk çubuk 8:00
Ve burada ve orada çubuğun indeksi ilk ...
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
fxsaber , 2017.04.12 08:38
Küçük bir hack. Atama atlamaTicaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Eski TF'den gösterge verileri alınamıyor
Artyom Trishkin , 2017.04.14 01:23
Göstergedeki dördüncü gün için, standart AO göstergesinin verilerini daha yüksek zaman diliminden almaya çalışıyorum ve hala hiçbir şey...
Döngüde AO verilerini okudum, ancak döngüde tarihsel veri yok. Mevcut çubukta veri var. Amaç ne? Neyi yanlış yapıyorum?
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri
fxsaber , 2017.02.27 18:40
Bahşiş için teşekkürler! Vahşi doğada, bu SymbolInfoMarginRate'dir. Yani şimdidouble GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
return (( SymbolInfoTick (Symb, Tick) && SymbolInfoMarginRate (Symb, ORDER_TYPE_BUY , MarginInit, MarginMain)) ? MarginInit * Tick.ask *
SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE ) / ( SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_SIZE ) * AccountInfoInteger ( ACCOUNT_LEVERAGE ) ) : 0 );
}
MT5'te farklı yönlerde tamamen farklı marj gereksinimleri olabileceği açıkça anlaşılmalıdır. Onlar. tek MT4 seçeneği yuvarlanmayabilir. Forex, elbette, bu olmayacak. Ama hatırlaman gerek. Bu nedenle, genel olarak, böyle yazmanız gerekir.
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate (symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_VALUE ) /
( SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_SIZE ) * AccountInfoInteger ( ACCOUNT_LEVERAGE )) : 0 ;
return (Res);
}
Bir seçim 0 döndürebilir. BCS çarpıştı.
Böyle mi yaptı:
Bana gelince, birçok şeyi "yanlış" yapıyorsun. Lütfen ne yapılması gerektiğini açıklayın: sırayla, nokta nokta.
Tam olarak yanlış olan nedir? Kulağa gelen soru buydu - yerel olmayan bir zaman diliminden gösterge verilerini almak için neyi yanlış yapıyorum?
Örnek: gösterge M1'de başlatılır ve AO'dan gelen veriler M5'ten alınmalıdır. Yani - sınırımız> 1 iken (geçmişi yeniden hesaplamamız gerekiyor), o zaman M5'li AO, veri eksikliği hatasıyla sıfırları döndürür. Tüm geçmiş hesaplanır hesaplanmaz (limit==0), M5 ile AO'dan gelen veriler gelmeye başlar.