MQL4 Gerçek Zamanlı Saat (saniye saniye) - sayfa 5

 
7bit :

Bu sadece mql4'teki bir avuç satırdır (elbette Windows API'sini çağırmak için izin verilen DLL çağrılarına ihtiyacınız vardır, ancak hiçbir şey yüklemeniz gerekmez):

Bu betiği favorilerimde var ve tiklere ihtiyacım olduğunda onu grafiğe sürüklerim.


Ayrıca bunun sadece bir tik gönderen ve sonra çıkan ve bunu (one_tick.mq4) ALT+T kısayol tuşuna bağlayan döngü olmadan bir varyasyonu var ve şimdi sadece ALT-T tuşlarına basarak aktif grafiğe bir onay gönderebilirim. Hafta sonu boyunca, hesaplamalarını tetiklemek ve grafiklerini çizmek için start()'ı zorlamak için deneyler yaparken bazı stat-arb EA'larım için buna ihtiyacım var (aralığı değiştirmek için grafikteki satırları hareket ettirebilirim ve sonra yeni bir onay işaretine ihtiyacım var) hesaplamalarını güncelleyin).


7 Hiç dll içe aktarma kullanmadım, bu yüzden lütfen aşağıdakileri açıklayabilir misiniz?

+ Dll dosyalarını Meta Trader Client klasörüne eklemeniz gerekiyor mu?

+ Bu EA'yı MT istemcisinden nasıl etkinleştirebiliriz?

Lütfen bize Meta Trader'da DLL içe aktarma örnekleri verin

 
spidermagos :


7 Hiç dll içe aktarma kullanmadım, bu yüzden lütfen aşağıdakileri açıklayabilir misiniz?

+ Dll dosyalarını Meta Trader Client klasörüne eklemeniz gerekiyor mu?

+ Bu EA'yı MT istemcisinden nasıl etkinleştirebiliriz?

Lütfen bize Meta Trader'da DLL içe aktarma örnekleri verin

140 karakterden uzun bir metni okuma becerisini öğrenmedikçe, onu herhangi bir şekilde kullanmanın (hatta hangi amaçla kullanılabileceğini anlamanın) tamamen imkansız olacağını bildirdiğim için üzgünüm.

Başlangıç olarak, son mesajınızda alıntıladığınız metinden anlamı çıkarmaya çalışabilirsiniz. Daha sonra onu bir EA olarak değil, bir komut dosyası olarak tanımladığımı göreceksiniz, ayrıca herhangi bir dll yüklemeye gerek olmadığını yazdığımı ve hatta metnin bölümlerini bile bulabildiğimi öğrendiğimde büyük bir sürprizle karşılaşacaksınız. nasıl kullanılacağını anlatmıştım.

 
7bit :

140 karakterden uzun bir metni okuma becerisini öğrenmedikçe, onu herhangi bir şekilde kullanmanın (hatta hangi amaçla kullanılabileceğini anlamanın) tamamen imkansız olacağını bildirdiğim için üzgünüm.

Başlangıç olarak, son mesajınızda alıntı yaptığınız metinden anlamı çıkarmaya çalışabilirsiniz. Daha sonra onu bir EA olarak değil, bir komut dosyası olarak tanımladığımı göreceksiniz, ayrıca herhangi bir dll yüklemeye gerek olmadığını yazdığımı ve hatta metnin bölümlerini bile bulabildiğimi öğrendiğimde büyük bir sürprizle karşılaşacaksınız. nasıl kullanılacağını anlatmıştım.

Kibirinize, ingilizce becerilerinize ve muhtemelen kodlama örneğinize hayranım.

Ancak bir sorunu çözüm sunmadan çözmek, sadece sorudan kaçmaktır.

7 bit benim okuma becerilerimi ve tekniklerimi sorgulamak yerine neden programın tamamını yazıp kendini kanıtlamıyorsun. felsefe yapmak yerine!

Saniye saniye gerçek zamanlı saat yapmayı biliyor musunuz, bilmiyor musunuz? soru budur ? bu saat tabloda olmalı?

 

sadece 2 ve 2 ekleyebilirsiniz.

Gönderdiğim kodla birlikte sahte keneler oluşturmak için 7bit kodunu kullanın ve ihtiyacınız olan her şeye sahipsiniz.

ve btw, 7bit bu foruma katılan en iyi programcılardan biri gibi görünüyor...

//z

 

spidermagos :

küstahlığına hayranım

Teşekkür ederim.


örümcek kurtları :

neden tüm programı yazmıyorsun ve kendini kanıtlamıyorsun. felsefe yapmak yerine!

Komut dosyası tamamlandı ve tam olarak verdiğim özellikler dahilinde bağımsız olarak çalışıyor.

Bunu, göstergelerin uyku() gibi engelleme çağrılarını kullanmasına izin verilmemesi sorununu çözmek için bir öneri olarak gönderdim ve ayrıca göstergenin kendisinden zamanlayıcı olayları oluşturmanın başka bir yolu yok. Tüm saat sorununun bu tam alt probleminden hemen önce bu başlıkta bahsedildi ve sadece bu ve başka hiçbir şey tarafımdan ele alınmadı. Kendi başına tamamen bağımsız bir sorun olarak ele alınabilir ve benim betiğim bunun için genel (ve tamamen bağımsız) bir çözümdür ve benzer birçok senaryoda da uygulanabilir ve hatta farklı bir kullanım durumu için bir örnek verdim.

Eğer kod yazmak istiyorsanız, o zaman problem ayrıştırma becerisini öğrenmelisiniz ve aynı zamanda bir çözümü ve aynı zamanda bir kısmi çözüme rastladığınızda hemen bir çözümü tanıyabilmelisiniz.

 
//< This is EA : Compile and run in folder "/experts" >
 
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
static int iRunTime            ;
 
while  ( ! IsStopped () )
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
           iRunTime   = GetTickCount () - iTimeStamp                ;
           Sleep      ( iClockPeriod    - iRunTime                ) ;
       }
}
//</This is EA : Compile and run in folder "/experts" > 

 //< This is Indicator : Compile and run in folder "/experts/indicators" >
#property  indicator_chart_window
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
  
  
if     ( ( GetTickCount () - iTimeStamp ) < iClockPeriod )   return ;
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
  
 
       }
}
//</This is Indicator : Compile and run in folder "/experts/indicators" > 

Bu programları farklı tablolarda çalıştırın.

 
Ais :

Bu programları farklı tablolarda çalıştırın.


Ay ; 7bit doğru, bu işe yaramayacak! başlatma işlevi kene tıktır

Bu sorunu çözmek için dll ithalatına ihtiyaç vardır. ...

yani göstergelerden komut dosyalarını çağırma

 
7bit :

Teşekkür ederim.


Komut dosyası tamamlandı ve tam olarak verdiğim özellikler dahilinde bağımsız olarak çalışıyor.

Bunu, uyku () gibi engelleme çağrılarını kullanmasına izin verilmeyen göstergeler sorununu çözmek için bir öneri olarak gönderdim ve ayrıca göstergenin kendisinden zamanlayıcı olayları oluşturmanın başka bir yolu yok. Tüm saat sorununun bu tam alt probleminden hemen önce bu başlıkta bahsedildi ve sadece bu ve başka hiçbir şey tarafımdan ele alınmadı. Kendi başına tamamen bağımsız bir sorun olarak ele alınabilir ve benim betiğim bunun için genel (ve tamamen bağımsız) bir çözümdür ve benzer birçok senaryoda da uygulanabilir ve hatta farklı bir kullanım durumu için bir örnek verdim.

Eğer kod yazmak istiyorsanız, o zaman problem ayrıştırma becerisini öğrenmelisiniz ve aynı zamanda bir çözümü ve aynı zamanda bir kısmi çözüme rastladığınızda hemen bir çözümü tanıyabilmelisiniz.



7bit - bir göstergeden bir komut dosyasını nasıl çağırabilirsiniz?

bir örnek verebilir misin ?

 
spidermagos :

Anladığım kadarıyla Start() işlevi tık tık çalışıyor.

Bilgisayar saatinden gerçek zamanlı verileri kullanmanın ve her saniye güncellemenin bir yolu var mı? Tık tık değil de her saniye?

Eğer öyleyse lütfen bana biraz yardım edin.

Teşekkürler

merhaba, bir komut dosyası yerine ayrı bir onay gönderici uygulaması kullanabilir (birkaç ücretsiz yazılım vardır; google "mt4 onay gönderici") ve her 200 ms'de bir onay işareti oluşturmasını sağlayabilirsiniz., ardından bilgisayarınızın saatinin sık sık senkronize edildiğinden emin olun ve TimeCurrent() yerine TimeLocal() + hour_difference_between_yourtimezone_and_servertimezone * 3600 kullanın, çünkü oluşturulan kenelerle Start()'ı "yalnızca" çalıştırmaya zorlarsınız, TimeCurrent() kene aracınızdan gelmedikçe kendisini GÜNCELLEMEZ.. bu şekilde komisyoncu zamanınızı saniye saniye alırsınız.. bu hem göstergeler hem de EA'lar için işe yarar.. komik gerçek şu ki, sunucuları zaman senkronizasyonu dışında olan birkaç komisyoncu var, birkaç saniye gecikiyorlar ama sadece zaman damgası, ne yazık ki fiyat değil, farklı mumlar, M1 bazen momentum olduğunda tamamen farklı, lol
 

Öncelikle başlangıçta sahip olduğunuz mantığı bir fonksiyona koyun.

Ardından init() içinde bir uyku ile bir süre döngüsü yapın ve oradan işlevi çağırın. Uykunun milisaniye cinsinden olduğunu unutmayın.

Bu, fiyat değişikliğini beklemek yerine zamanlamayı kontrol etmenizi sağlayacaktır.

Program mantığınızın uygun olması koşuluyla mükemmel çalışır. Tek sorun, onu backtester'da çalıştıramamanız. Testinizi önce Start()'ı kullanarak yapın, ardından init()'e çevirin.