Daha az kod, daha fazla kullanım Uzman Danışman yazmak
Lütfen tüm kodlarınızı doğru girin: peki, bu gri umutsuzluğa bakmak imkansız. Net bir eylem planı var: editördeki butona tıkladılar, kodu ortaya çıkan alana yapıştırdılar . İnatla bir metin tuvali eklersiniz ve ardından bu tuvale “kod” stilini uygulamaya çalışırsınız.
o (kod) çarpık bir şekilde oraya yerleştirilmiştir. bir parça hala bir şekilde savaşılabilir ve biraz daha fazlası zaten un ..
yani, "gri umutsuzluk" hakkında, bu benim için değil - bu web yöneticileri için. 2019'da bol miktarda fonla bunu nasıl başardıkları bir sır :-)
ama ilerde daha eğlenceli hale getirmek için önce wiki üzerine az çok büyük yazılar yazıp kopyala-yapıştır ile buraya aktarıp yayınlanan kod miktarını azaltacağım.
o (kod) çarpık bir şekilde oraya yerleştirilmiştir. bir parça hala bir şekilde savaşılabilir ve biraz daha fazlası zaten un ..
yani, "gri umutsuzluk" hakkında, bu benim için değil - bu web yöneticileri için. 2019'da bol miktarda fonla bunu nasıl başardıkları bir gizem :-)
ama ilerde daha eğlenceli hale getirmek için önce wiki üzerine az çok büyük yazılar yazıp kopyala-yapıştır ile buraya aktarıp yayınlanan kod miktarını azaltacağım.
Görünüşe göre şimdi kodu içeren bloğu kopyalamanız ve Not Defteri'ne yapıştırmanız gerekiyor.
Ardından not defterinden kopyalayın ve geri yapıştırın, ancak bundan önce "yeni" kod için yeni bir blok oluşturun
Danışman için temel şablonu oluşturdum ve ayrıca bir strateji dosyası oluşturdum.
Kullanıcı için kolay olduğunu düşünüyor musunuz?
minimum programlama bilgisi hala gereklidir!
Ve hiçbir "yardım" talimatı, video, hiçbir şey kaydetmez.
Kullanıcı daha sonra sizden onu ücretsiz stratejiler için pedal çevirmenize ihtiyaç duyacaktır.
Ve sertifikayı okumazlar.
Görünüşe göre şimdi kodu içeren bloğu kopyalayıp Not Defteri'ne yapıştırmanız gerekiyor.
Ardından not defterinden kopyalayın ve geri yapıştırın, ancak bundan önce "yeni" kod için yeni bir blok oluşturun
biraz eziyet, ama "çiçek açmış" gibi görünüyor :-)
bahsedilen web yöneticileri için bahçede bir çakıl taşı (daha doğrusu bir parke taşı): yerleşik düzenleyiciye kopyala-yapıştır yaparken veya daha doğrusu, açıkça ilk "renklendirmede", editör keyfi olarak kodun bir bölümünü ısırır. o hoşlanmaz. Özellikle, "if ( (ret=ea.OnInit())!=INIT_SECEEDED) {..}" öğesini keyfi olarak düzenledi. Görünüşe göre, harika vurgulama algoritması, yalnızca bir OnInit olduğunu ve sınıfta aşırı yüklenemeyeceğini düşünüyor.
Elbette, ilerlemeden önce "parti çizgisi"ni ve "hedef-komünizmi"ni kurmak gerekir:
1) Kullanıcının stratejiyi uygulaması için 100 satır yeterlidir. (yorumların, girdilerin ve diğer #özelliklerin yanı sıra).
2) Aynı zamanda, kendisine yeni gelen "varlıkların" (fonksiyonlar/sınıflar/yöntemler/sabitler) sayısı en aza indirilmelidir.
3) kitaplık sayılabilir sayıda dosya içermelidir.
4) GUI için potansiyel olarak uygun
5) eklentilerle genişletilebilir
3) Peki, kitaplığın içerdiği dosya sayısı arasındaki fark nedir? 1, 10, 100, 1000? Her şey bu kütüphaneyi geliştiren kişinin rahatlığı için yapılmalıdır. Her şeyi küçük dosyalara yerleştirmesi uygunsa - lütfen. Her şeyi bir arada kodlamaya alışkınsanız - lütfen. Genel olarak, bir sürü farklı otomatik araçtan bir mega dosya oluşturmak zor değil. Dolayısıyla bu nokta yüzünden ısrar etmeyeceğim.
4) GUI için uygundur - nasıl olduğu tam olarak belli değildir. Kitaplık, yetişkin bir şekildeyse, yalıtılmış bir iş mantığı katmanıdır. Bu katman hiçbir şekilde harici GUI'ye bağlı olmamalıdır. Bu GUI, bu katmana bağlı olmalıdır.
if (d_fast_ma== 0 ) d_fast_ma= iMA (ea. Symbol ,ea. Period ,FAST_MA_PERIOD, 0 ,FAST_MA_METHOD,FAST_MA_PRICE,shift); if (d_slow_ma== 0 ) d_slow_ma= iMA (ea. Symbol ,ea. Period ,SLOW_MA_PERIOD, 0 ,SLOW_MA_METHOD,SLOW_MA_PRICE,shift);
Başlangıçta yaklaşımınız tamamen prosedürel: Gördüğüm şey hakkında şarkı söylüyorum. Ve ortalamanın fiyatlara göre değil, hacme veya başka bir göstergeye göre hesaplanması gerekiyorsa? Kullanıcıyı yeniden yeniden yazmaya zorla? Ortalama hesaplama bir algoritmadır. Algoritmayı uygulamak istediğiniz şey verilerdir. Algoritmayı hemen sınırlamak yerine verilerle karıştırıyorsunuz (bu sözde kod için):
int period_ma = 12 ; int shift = 3 ; double fast_ma = SMA( Close , period, shift);
Oops, dizi dizinini unuttum. - Aslında, olmamalı. Algoritmaları boru hatlarında birleştirerek bir halka arabelleğindeki her şeyi hesaplamak gerekir.
https://www.mql5.com/ru/articles/5654 ve Sayın Karputov'un danışmanları ile karşı tez ve polemik olarak
Benim hakkım unutulmadı . Ve boşuna, bir sürü şey var.
Başlangıçta yaklaşımınız tamamen prosedürel: Gördüğüm şey hakkında şarkı söylüyorum. Ve ortalamanın fiyatlara göre değil, hacme veya başka bir göstergeye göre hesaplanması gerekiyorsa? Kullanıcıyı yeniden yazmaya zorla? Ortalama hesaplama bir algoritmadır. Algoritmayı uygulamak istediğiniz şey verilerdir. Algoritmayı hemen sınırlamak yerine verilerle karıştırıyorsunuz (bu sözde kod için):
Oops, dizi dizinini unuttum. - Aslında, olmamalı. Algoritmaları boru hatlarında birleştirerek bir halka arabelleğindeki her şeyi hesaplamak gerekir.
her şeyin büyük bir kısmı bunun için yapılıyor. Böylece her şeydeki her şeyi sayabilirsiniz ve danışmanın kendisi dizileri ve ilişkileri anlar. Bir keresinde MT4'te bir elektronik tablo hesaplayıcısı a la mikro excel yaptım ve görüntü ve benzerlikteki hesaplamaların organizasyonunu aldım.
kullanım durumunda, stil, en yaygın olarak temelde prosedüreldir. Potansiyel kullanıcılar ( acemi programcılar ) aynen böyle yazar.

- Ücretsiz ticaret uygulamaları
- Ticaret kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Web sitesi politikasını ve kullanım şartlarını kabul edersiniz
Uzman Danışmanlar için bir temel oluşturmaya çalışacağım (ya da ilgilenenler varsa deneyeceğiz). Basit şeyler için en uygun olanıdır ve uygulamalı programcıdan önemli bilgi gerektirmez.
Yerel olarak kabul edilen uygulamanın aksine, tasarım yukarıdan aşağıya olacaktır. Kullanıcının istenen kullanım durumundan ve terminalin mühendislik temellerinden değil. Yani, önce son kullanıcı için ana (ve tek) danışman dosyasını yazıyoruz, açıkça gereksiz olan her şeyi oradan kaldırıyoruz ve BT'nin çalışması için bir kütüphane yazıyoruz. Ardından yeni bir kullanım durumu ekliyoruz ve kitaplığı yükseltiyoruz.
https://www.mql5.com/ru/articles/5654 ve Sayın Karputov'un danışmanları ile karşı tez ve polemik olarak
Elbette, ilerlemeden önce "parti çizgisi"ni ve "hedef-komünizmi"ni kurmak gerekir:
- Kullanıcının stratejiyi uygulaması için 100 satır yeterlidir. (yorumların, girdilerin ve diğer #özelliklerin yanı sıra).
- aynı zamanda, kendisine yeni gelen "varlıkların" (fonksiyonlar/sınıflar/yöntemler/sabitler) sayısı en aza indirilmelidir.
- kitaplık sayılabilir sayıda dosya içermelidir.
- GUI için potansiyel olarak uygun
- eklentilerle genişletilebilir
Hedefler ulaşılabilir mi? zor, ama temelde EVET. Bazı yönlerden gelişmeler ve fikirler var. Ancak henüz hazır bir çözüm yok :-)
Mevcut adım, verilerin bir uzman tarafından alınmasını organize etmektir. Böylece kullanıcının bunları tanımlaması kolaydır, ancak aynı zamanda meta veriler ve diğer uzantılar için "kancalar" korunur. (ileriye bakmak - diğer koda göre, en azından hata ayıklama olan GUI bölümünü zaten uygulayın)
Bir başlatıcı olarak, en basit kullanım örneğini çizdim - iki MA'nın kesiştiği noktada ticaret yapıyoruz
sırasıyla, giriş kısmı şöyle görünür:
Planlandığı gibi, kullanıcının yapması gereken bir sonraki şey, girdiden hangi verileri aldığını açıklamaktır. Yine de listelemek için:
ve bu verileri nasıl hesapladığını / aldığını açıklayın (uzun olduğu ortaya çıktı, ancak hemen her iki terminale de)
ve son olarak ticaret sinyalini tanımlayın:
PRENSİPTE HER ŞEY. Bu, bir Uzman Danışman uygulamak için yeterlidir ve açıkçası kullanıcının tonlarca belge okumasını gerektirmez. Temel düzeyde MQL yeterliliğine ihtiyacı var. Ve diğer her şey kütüphane tarafından yapılmalıdır (veya moda olan kelime motordur). Kullanıcı için oluşturulmalı, başka bir çok ciltli API öğrenmesi için değil
Bu arada, işte OnInit:
..