yeni başlayan birinin maceraları - sayfa 5

 

Merhaba Tim,

Dün saat 2'ye kadar PSC'yi C'ye (sözde kodu koda) dönüştürdüm. İşten eve geldikten hemen sonra başladım.

İlk taslağı bitirdiğimde fark ettim ki i) bir kaç şey eksikti, ii) her şeyi 'çift' özel kılmak zorundayız.

Sadece doğru çizgide olup olmadığımı kontrol etmek için, bu konuda biraz bilgelik paylaşır mısınız:

1. Her bir iMA'yı veya EA'nın düzgün çalışmayacağını bildirdiğimizde, sembolü belirtmeden 3 ema kullanamayız. bu yüzden 15 ema ilan etmeliyiz (sembol başına 3 Ma'lı 5 sembol)?

2. CountOrders işlevini kaçırdık. Yine, çünkü 5 çift. 10 fonksiyona ihtiyacımız var. örneğin: EUR_USD_BuyCount, EUR_USD_SellCount; vb. ?

3. Kodu yazmanın etkili bir yolu olduğunu ve 'acemi' bir yol olduğunu fark ettim. Acemi bir şekilde yapacağım ve sonra nasıl verimli hale getirileceğini bana gösterebilirseniz minnettar olurum.

4. Sihirli Sayılar. Yaptığınız şeyi arzuluyorum ve bu nedenle aynı anda birden fazla EA çalıştırmak istiyorum. Magic Numbers'a baktım ama hayatım boyunca onu gerçekten kavrayamıyorum, diğer kodlardan bile. Bilgisayarın farklı EA'lar arasında ayrım yapmasını nasıl sağlayacağım hakkında daha fazla bilgi edinebileceğim bir yere yönlendirebilir misiniz?

Teşekkür ederim

Nick

 

merhaba Nick

Üzgünüm ama beni burada kaybediyorsun. Arabayı yine atın önüne koyuyor gibiyiz ve sonuç olarak geriye gidiyoruz. Bir önceki gönderimde MetaTrader EA sihirbazını ve daha önce yazdığımız sözde kodu kullanarak programınız için temel bir yapı kurmanızı önermiştim. Geri dönüp bu adımı tamamlayabilir ve sonuçları (mq4 dosyası) bu foruma bir bakmam için gönderebilir misiniz? Ardından bir sonraki adıma geçebiliriz. Bu konuda kesinlikle 15 ema'ya, 10 işleve veya sihirli sayıya ihtiyacınız yoktur ve olası olmayan bir durumda, belirli komisyoncu gereksinimleriyle ilgili sorunlarımız olduğunda, onlara geldiğimizde onlarla başa çıkabiliriz.


Muhtemelen ilk EA'nızı yazma sürecinde size rehberlik edebilirim, ancak bunu her seferinde bir adım atmaya ve sonuçları her seferinde gözden geçirmem için bu foruma geri göndermeye istekliyseniz. Aksi takdirde, bu küçük projenin raydan çıkacağını, benim ve sizin zamanınızı boşa harcayacağını düşünüyorum.

Demiştin ki - Ben acemi yolu yapacağım ve sonra bana nasıl verimli hale getirileceğini gösterebilirsen minnettar olurum.

Nick, birinin bozuk kodunu çözmeye çalışan sinir bozucu ve zaman alıcı bir alıştırmadır. Genellikle çabaya değmez.


Saygılarımızla

Tim

 

Merhaba Tim,

Seni hayal kırıklığına uğrattığım için özür dilerim, seni yanlış anladım. Çalışmayacak olsa da şimdi kodlamam gerektiğini söyledin ve ben de devam edip kodlamam gerektiğini düşündüm. Bu nedenle, onu kodlamak için epey zaman harcıyorum, işinizi alevlendirmeye çalışıyorum - ama bunun tam tersi olduğu ortaya çıktı.

Ama endişelenmeyin, demek istediğiniz buysa, PseudoCode'u EA çerçevesinde yayınlayacağım. O zamana kadar sabrını kaybetmediysen, her blokta bana rehberlik edebilirsin :)

 

Merhaba Tim,


Sözde Kodu, parantez içinde düzenleyerek bir EA Formatında ekledim. Ne demek istediğinizi hala anlamadıysam bana bildirin ve gerektiği gibi değiştireceğim. Sadece size zaman kazandırmak için ilan ettiğim bayraklar ve filtreler. Başka bir şeye dokunmadım. Son mesajımdan da açıkça anladığınız gibi, işlevler için adlar oluşturmadım çünkü hala ne olacağını anlamıyorum. Buradan sonraki adım ne patron?

Dosyalar:
 
niko :

Merhaba Tim,


Sözde Kodu, parantez içinde düzenleyerek bir EA Formatında ekledim. Ne demek istediğinizi hala anlamadıysam bana bildirin ve gerektiği gibi değiştireceğim. Sadece size zaman kazandırmak için ilan ettiğim bayraklar ve filtreler. Başka bir şeye dokunmadım. Son mesajımdan da açıkça anladığınız gibi, işlevler için adlar oluşturmadım çünkü hala ne olacağını anlamıyorum. Buradan sonraki adım ne patron?

Merhaba. Sabırsızlandım - sözde kod ihtiyacına katılıyorum, ancak sanırım biraz aşırıya kaçtınız (üzgünüm Tim).

Sadece bunu çaldım. Sadece gerçekten yarım saat harcadım, hatalar, sözdizimi vb. İçin kontrol etmedim.

Ama bir girdap verirseniz, ihtiyacınız olana oldukça yakın olmalıdır. Yapıyı görmenize izin vermek için kasıtlı olarak çıplak bir kemik olarak bıraktım, ancak yine de yapacak işiniz var. Örnek olarak, fnTrade işlevindeki tüm hata denetimlerini ve TakeProfit işlemesindeki bir hatayı bilerek bıraktım.


CB


GÜNCELLEME: Tim'in sonraki gönderisi nedeniyle, sizin için oluşturduğum EA'yı sildim ve geri çekilip Tim'in yapmasına izin vereceğim.


TIM: Çoklu para birimleri mantığıyla ilgili yazınıza atıfta bulunarak, bu EA'yı sembol-agnostik olacak şekilde yapılandırdım, çünkü Nick'in sen devralmaya gelmeden önce onunla çalışırken ben istediğini söylediği buydu.

 

Merhaba Nick. bulut kırıcı

Cloudbreaker, yavaş ilerlemedeki hayal kırıklığınızı not ediyorum. Bu alıştırmanın amacının Nick'e MT4 kullanarak nasıl programlama yapacağını öğretmek olduğunu düşündüm. Bu forumda gördüğüm birçok kod ve kodlamayla ilgili tartışmalara bakarak, sistematik bir yaklaşımın kaliteli kod üretmenin en güvenilir ve çoğu zaman en hızlı yolu olduğu iddiamın arkasındayım.


Bununla birlikte, bunun oldukça önemsiz bir proje olduğunu ve herhangi bir yetkin programcının böyle bir şeyi minimum formalite ile çok hızlı bir şekilde başlatacağını düşünüyorum. Herkesin hayal kırıklığını en aza indirgemek için işleri olabildiğince hızlı ilerletmeye çalışacağım ama lütfen öğrenmenin genellikle zaman aldığını ve yapabilenlerin öğrenmeye çalışanların hayal kırıklığına uğramasının kolay olduğunu unutmayın.

Nick,

Gönderdiğiniz kod tam olarak aradığım şey değildi. İşleri biraz toparladım ve sizin için yapmanız gereken birkaç şeyle birlikte kodda sizin için birkaç not aldım.

Sonraki görev, her bir çift için ayrı prosedürler yazmadan farklı döviz çiftlerini ele almanın bir yolunu sağlamaktır.


Bunu yapmanın bir yolu, küresel bildirim alanında döviz çiftlerini bir DİZİ DİZİ olarak ilan etmektir.

Ardından ana program bloğunda - (başlangıç fonksiyonu) Dizi boyunca indekslemek için bir FOR döngüsü kullanın

Nick, bu kodu programlamaya devam edin ve sonra foruma geri gönderin.


Ayrıca hata işleme hakkında düşünmeye başlamamız gerekiyor. test etme ve hata ayıklama. Bunu MetaTrader'da yapmanın yaygın bir yolu günlük dosyalarını kullanmaktır. Denemek ve başlamak için EA'ya birkaç satır ekledim.

Lütfen bir göz atın ve ne yaptığımı anlamaya çalışın. Kodu çalıştırabilir ve aktif bir hesapta veya strateji test cihazında günlük dosyasına bakabilirsiniz.


Saygılarımızla

Tim

Dosyalar:
 

Hey Millet,

Bu yolculuktaki desteğiniz için ikinize de teşekkür ederiz! Bir acemi için sistematik bir yaklaşımın gerekli olduğuna katılıyorum, ancak aynı derecede önemli olan kodun içine dalmak. Bu iki bileşen birbirinin büyümesine yardımcı olur ve öğrenme sürecini teşvik eder. Bunu fark ettim ve bu yüzden ikisine de zaman harcadım. Biri kodlama sürecini ne kadar iyi anlarsa, sözde kodları ve sonraki program o kadar iyi olur.

Her iki belgeyle de paralel olarak çalışarak bu çabaya devam edeceğim - bence bu, öğrenme sürecini başka hiçbir şey gibi hızlandırmayacak, çünkü belirli bir referans noktam olacak.

Ana odak, sözde kodu koda dönüştürmek olacak, ancak CB'nin belgesini, nasıl ve hangi parçaların ekleneceğine dair fikirler için kullanacağım ve ayrıca, elbette Tim'in yol boyunca rehberliğinde, öğrenmek için paralel olarak kullanacağım.

Nick

 
niko :

Hey Millet,

Bu yolculuktaki desteğiniz için ikinize de teşekkür ederiz! Bir acemi için sistematik bir yaklaşımın gerekli olduğuna katılıyorum, ancak aynı derecede önemli olan kodun içine dalmak. Bu iki bileşen birbirinin büyümesine yardımcı olur ve öğrenme sürecini teşvik eder. Bunu fark ettim ve bu yüzden ikisine de zaman harcadım. Biri kodlama sürecini ne kadar iyi anlarsa, sözde kodları ve sonraki program o kadar iyi olur.

Her iki belgeyle de paralel olarak çalışarak bu çabaya devam edeceğim - bence bu, öğrenme sürecini başka hiçbir şey gibi hızlandırmayacak, çünkü belirli bir referans noktam olacak.

Ana odak, sözde kodu koda dönüştürmek olacak, ancak CB'nin belgesini, nasıl ve hangi parçaların ekleneceğine dair fikirler için kullanacağım ve ayrıca, elbette Tim'in yol boyunca rehberliğinde, öğrenmek için paralel olarak kullanacağım.

Nick

Merhaba Nick, şimdi geri çekileceğim. Yukarıdaki mesajımdaki değişikliğe bakın.


CB

 
cloudbreaker :

Merhaba Nick, şimdi geri çekileceğim. Yukarıdaki mesajımdaki değişikliğe bakın.


CB

Hey CB, yapacağını düşündüm, bu yüzden indirecek kadar hızlıydım. Daha önce de belirttiğim gibi, sahip olduğum fikirle ilgili herhangi bir şey öğrenmeme yardımcı oluyor, kodunuz öğrenmemi engellemeyecek çünkü onu Tim'in şablonuna kopyalamayacağım, bunun yerine işlerin nasıl farklı şekilde yapılabileceğini görmek için onu anlamaya çalışacağım. :)


Her şey dedikleri gibi yardımcı olur!

 
niko :

Hey CB, yapacağını düşündüm, bu yüzden indirecek kadar hızlıydım. Daha önce de belirttiğim gibi, sahip olduğum fikirle ilgili herhangi bir şey öğrenmeme yardımcı oluyor, kodunuz öğrenmemi engellemeyecek çünkü onu Tim'in şablonuna kopyalamayacağım, bunun yerine işlerin nasıl farklı şekilde yapılabileceğini görmek için onu anlamaya çalışacağım. :)


Her şey dedikleri gibi yardımcı olur!

Endişelenme. Sadece birkaç değişiklikle, aslında işi sizin için yapmalıdır.

Sizin için oluşturduğum TakeProfit "hatasını" değiştirerek başlamalısınız. Bir ipucu için StopLoss'un nasıl yapıldığına bir göz atın.

Çalıştırdıktan sonra, hata işleme ve Print() ifadeleri gibi bazı operatör dostu şeyler eklemeye başlayacağınızı umuyorum, böylece günlüklerde ne yaptığını kolayca görebilirsiniz.

Sözde kod, kod yazmadan önce önemlidir (deneyimli programcılar için bile), ancak aşırıya kaçmayın.

İyi huylu tavrınız nedeniyle yardım çekiyor gibisiniz. Tahminime göre ya İK'da çalışıyorsunuz ya da insan psikolojisiyle ilgileniyorsunuz?


CB