MQL4'te programlama üzerine çevrimiçi kitabın beta sürümü - Sergey Kovalev (SK.) - sayfa 3

 
Climber :
Bir hafta önce Meta Trader'ı ilk kez kurdum ve denedim. Bu terminalin daha önce benim tarafımdan kullanılanlardan (Rumus ve Forex Trader) çok daha uygun olduğu ortaya çıktı. İki yıl önce, Forex'i öğrendiğimde ve ilk demo hesabımı açtığımda, tüm bunları nasıl otomatikleştireceğim sorusu beni çok üzdü. Terminali açtığımda mail bölümünde Autotrading mesajını gördüm. Ve işte buradayım))) Kitabı yoğun bir şekilde okuyorum ve umarım yakın gelecekte mevcut stratejim hakkında ilk Uzman Danışmanımı yazacağım. Önceden programlama ile kesinlikle hiçbir ilgim yoktu, programlama öğreneceğimi hayal bile edemezdim))) Okudukça sorular ortaya çıktı, ama onlar da yol boyunca kayboldu. Soru ortaya çıktı, ileriye baktı ve tatmin oldu, çünkü birkaç bölümden sonra cevabı gördüm, her şeyi sırayla okumak için geri döndüm. Stratejiyi geçmiş veriler üzerinde test etme ve sonuç olarak stratejiyi ayarlama fırsatından özellikle etkilendim.
Kitap için çok teşekkür ederim.


Harika. Yeni bir MT kullanıcısısınız. Ve şu anda programlama hakkında neredeyse hiçbir şey bilmiyorsunuz.

Size şunu önermeme izin verin: Ayda en az 2-3 kez işlerin nasıl ilerlediğini bildirmek (ve dilerseniz daha sık yapabilirsiniz). Son derece ilginç olurdu.

Bu arada izin verirseniz bir sorum olacak. Burada, ilerleyen bölümlerde cevabını bulduğunuz bir sorunun ortaya çıktığını söylüyorsunuz. Böyle bir durumdan kaçınacak şekilde metni oluşturmaya çalıştım. Sorunun ne olduğunu açıklar mısınız?

 
SK. писал (а):
Tırmanıcı :
Bir hafta önce Meta Trader'ı ilk kez kurdum ve denedim. Bu terminalin daha önce benim tarafımdan kullanılanlardan (Rumus ve Forex Trader) çok daha uygun olduğu ortaya çıktı. İki yıl önce, Forex'i öğrendiğimde ve ilk demo hesabımı açtığımda, tüm bunları nasıl otomatikleştireceğim sorusu beni çok üzdü. Terminali açtığımda mail bölümünde Autotrading mesajını gördüm. Ve işte buradayım))) Kitabı yoğun bir şekilde okuyorum ve umarım yakın gelecekte mevcut stratejim hakkında ilk Uzman Danışmanımı yazacağım. Önceden programlama ile kesinlikle hiçbir ilgim yoktu, programlama öğreneceğimi hayal bile edemezdim))) Okudukça sorular ortaya çıktı, ama onlar da yol boyunca kayboldu. Soru ortaya çıktı, ileriye baktı ve tatmin oldu, çünkü birkaç bölümden sonra cevabı gördüm, her şeyi sırayla okumak için geri döndüm. Stratejiyi geçmiş veriler üzerinde test etme ve sonuç olarak stratejiyi ayarlama fırsatından özellikle etkilendim.
Kitap için çok teşekkür ederim.


Harika. Yeni bir MT kullanıcısısınız. Ve şu anda programlama hakkında neredeyse hiçbir şey bilmiyorsunuz.

Size şunu önermeme izin verin: Ayda en az 2-3 kez işlerin nasıl ilerlediğini bildirmek (ve dilerseniz daha sık yapabilirsiniz). Son derece ilginç olurdu.

Bu arada izin verirseniz bir sorum olacak. Burada, ilerleyen bölümlerde cevabını bulduğunuz bir sorunun ortaya çıktığını söylüyorsunuz. Böyle bir durumdan kaçınacak şekilde metni oluşturmaya çalıştım. Sorunun ne olduğunu açıklar mısınız?

Bir zamanlar programlama bilmeden program yazabileceğiniz işimi kolaylaştırmak için Sign of Misery programını kullandım. Orada eylemleri gerçekleştirilme sırasına göre belirtmek gerekiyordu (çok daha fazla olasılık olmasına rağmen, esas olarak bir otomatikleştirici olarak kullandım). Diyelim ki Excel'de 4 sütunda çok fazla değerim vardı (jeofizikten elektriksel keşif verileri, her 20 cm'de bir). Bu verilerin daha fazla işlenmesi için sadece metrelerden veri almam gerekiyordu (yani 0, 1, 2, 3, 4 ....). Bu programda, tuşları taklit etmek ve fare koordinatlarını değiştirmek için komutlarla bir eylem otomatikleştirici yaptım. exe'de derlenmiştir. Ama bu bir arasözdür. Bu programda bazen etiketler yapmak ve bu etiketlere geçişler için koşulları ayarlamak, yani bu döngüden çıkmak için bir koşulla bir işlem döngüsü gerçekleştirmek gerekiyordu. Bir Uzman Danışman oluşturma sorusuna gelince, kod yapısının genel bir görünümünü hayal ettim. Ancak kitabı okumaya başladığımda, programın yapım yapısı ve ardından her tikte tekrarlanan int start () işlevi ile biraz kafam karıştı, yürütme sırasında teklif fiyatını öğrenirsem, o zaman yazılır. Bir değişkene dönüştürülür ve yürütme sürekli olarak içinde saklanırsa, fiyatın ne zaman değiştiğini ve programın yeni fiyata dayalı olarak başka bir işlem gerçekleştirebileceğini nasıl bilebilirim? Programımdaki fiyatın, sürekli talep eden bir döngü koduyla güncelleneceğini düşündüm. Bir de şu sorum vardı: Bir işlevi çağırırken ve onu çalıştırırken, onu izleyen işlevin daha fazla yürütüleceğini hayal ettim, ancak kontrolün, başlangıçta belirtilen işlevi çağıran işlevi izleyen işleve geri döndüğü ortaya çıktı. Ama bu gerçek beni özellikle mutlu etti, çünkü benim için netleşti (diye düşündüm, peki ya bu işlevi takip eden diğer eylemler bu şekilde atlanıyorlar mı?). Şimdi şu tür bir sorum var: init işlevi yürütüldüğünde, benim için düzenlenen emir açılış fiyatının hesaplanmasının yanı sıra, hesaptaki bakiye bilgisine göre lot büyüklüğünün hesaplanması işlevinin de olacağını fark ettim. olarak adlandırılabilir; tamamlanmasından sonra, istenen işlem fiyatı için "bekleme" kodunu içereceğim başlatma işlevinin yürütülmesi başlayacak ve gelir gelmez emir açılacaktır (kar almak amaçlanmamıştır). TP değerinde bir sıçrama olursa, işe yaramayacağı ve bu sıçramanın potansiyel olarak TP değerinden daha karlı olduğu gerçeği nedeniyle yerleştirildi, bu yüzden siparişi bilinen son fiyattan kapatmak için bir emir oluşturmak istiyorum, ne zaman cari fiyat eşittir veya < veya > belirtilmiş) ; o zaman benim için şimdiye kadarki en gizemli şey, emrin "kapanış" fiyatını bekleyip başa dönmek için kodu nereye yazmam gerektiği, yani açılış için yeniden düzenlenmiş fiyatı hesaplama, bu fiyatı bekleme vb. bölümlere baktım, isimlerde gördüğüm bir şey gibi, yani bu soruma bir cevap olacak gibi. Okumayı bitirirken Açma ve sipariş verme bölümünü okuyorum. Dün sabah okumaya başladı.
Tabii ki, pozisyonumdaki ve iletişimsiz olduğu gibi işlerin ilerleyişini rapor edeceğim)) Yapıcı bir iletişim umuyorum.
İlginiz için teşekkür ederim.
 

Lütfen aşağıdaki mesajların metnini aşağıdaki gibi paragraflara ayırın. yazılanların manasını anlamak zor.

Climber :
Ancak kitabı okumaya başladığımda, programın yapım yapısı ve ardından her tikte tekrarlanan int start () işlevi ile biraz kafam karıştı, yürütme sırasında teklif fiyatını öğrenirsem, o zaman yazılır. bir değişkene dönüştürülür ve her zaman içinde saklanır, o zaman fiyatın ne zaman değiştiğini ve programın yeni fiyata göre başka bir şey yapabileceğini nasıl bilebilirim? Programımdaki fiyatın, sürekli talep eden bir döngü koduyla güncelleneceğini düşündüm.

Programın gerçek zamanlı olarak çalışması için, yeni bir fiyatın ortaya çıkması gerçeği ve bu fiyatın kendisi hakkında periyodik olarak bilgi almanız gerektiğini doğru bir şekilde kaydettiniz.

Aslında 2 yol var:

1. yol, bir fonksiyonu sonsuz bir döngüde çalıştırmak ve periyodik olarak ondan bir fiyat istemektir.
Ancak bu yöntemin dezavantajları vardır:
- istekler sık sık yapılırsa, bunun sonucunda iletişim kanalı aşırı yüklenir ve bilgisayar kaynakları boşa harcanır;
- Nadiren talepte bulunuluyorsa, talepler arasında yeni bir fiyatı kaçırma olasılığı vardır.

2. yöntem (MQ teknolojisinde ana yöntem olarak kabul edilir), gerekli kodu başlatma girişiminin terminale ait olması nedeniyle temelde farklıdır. Terminal sunucudan bilgi alır, yeni bir işaretin geldiğini anlar (yeni fiyat gerçeği ve fiyatın kendisi) ve bu temelde terminal start() işlevini başlatır. Bütün bunlar MQL4'teki Program bölümünde açıklanmıştır.

Tırmanıcı :
Şimdi şu tür bir sorum var: init işlevi yürütüldüğünde, benim için düzenlenen emir açılış fiyatının hesaplanmasının yanı sıra, hesaptaki bakiye bilgisine göre lot büyüklüğünün hesaplanması işlevinin de olacağını fark ettim. olarak adlandırılabilir; tamamlanmasından sonra, start.. işlevinin yürütülmesi başlayacaktır.

Doğru değil. init() ve start() özel fonksiyonlardır. İstemci terminali tarafından kendi özelliklerine göre (başka bir deyişle, yürütme için çağrıldıkları kural ve koşullara göre) çağrılırlar. Bu, Özel işlevler paragrafında açıklanmıştır. init() işlevi, program pencereye yüklendiğinde bir kez yürütülür. Ve her onayda start() çağrılır. Çok rahat. Bir onay işareti geldi, yeni bir fiyat getirdi = terminal, yürütülene kadar yürütülen yürütme için start()'ı başlatır. Burası, tüm hesaplamaları - ve lot sayısının hesaplanmasını, siparişlerin açılması / kapanması için koşulları ve diğer her şeyi eklemeniz gereken yerdir.

Tırmanıcı :
o zaman benim için şimdiye kadarki en gizemli şey, emrin "kapanış" fiyatını bekleyip başa dönmek için kodu nereye yazmam gerektiği, yani açılış için yeniden düzenlenmiş fiyatı hesaplama, bu fiyatı bekleme vb. bölümlere baktım, isimlerde gördüğüm bir şey gibi, yani bu soruma bir cevap olacak gibi. Okumayı bitirirken Açma ve sipariş verme bölümünü okuyorum.

Aklınıza takılan sorulara bakılırsa henüz program yazmanıza gerek yok ve şu anda okuduklarınızı da okumanıza gerek yok. Bu durumda, kitabı baştan okumaya başlamanız şiddetle tavsiye edilir. Devamlı ve ilerlemeden. Ve bu arada, sunulan tüm örnekler manuel olarak ME'ye yazılmalı ve PC'nizde yürütülmelidir. Ve kodun her harfi tam olarak netleşene kadar bir sonraki bölüme geçmeyin. Kene, Kontrol, İşlev, Özel İşlev, Operatör kavramlarına bakın ve genel olarak zaman zaman Terimler Sözlüğü'ne bakın.

Tırmanıcı :
Tabii ki, pozisyonumdaki ve iletişimsiz olduğu gibi işlerin ilerleyişini rapor edeceğim)) Yapıcı bir iletişim umuyorum.
İlginiz için teşekkür ederim.

Umarım tavsiyeyi doğru bir şekilde algılar ve uygularsınız.

 
SK. (a) yazdı:

Tırmanıcı :
o zaman benim için şimdiye kadarki en gizemli şey, emrin "kapanış" fiyatını bekleyip başa dönmek için kodu nereye yazmam gerektiği, yani açılış için yeniden düzenlenmiş fiyatı hesaplama, bu fiyatı bekleme vb. bölümlere baktım, isimlerde gördüğüm bir şey gibi, yani bu soruma bir cevap olacak gibi. Okumayı bitirirken Açma ve sipariş verme bölümünü okuyorum.

Aklınıza takılan sorulara bakılırsa henüz program yazmanıza gerek yok ve şu anda okuduklarınızı da okumanıza gerek yok.

Vay canına, bence uzman yapısı bana ulaştı.
Word'de hızlıca karalanmış, burada:

İçinde

Başlangıç

Maksimum açık sipariş sayısını belirledim = 1;

kaç tane açık sipariş olduğunu kontrol edin;

1 açıksa, sipariş kapatma fonksiyonunu çağırırım,

hiçbiri açık değilse, "fiyat ve lot sayısı hesaplama" işlevini çağırırım.

--------------------------

Uygun bir alış ve satış fiyatının gerekli hesaplamaları ve lot sayısının hesaplanması;

--------------------------

güncel fiyat talebi;

eğer mevcut >= en çok satan fiyat ise,

daha sonra önceden tanımlanmış lot sayısına eşit bir satış emri açın;

değilse, mevcut olanı uygun bir satın alma fiyatıyla karşılaştırın;

mevcut <= en iyi satın alma fiyatı ise,

sonra buna göre bir satın alma emri açın;

--------------------------

sipariş kapatma fonksiyonunun çağrılması ;

dönüş

tanım


doğru anladın mı
 
Climber :
doğru anladın mı

Eh, genel olarak, doğru :) Tebrikler. Başka bir şeyi anlamak her zaman güzeldir.

Yine de tavsiyeme uyun: en başa dönmeniz gerekiyor. Ve ders kitabında sunulan tüm kodları düzenli bir şekilde PC'nizde yürüterek, atlamalar ve atlamalar olmadan baştan başlayın.

 
Parabellum :

Kitap ilginç bir ROC göstergesi sunuyor - fiyat değişim oranı göstergesi ( https://book.mql4.com/ru/samples/iroc ). Bu kitabın bir ders kitabı olduğunu ve yazarın yarı, hatta çeyrek aşamalı kaynaklar sağlamak zorunda olmadığını anlıyorum, ancak gösterge fikri çok iyi ve gecikmeyi bile yapmak için biraz hile yaptım. daha zayıf.

Bu arada, sayfada yayınlanan gösterge metninin kodunda iki yazım hatası var ve bu nedenle derlenemiyor.
      Line_4 [ i ] = ( Line_1 [ i ] + Line_2 [ i ] + Line_3 [ i ]) 3 ; // Суммарный массив
      //-------------------------------------------------------- 17 --

      Line_5 [ i ] = Sum ( Aver_Bars + 1 ) ; // Индик. массив сглаженной линии
Bölme sembolü iki kez atlandı (HTML dosyası oluşturulurken kayboldu mu?).
Metinde bağlantılı gösterge dosyası normaldir.
 
SK. писал (а):

Eh, genel olarak, doğru :) Tebrikler. Başka bir şeyi anlamak her zaman güzeldir.

Yine de tavsiyeme uyun: en başa dönmeniz gerekiyor. Ve ders kitabında sunulan tüm kodları düzenli bir şekilde PC'nizde yürüterek, atlamalar ve atlamalar olmadan baştan başlayın.


Evet katılıyorum, okuduklarınızın sonucunu görmek ve hissetmek çok önemli, o zaman uzun süreli hafızaya yerleşiyor, özellikle duygusal içeriğin etkisiyle birden fazla çağrışım ortaya çıkıyor :) Şunu da vurgulamak istedim, ilgi çekmek için en önemli bölümleri geri getirmeniz veya kullanmanız gerekiyor, daha fazla ilginin kendisi hedefe ve bilgi çemberinin genişlemesine yol açacaktır. Konumumuzdaki en zor şey, yol boyunca tam olarak neyin ilginç olduğunu anlamak, sahip olduğumuz her şeyin etkinliğini gördüğümüz için en etkili olacak bir düzen geliştirmek. İlişkisel belleğin çalışmasını, kendisine en az bir bağlantı (ilişki) olduğu sürece tahsis edilmiş bir alanın var olduğu yönetilen bellekle ilişkilendirirdim, daha fazla bağlantı, alanın serbest bırakılmaması daha olasıdır, böylece onun garanti edilmesini sağlar. kullanım ve sonraki fayda. Bu bağlamda, okunanları pekiştirmek için dernek stokunu sürekli yenilemek gerekir.

Not: Fazla ileri gittiysem özür dilerim :)

 
timbo : Bu arada, sayfada yayınlanan gösterge metninin kodunda iki yazım hatası var ve bu nedenle derlenmiyor.
      Line_4 [ i ] = ( Line_1 [ i ] + Line_2 [ i ] + Line_3 [ i ]) 3 ; // Суммарный массив
      //-------------------------------------------------------- 17 --

      Line_5 [ i ] = Sum ( Aver_Bars + 1 ) ; // Индик. массив сглаженной линии
Bölme sembolü iki kez atlandı (HTML dosyası oluşturulurken kayboldu mu?).
Metinde bağlantılı gösterge dosyası normaldir.


Evet var. Şu ana kadar kaynak kodlarda herhangi bir hataya rastlanmamıştır ve nedense metin kodları yer yer bozuktur. Anlayacağız.
 
xnsnet :

Not: Fazla ileri gittiysem özür dilerim :)

:) Evet, biraz var)))
 
Kitapla ilgili bir not daha var. Örnek olarak, kedilere değil, paraya veya ilgili olana eğitim vermek anlamında gerçek seçenekleri kullanmak daha iyidir. Örneğin, döngü operatörlerine geldiğimde koyun ile ilgili örnek biraz dikkatinizi dağıtıyor, bizim koşullarımızda nasıl kullanılabileceğini düşünmeye başlıyorsunuz ve bu da algı sürecinden uzaklaşıyor.

Döngüler zaten benim için çok sıkıydı (bu bölümlere bir kereden fazla döneceğim) ve bir de bu koyunlar var.

Benim düşünceme göre, ticaretten belirli bir örnek (neredeyse baskın :)) düşünülürse, tamam, ticaret, o zaman okuyucu herhangi bir fikrine benzer bir örnekle karşılaşırsa (ki bunu nasıl uygulayacağını henüz bilmiyor), bu örneği büyük bir ilgiyle inceleyecek ve fikrinizi uygulamak için nasıl değiştirileceğini ve ayarlanacağını düşünecek (sanırım neden bahsettiğim açık).

Böyle bir örneğim vardı, bakiyenin 1/3'ü tutarında nasıl emir açabileceğim ile ilgilendim. 1/3'ünü dolara çevirmek için kafamda hangi matematiksel işlemlere sahip olduğum hakkında hiçbir fikriniz yok, böylece sonunda lotlar halinde bir rakam elde ettim (0,1 veya 3,5 lot ...). Ve bazı stop emirleri ayarlanmış olarak ücretsiz marjın %35'i değerinde bir Buy emri açan openbuy.mq4 örneğini gördüğümde ne kadar mutlu oldum. Yukarı ve aşağı baktım, her satırına baktım, ne, neden, nerede. Ne tür standart işlevler kullandığına baktı ( MathFloor, MarketInfo. ....).