MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 76

 
TYRBO :
fiyatları karşılaştırarak sorunu çözdü
Bir test cihazında mı? Değişken spreadli bir hesaptaki gerçek piyasada, başabaş fiyatı her tikte değişecektir.
 
Artyom Trishkin :

Bu bağlamda, neye öncülük ediyorum:

  1. Mümkün olduğunca kene başına en az döngü elde etmemiz gerekiyor.
  2. Piyasa emirleri ve pozisyon verilerini içeren bir kalıcı diziye ve silinmiş/kapanmış emir ve pozisyon verilerini içeren bir diziye ihtiyacımız var.
  3. Bir işlevde yerel olarak bir diziniz varsa, ona yeniden erişmek için bir sonraki doldurma gerekir. Onu bir kez yeni bir onay işaretiyle doldurmanızı öneririm - bu, dizinin global olduğu anlamına gelir - aksi takdirde işlev çıktığında onu kaybederiz.
  4. İçinde (dizide) bir şey bulmak için, dolu bir diziye ve bulunan verileri döndürecek fonksiyonlara ihtiyacımız var. Zaten fonksiyonların içinde, gerekli hesaplamalar için yardımcı diziler bildirebilirsiniz.

Buna dayanarak, kapalı ve açık emirler ve pozisyonlar için global dizilere sahip olmak hala daha iyidir. Yeni bir onay işaretlendiğinde, gereklisayıda emir/pozisyonu bir kez inceleriz ve bunlarla iki diziyi doldururuz. Ve sonra, aynı tık üzerinde, onlardan ihtiyacımız olan tüm verileri alıyoruz. Ayrıca sadece son kapanan/açık olan emir/pozisyon ve tüm verileri hesaplanmakla kalmaz, kısmi kapanma durumunda tüm pozisyonların tüm ebeveyn ve çocuk biletleri aranır. Buna göre, herhangi bir zamanda, bir kereden fazla kısmen kapatılmışsa, bu veya bu pozisyonun hangi biletten kaynaklandığını görebilirim - tüm bunlar zaten bir zamanlayıcıda çalışan bir sınıfta çalışır. Pekala, toplam döngü sayısı az olan ihtiyacım olan başka birçok veriye sahibim. Test cihazı için diziler için gerekli geçmiş derinliği ayarlanır.

Vb. ...

Afedersiniz. Isho Statik olan yerel dizilerin kaybolmadığını (karşıt olarak değil, ek olarak) ekleyeceğim. Yani, koşullar izin veriyorsa, bunları küresel düzeyde ilan etmeden yapabilirsiniz.

 
P./S.: Tabii ki, kendi "bencil" ilgime dayanarak ekliyorum))). Çünkü geçerli durumlarda local ile static kullanabilirim.
 
Vitaly Muzichenko :

Daha önce, döngü içinde olağan Sor ve Bid vardı ve her şey mükemmel çalışıyordu, şimdi yavaş yavaş ilk beşe yeniden yazıyorum. Yani fiyat çok hızlı değişebilir ve durum, seviyenin izin verilen durma seviyesinden daha az olacağı ve bu da bir hataya yol açacağı anlamına gelir.

Güncel fiyatları almak için bu " SymbolInfoTick " şapkasının gerekli olduğunu anlıyorum?

Bu nedenle, mql4'te gerçek Ask ve Bid'i almak için her durumda bir yenileme çağırmak gerekiyordu. Ve, SymbolInfoTick () çağrısına kıyasla yükün değişmesi pek mümkün olmadığı ortaya çıktı.

Sadece burada böyle bir ek var, güncel fiyatların hatasız alınması için böyle bir döngüde SymbolInfoTick () yazıyorum

         do
         while (! SymbolInfoTick ( _Symbol , mqlTick));

İlk seferde normal fiyatlar alırsak, bu döngü yürütme süresini artırmaz. Ve eğer bir tür başarısızlık varsa, o zaman tekrar etmek, cari fiyatlar yerine neyin ne olduğunu bilmekten daha iyidir.

 
Alexey Viktorov :

Bu nedenle, mql4'te gerçek Ask ve Bid'i almak için her durumda bir yenileme çağırmak gerekiyordu. Ve, SymbolInfoTick () çağrısına kıyasla yükün değişmesinin pek mümkün olmadığı ortaya çıktı.

Sadece burada böyle bir ek var, mevcut fiyatların hatasız alınması için böyle bir döngüde SymbolInfoTick () yazıyorum

         do
         while (! SymbolInfoTick ( _Symbol , mqlTick));

İlk seferde normal fiyatlar alırsak, bu döngü yürütme süresini artırmaz. Ve eğer bir tür başarısızlık varsa, o zaman tekrar etmek, cari fiyatlar yerine neyin ne olduğunu bilmekten daha iyidir.

Açıkça, ama nereye koymalı, döngünün içine mi yoksa öncesine mi?
 
Vitaly Muzichenko :
Açıkça, ama nereye koymalı, döngünün içine mi yoksa öncesine mi?
Yani cari fiyatlar alınana kadar bu ayrı bir döngüdür. Ve nereye koyduğun zaten tartışıldı. Alakasız fiyatlara sahip bir pusu çeşidi varsa, onu sipariş döngüsüne koymak gerekir.
 
Alexey Viktorov :

Bu nedenle, mql4'te gerçek Ask ve Bid'i almak için yine de bir yenileme çağırmak zorundaydı. Ve, SymbolInfoTick () çağrısına kıyasla yükün değişmesinin pek mümkün olmadığı ortaya çıktı.

Sadece burada böyle bir ek var, mevcut fiyatların hatasız alınması için böyle bir döngüde SymbolInfoTick () yazıyorum

         do
         while (! SymbolInfoTick ( _Symbol , mqlTick));

İlk seferde normal fiyatlar alırsak, bu döngü yürütme süresini artırmaz. Ve eğer bir tür başarısızlık varsa, o zaman tekrar etmek, cari fiyatlar yerine neyin ne olduğunu bilmekten daha iyidir.

Ya hiç almazsa? Döngüyü nasıl yavaşlatırsınız?
 
Artyom Trishkin :
Ya hiç almazsa? Döngüyü nasıl yavaşlatırsınız?

Evet, mantıksal olarak, örneğin, terminalin bağlantısı kopmuş olabilir - bunun birçok nedeni var, benim için günde 50 kez bağlantısını kaybediyor.

Güncel fiyatları almak ve aynı zamanda daha az kaynak kullanmak nasıl daha iyi, size hatırlatmama izin verin - net trol için.

 
Vitaly Muzichenko :

Evet, mantıksal olarak, örneğin, terminalin bağlantısı kopmuş olabilir - bunun birçok nedeni var, benim için günde 50 kez bağlantısını kaybediyor.

Güncel fiyatları almak ve aynı zamanda daha az kaynak kullanmak nasıl daha iyi, size hatırlatmama izin verin - net trol için.

10. sayfaya bakın - geri, iyi bir shemka var
 
trader781 :
10. sayfaya bakın, iyi bir plan var
Bulamadım ve burada hatırlamıyorum.