OnInit() içinde, sembolün zaman serilerine bir çağrı yapın: iTime(Symbol,Timeframe,1);
OnTick()'te, en başta, en azından aynı if( iTime(Symbol,Timeframe,10)==0) return;
Daha sonra danışman yeni bir çubuk tanımına ulaşmayacak ve bir sonraki onay işaretini bekleyecektir.
OnInit()'te, zaman serisi verilerini istedik, böylece veri sayfalamayı etkinleştirdik.
OnTick()'te, EA için gerekli minimum geçmişin kullanılabilirliğini kontrol ederiz ve henüz mevcut değilse, bir sonraki onay için beklemeye bırakırız.
Ve EA tarafından istenen tüm veriler alınana kadar bir sonraki onay işaretini beklemeye devam edecektir.
Gerekli tüm veriler indirilip alınır alınmaz EA, yeni bir çubuk ve ihtiyaç duyduğu geçmişle çalışmaya başlayacaktır.
Seri verileri güncel tutmak için en az iki dakikada bir erişim sağlamak gerekir. Yaklaşık bir buçuk dakika (90 saniye) için ikinci bir zamanlayıcı yapın ve içindeki istenen sembolün herhangi bir zaman serisine bakın, örneğin iTime(Symbol,Timeframe,1); Alınan verileri kontrol etmeden - sadece hikayeyi "taşıyın". Ardından sembol üzerindeki tüm veriler her zaman güncel olacaktır.
Tabii ki, tüm TF'ler için yeni bir çubuğu kontrol etme seçeneğini deneyeceğim, ancak eşzamanlı olarak olmuyor mu, MT4 değil. Ve sorun barda değil, göstergeden çağrılan göstergelerin çalışmamasında ve bu da EA'dan çağrılıyor.
Bir dakika çalışıyorum, bu yüzden fikre göre hikaye her zaman alakalı olmalı.
Ve tüm bu kontrolleri test için yapıyoruz, ancak gerçek hayatta sadece işi yavaşlatacaklar, çünkü her şey test cihazının sabit koşullarında olduğundan daha yavaş çalışıyor, göstergenin gerçek bir hesapta doğru çalıştığını tekrar ediyorum.
Ancak bu yaklaşım evrensel değildir, çünkü tüm göstergeler nasıl listelenmelidir, test cihazının ortamının doğru çalışmasını sağlamak için daha evrensel başka bir yöntem var mı?
İyi günler, genç bir emekli MT5'te böyle düğmeler yapmak istedi.
Bana MT5'te bu tür düğmeleri uygulayabileceğinizi söyleyin, belki birileri zaten kodu paylaşmıştır ...
"Başlat" düğmesi ve "Tüm siparişleri kapat" düğmesi. ekranın etrafında hareket ettirin. MT5, tüm çiftler, tüm zaman dilimleri, 4/5 işaretleri. yüzde lot dahil ilk lot 0.01. Kayma ve yeniden fiyat teklifi sağlayın.
"Başlat" düğmesinin işlevleri
Fiboyu manuel olarak esnettikten sonra 1'den 11'e kadar emirleri hemen BAY'de açmanız veya daha önce cari fiyattan SATIN almanız gerekiyor.
ayarlarda kaç tane emir açılacağını ve hangilerinin (1, 2, 5, 7 veya hepsi 11) genişletilmiş fibo yönünde seçilerek.
Her sipariş için ayarlarda lot miktarını manuel veya dinamik olarak artırma/azaltma belirtmek mümkün oldu.
TP - Kâr Al , 61.8 fibo seviyelerinde 1'den 11'e artan sırayla ayarlanır; 78.6; 100.0;
Merhaba, CSymbolInfo sınıfından Ask and Bid fiyatlarında aşağı yukarı açıksa, o zaman örneğin, SessionInterest veya SessionBuyOrdersVolume veya SessionPriceLimitMin nasıl alınır, Sıfır verir, nedenini anlayamıyorum ...
Merhaba, CSymbolInfo sınıfından Ask and Bid fiyatlarında aşağı yukarı açıksa, o zaman örneğin, SessionInterest veya SessionBuyOrdersVolume veya SessionPriceLimitMin nasıl alınır, Sıfır verir, nedenini anlayamıyorum ...
Ticaret sunucusu bu bilgiyi yayınlarsa, alırsınız.
Kural olarak, bu bilgiler Brokerlar tarafından hisse senedi sembolleri için yayınlanır (Broker ve işlem merkezlerini karıştırmayın).
Ticaret sunucusu bu bilgiyi yayınlarsa, alırsınız.
Kural olarak, bu bilgiler Brokerlar tarafından hisse senedi sembolleri için yayınlanır (Broker ve işlem merkezlerini karıştırmayın).
Broker Açılışı, RTS Endeks Vadeli İşlemleri, en az SessionPriceLimitMin ve SessionPriceLimitMax yayınlaması gerektiğini düşünüyorum (çünkü anladığım kadarıyla açılış fiyatlarında piyasa emirlerinde kullanılıyorlar). Açılış gerçekten tercüme etmiyor mu ... Örneğin şunu yazıyorum:
Mevcut TF'ye kadar herhangi bir TF'de herhangi bir kayma ile son çubuğun tarihini doğru bir şekilde belirleyecek bir kod parçası yazmak için yardım istiyorum.
int N_bar= iBarShift ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (),PERIOD_H1, 0 )); //номер текущего бараdatetime StopDt= iTime ( Symbol (), PERIOD_CURRENT ,N_bar+ 1 ); //только для минуток и то может быть не корректно!Print ( "StopDt_Shift=" , TimeToString (StopDt, TIME_DATE | TIME_MINUTES ));
Böyle bir kod genellikle çalışır, ancak yalnızca mevcut çubuğun başlangıç zamanı gerçek (en yakın dakikaya yuvarlanmış) çubukla çakışırsa, mevcut grafiğim M1 olduğundan. Ve eşleşmezse, farklı TF'lere bağlı olarak çeşitli olaylar ortaya çıkar. Örneğin, son M1 çubuğunun son saatteki başlangıç tarihini bulmam gerekiyor, eğer 12 saat ise sorun yok, saat 12:59 ve 13 saat ise, o zaman saat Saatlik çubuk 14:00'te ve 14:05'te açılmadığından ve iBarShift işlevi en yakın çubuğu 14:00'a yani 13:59'a döndürdüğünden zaten 13:58 olacaktır.
Eklendi: bunu yaptım, işe yarıyor gibi görünüyor
datetime StopDt= iTime ( Symbol (), PERIOD_CURRENT , Bars ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (),TF_iDeltaP,_Shift- 1 ), iTime ( Symbol (), PERIOD_CURRENT , 0 )));
Broker Açılışı, RTS Endeks Vadeli İşlemleri, en az SessionPriceLimitMin ve SessionPriceLimitMax yayınlaması gerektiğini düşünüyorum (çünkü anladığım kadarıyla açılış fiyatlarında piyasa emirlerinde kullanılıyorlar). Açılış gerçekten tercüme etmiyor mu ... Örneğin şunu yazıyorum:
OnInit() içinde, sembolün zaman serilerine bir çağrı yapın: iTime(Symbol,Timeframe,1);
OnTick()'te, en başta, en azından aynı if( iTime(Symbol,Timeframe,10)==0) return;
Daha sonra danışman yeni bir çubuk tanımına ulaşmayacak ve bir sonraki onay işaretini bekleyecektir.
OnInit()'te, zaman serisi verilerini istedik, böylece veri sayfalamayı etkinleştirdik.
OnTick()'te, EA için gerekli minimum geçmişin kullanılabilirliğini kontrol ederiz ve henüz mevcut değilse, bir sonraki onay için beklemeye bırakırız.
Ve EA tarafından istenen tüm veriler alınana kadar bir sonraki onay işaretini beklemeye devam edecektir.
Gerekli tüm veriler indirilip alınır alınmaz EA, yeni bir çubuk ve ihtiyaç duyduğu geçmişle çalışmaya başlayacaktır.
Seri verileri güncel tutmak için en az iki dakikada bir erişim sağlamak gerekir. Yaklaşık bir buçuk dakika (90 saniye) için ikinci bir zamanlayıcı yapın ve içindeki istenen sembolün herhangi bir zaman serisine bakın, örneğin iTime(Symbol,Timeframe,1); Alınan verileri kontrol etmeden - sadece hikayeyi "taşıyın". Ardından sembol üzerindeki tüm veriler her zaman güncel olacaktır.
Tabii ki, tüm TF'ler için yeni bir çubuğu kontrol etme seçeneğini deneyeceğim, ancak eşzamanlı olarak olmuyor mu, MT4 değil. Ve sorun barda değil, göstergeden çağrılan göstergelerin çalışmamasında ve bu da EA'dan çağrılıyor.
Bir dakika çalışıyorum, bu yüzden fikre göre hikaye her zaman alakalı olmalı.
Ve tüm bu kontrolleri test için yapıyoruz, ancak gerçek hayatta sadece işi yavaşlatacaklar, çünkü her şey test cihazının sabit koşullarında olduğundan daha yavaş çalışıyor, göstergenin gerçek bir hesapta doğru çalıştığını tekrar ediyorum.
Problemi bu şekilde çözerken, ana koda başlamadan önce başarısız olan göstergelerin hazır olup olmadığını kontrol ettim.
Ancak bu yaklaşım evrensel değildir, çünkü tüm göstergeler nasıl listelenmelidir, test cihazının ortamının doğru çalışmasını sağlamak için daha evrensel başka bir yöntem var mı?
OnTick()'te, EA için gerekli minimum geçmişin kullanılabilirliğini kontrol ederiz ve henüz mevcut değilse, bir sonraki onay için beklemeye bırakırız.
Ve EA tarafından istenen tüm veriler alınana kadar bir sonraki onay işaretini beklemeye devam edecektir.
Gerekli tüm veriler indirilip alınır alınmaz EA, yeni bir çubuk ve ihtiyaç duyduğu geçmişle çalışmaya başlayacaktır.
Tarihin kullanılabilirliğini nasıl kontrol etmeyi önerirsiniz, bir şey anlamadım ...
Bu satırı MQL4 işlevinden önce ekleyin
ve MT5'te çalışacak.
Parlak. Çok teşekkürler!
Bana MT5'te bu tür düğmeleri uygulayabileceğinizi söyleyin, belki birileri zaten kodu paylaşmıştır ...
Kayma ve yeniden fiyat teklifi sağlayın.
Merhaba, CSymbolInfo sınıfından Ask and Bid fiyatlarında aşağı yukarı açıksa, o zaman örneğin, SessionInterest veya SessionBuyOrdersVolume veya SessionPriceLimitMin nasıl alınır, Sıfır verir, nedenini anlayamıyorum ...
Merhaba, CSymbolInfo sınıfından Ask and Bid fiyatlarında aşağı yukarı açıksa, o zaman örneğin, SessionInterest veya SessionBuyOrdersVolume veya SessionPriceLimitMin nasıl alınır, Sıfır verir, nedenini anlayamıyorum ...
Ticaret sunucusu bu bilgiyi yayınlarsa, alırsınız.
Kural olarak, bu bilgiler Brokerlar tarafından hisse senedi sembolleri için yayınlanır (Broker ve işlem merkezlerini karıştırmayın).
Ticaret sunucusu bu bilgiyi yayınlarsa, alırsınız.
Kural olarak, bu bilgiler Brokerlar tarafından hisse senedi sembolleri için yayınlanır (Broker ve işlem merkezlerini karıştırmayın).
Broker Açılışı, RTS Endeks Vadeli İşlemleri, en az SessionPriceLimitMin ve SessionPriceLimitMax yayınlaması gerektiğini düşünüyorum (çünkü anladığım kadarıyla açılış fiyatlarında piyasa emirlerinde kullanılıyorlar). Açılış gerçekten tercüme etmiyor mu ... Örneğin şunu yazıyorum:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - danışmanınızdan
Dergide yalnızca Ask fiyatları alıyorum
Mevcut TF'ye kadar herhangi bir TF'de herhangi bir kayma ile son çubuğun tarihini doğru bir şekilde belirleyecek bir kod parçası yazmak için yardım istiyorum.
Böyle bir kod genellikle çalışır, ancak yalnızca mevcut çubuğun başlangıç zamanı gerçek (en yakın dakikaya yuvarlanmış) çubukla çakışırsa, mevcut grafiğim M1 olduğundan. Ve eşleşmezse, farklı TF'lere bağlı olarak çeşitli olaylar ortaya çıkar. Örneğin, son M1 çubuğunun son saatteki başlangıç tarihini bulmam gerekiyor, eğer 12 saat ise sorun yok, saat 12:59 ve 13 saat ise, o zaman saat Saatlik çubuk 14:00'te ve 14:05'te açılmadığından ve iBarShift işlevi en yakın çubuğu 14:00'a yani 13:59'a döndürdüğünden zaten 13:58 olacaktır.
Eklendi: bunu yaptım, işe yarıyor gibi görünüyor
Broker Açılışı, RTS Endeks Vadeli İşlemleri, en az SessionPriceLimitMin ve SessionPriceLimitMax yayınlaması gerektiğini düşünüyorum (çünkü anladığım kadarıyla açılış fiyatlarında piyasa emirlerinde kullanılıyorlar). Açılış gerçekten tercüme etmiyor mu ... Örneğin şunu yazıyorum:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - danışmanınızdan
Dergide yalnızca Ask fiyatları alıyorum