Dmitry, bu nedir? Makale neden bir referans kitabı ve makro tabloları şeklinde?
ve kod örnekleri nerede, programcının fikrinin özü nerede?
Prensibi ve tanımlamayı açıklayan bölümler - ne yazık ki neler olup bittiğine dair herhangi bir ışık tutmadı.
öyle bir izlenim ki, olası makroların listesini unutmamak için kendileri için yazmışlar.
kodda neler olup bittiğini herkes için açıklayabilir misiniz? (Uygulama ile ilgilenmiyorum, sadece MQL algoritmalarının organizasyonu ile ilgileniyorum).
Öhöm...
"Bir programcıdan programcılar için" bir makale gibi görünüyor. Sadece kimin (yazar hariç) kullanacağı belli değil. "Learn mql5" vs "Learn eIntepretar".
Ancak yapılan iş muazzam, takdire şayan.
Dmitry, bu nedir? Makale neden bir referans kitabı ve makro tabloları şeklinde?
ve kod örnekleri nerede, programcının fikrinin özü nerede?
Prensibi ve tanımlamayı açıklayan bölümler - ne yazık ki neler olup bittiğine dair herhangi bir ışık tutmadı.
öyle bir izlenim ki, olası makroların listesini unutmamak için kendileri için yazmışlar.
kodda neler olup bittiğini herkes için açıklayabilir misiniz? (Uygulama ile ilgilenmiyorum, sadece MQL algoritmalarının organizasyonu ile ilgileniyorum).
3 veya 4 referans tablosu var. Geri kalanı yorum içeren makrolar. Makale bilgi açısından çok zengin, tek bir kelime bile atlamadan okumalısınız, net olmayan bir düşünce bile varsa bir sonrakine geçmeyin (tabii ki gerekirse ve isterseniz). Tek bir okuma muhtemelen yardımcı olmayacaktır. Ana fikri seçmeye çalışırsanız, bu o kadar büyük ve karmaşık değildir: emirlerle ilgili herhangi bir strateji, durumların olası tüm aşamalarına ayrıştırılmalıdır, ancak bu kişisel bir yaratıcı süreçtir, resmileştirilmemiştir. Gerçi isterseniz bunu resmileştirebilirsiniz ama çok fazla yazı yazmanız gerekecektir.
Programcının fikri... bilgisayarın kendisi kadar eskidir: demir bir makinenin çalıştığı insan dilinde bir program.
Kod örnekleri. StringFind() ve StringSubstr() fonksiyonları. Genel olarak, PHP'de string fonksiyonlarını incelemek yararlı olabilir - yaratıcılığınızı gerçekten genişletebilir...
Makalede sunulan bilgilerin tamamını başka bir şekilde ifade etmeye çalışırsanız, 5-10 kat daha hacimli olabilir...
Kodda ne oluyor... Dosyayı satır satır okuyun, yorumları "#" işaretiyle ayırın, faz ve eylem alanlarını "|" işaretiyle bölün, komutları ";" işaretiyle bölün. Daha sonra karşılaştırma ifadelerinde <, >, <=, <=, vb. alt dizeleri ararız. Bir tane bulursak, indeksini not ederiz ve ifade bununla sol ve sağ parçalara bölünür. Geriye aritmetik ifade kalır. veya - ile başlıyorsa, bir karakter girinti yaparız ve önünde * işareti olmayan + veya - ararız. veya -'yi alt dizelere ayırırız ve bu iki alt dizeyi * işaretiyle böleriz. Bundan sonra dört argümanımız vardır (ve ifadenin sol tarafında bir tane daha). Bu argümanlar komutlar olabilir. Bir sayı veya sonunda p olan bir sayı veya bir kullanıcı değişkeni veya sonunda p olan bir kullanıcı değişkeni olup olmadığını kontrol ederiz, eğer öyleyse, bir sayı ile değiştiririz. Değilse, bu bir komuttur. Bir komut olması durumunda, komutun kendisini ve argümanlarını işaretle ayırırız (.
En ilginç şey ifadelerin hesaplanmasıdır. Yapılar vardır, her yapıda değerleri olan beş yapı, değer yapısı değerin doğrudan sayısal mı yoksa bir komut mu olduğunu belirtir. Değeri olan her yapı için, değeri hesaplamak üzere bir fonksiyon çağrılır. Eğer değer sayısal ise fonksiyon hiçbir şey yapmaz, eğer bir komut ise uygun fonksiyon çağrılır (switch ile seçilir). Değerler doldurulduktan sonra aritmetik ifade hesaplanır, yapıda değerler ve aritmetik eylem için işaretler belirtilir.... Sadece her şey sayılarla (indisler) belirtilir ve gerekli eylem switch aracılığıyla seçilir.
Çalışma yorumlama süreci iki switch seviyesidir: bir komut ve komut hakkında alınan verilerin tanımlayıcısı için iç içe. Eğer ilgileniyorsanız, OnTick() fonksiyonundan gelen kodu inceleyin, çok fazla kod yoktur. En büyük kod miktarı OnInit() fonksiyonundan gelir, ancak orada o kadar ilginç değildir, birisi için daha uygun olduğu için yapılabilir - sadece StringFind() ve StrSubstr() fonksiyonları.

- www.mql5.com
Destekliyorum, basit bir TS'nin nasıl programlanacağına dair bir örneğe ihtiyacım var, en azından yavaş ve hızlı MA'ların geçişlerinde ticaret
Khe... Öncelikle makalenin tamamını okumalısınız.
...stratejilerin görsel tasarımcısı olmak.....
Bu iyi bir fikir, bir sorunu ortadan kaldırır. ama küçük bir sorun, hala strateji hakkında düşünmeniz, analiz etmeniz, aşamalara ayırmanız gerekecek.
Öhöm...
"Bir programcıdan programcılar için" bir makale gibi görünüyor. Sadece kimin (yazar hariç) kullanacağı belli değil. "Learn mql5" vs "Learn eIntepretar".
Ve yapılan iş tek kelimeyle muazzam, takdire şayan.
"Çılgın bilim adamı"..... gibi birazcık var. Teselli ödülü olarak, çok ayrıntılı olmasa da.... resimlerle birkaç sipariş stratejisinin bir açıklaması var. Birisi, belki, en azından bu faydalı olacaktır...
Если постараться изложить весь объем информации представленный в статье как-то иначе, она бы могла поучиться раз в 5-10 объемней...
Referans tablolarını bir rıhtıma koyabilir ve makaleye ekleyebilirsiniz.
Makaleyi tekrar okudum. Hatta makalenin ne hakkında olduğunu anlamak için kendime bir tez cümlesi kurmaya karar verdim. Muhtemelen anlamaya yakınım.
Dimitri, yanlışım varsa düzelt.
Yani uzmanın görevi eyaletleri kontrol etmek olacak. Hepsini. Nokta nokta.
Ve eğer durumlardan herhangi biri o an için uygunsa - o zaman makronun bu durum için öngördüğü şeyi yaparız.
Görev çelişkiler yaratmak değildir - birkaç makronun aynı durumu ele almasını sağlamak veya iki makro arasındaki çatışmaları önlemek (örneğin, biri kapanır ve ikincisi hemen açılır ve bir "kavga" olur)
Yani, uzmanın görevi sürekli olarak bir döngü içinde çalışmak ve belirtilen TÜM makroları (dosyaya yazdıklarımız veya başka bir şey) kontrol etmek ve koşullarını yerine getirdiklerinde öngördüklerini yapmaktır.
Örneğin, basit bir stratejimiz olduğunu varsayalım (hatta bir gösterge stratejisi).
MA geçtiğinde bir sipariş açmamız gerekiyor. Sonra harcayın. Ve bazı öneklerde zorla kapatın.
Bu durumda bir programcı ne yapar.
ÜÇ işlev yazıyor (sizin durumunuzdaki makrolar gibi)
- gösterge OK verdiyse ve poz yoksa, göstergeyi kontrol etme ve bir emir açma işlevi.
- poz varsa trol işlevi
- bir emir varsa ve kar varsa kapatma işlevi
Bu işlevleri çağırma sırası herhangi biri olabilir. Bunları örneğin OnTick'teki kontrolün üzerine yerleştirmek yeterlidir
OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}
Yani, fonksiyonlar kendi başlarına bağımsızdır.
Bu, TralPos'un kendi başına bağımsız olduğu ve diğer iki fonksiyonun varlığının çalışmasını hiçbir şekilde etkilemediği anlamına gelir. Gerekli tüm kontroller içinde gerçekleştirilir (bir poz aramak, bir durağı değiştirmek, vb.)
Benzer şekilde, CloseProfit bağımsızdır.
Yani, bağımsız olan ve algoritmanın atomik işlemini gerçekleştiren bu tür birkaç düzine fonksiyon yazdınız.
Ve bunları parametreli bir test dosyası aracılığıyla ayarlamanın bir yolunu yaptınız, böylece işlevlerin (ve dolayısıyla Uzman Danışmanın) parametrelerini yeniden derlemeden değiştirebilirsiniz.
böyle mi?
Referans tablolarını bir dokümana koymak ve sadece makaleye eklemek mümkün olabilir
Bu bir zevk meselesi, ancak makalenin içinde yer alırlarsa kaybolmazlar.
Makaleyi tekrar okudum, hatta makalenin ne hakkında olduğunu anlamak için kendime bir tez cümlesi oluşturmaya karar verdim ve muhtemelen anlamaya yakınım.
Dimitri, yanılıyorsam beni düzelt.
Yani, uzmanın görevi eyaletleri kontrol etmek olacak. Hepsini. Nokta nokta.
Evet. Her işaretlemede, tüm aşamalar uygunluk açısından kontrol edilir.
Ve eğer durumlardan herhangi biri o an için uygunsa - o zaman makronun bu durum için öngördüğü şeyi yaparız.
Evet ama bazı nüanslar var. Bir piyasa eylemi gerçekleştirilirse, bir tane olmalı ve önce gelmelidir. Bekleyen bir emir ayarlanırsa, Uzman Danışman bunu ayarlamadan önce varlığını kontrol eder.
Görev çelişkiler yaratmak değildir - birkaç makro aynı durumu işlemelidir veya iki makro çakışmamalıdır (örneğin, biri kapanır ve ikincisi hemen açılır ve bir "kavga" olur).
Çatışma olmamalıdır. Ancak daha uygunsa, aynı aşama için birkaç makro olabilir. Örneğin, bir aşama bir piyasa pozisyonunun varlığıdır, bir tarafta bir Limit emri ve diğerinde bir Stop emri olabilir veya tek bir satırda hem Stop hem de Limit emri yazabilirsiniz.
Yani, Uzman Danışmanın görevi sürekli olarak döngü boyunca ilerlemek ve belirtilen TÜM makroları (dosyaya veya başka bir şeye yazdığımız) kontrol etmek ve koşulları yerine getirildiğinde öngördüklerini yapmaktır.
Evet.
Örneğin, basit bir stratejimiz olduğunu varsayalım (hatta bir gösterge stratejisi).
MA kesiştiğinde bir sipariş açmamız gerekiyor. Sonra harcayın. Ve sonra bazı öneklerde zorla kapatın.
Evet.
Bu durumda bir programcı ne yapar.
ÜÇ işlev yazar (sizin durumunuzdaki makrolar gibi)
- göstergeyi kontrol etme ve gösterge bir sinyal verdiyse ve pozisyon yoksa bir sipariş açma işlevi.
Bu bir aşamadır: bir gösterge sinyali var, ancak pozisyon yok. Bu durumda, eylemi bir pozisyon açmaktır.
- bir poz varsa trol işlevi.
Bu ayrı bir aşama olarak kaydedilebilir. Aşama tanımlama - bir piyasa pozisyonunun varlığı. İlgili eylem trol fonksiyonunun çağrılmasıdır.
- Kapanış fonksiyonu, eğer bir emir varsa ve emrin bir karı varsa.
Bu üçüncü aşamadır. Bir pozisyon vardır ve karı belirtilen değerden büyüktür. Eylem pozisyonu kapatmaktır.
Bu fonksiyonları çağırma sırası herhangi biri olabilir. Örneğin, bunları OnTick'teki kontrolün üzerine yerleştirmek yeterlidir.
Ve metaprogramın bulunduğu dosyada satırları farklı sırayla yerleştirebilirsiniz.
OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}
Yani, fonksiyonların kendileri bağımsızdır.
Metaprogramın bulunduğu dosyadaki satırların da bağımsız olduğu ortaya çıktı.
Bu, TralPos'un kendi başına bağımsız olduğu ve diğer iki fonksiyonun varlığının çalışmasını etkilemediği anlamına gelir. İçinde gerekli tüm kontroller yapılır (poz arama, durdurma değişikliği, vb.).
Metaprogramın bir satırı da kendi kendine yeterlidir.
Benzer şekilde, CloseProfit de kendi kendine yetmektedir.
Böylece, bağımsız olan ve algoritmanın atomik işlemini gerçekleştiren düzinelerce fonksiyon yazdınız.
Ve bunları parametreli bir test dosyası aracılığıyla ayarlamanın bir yolunu yaptınız, böylece işlevlerin parametrelerini (ve dolayısıyla Uzman Danışmanı) yeniden derlemeden değiştirebilirsiniz.
Bu işlevler birleştirilebilir. Aşama yalnızca bir piyasa pozisyonunun varlığıyla değil, aynı zamanda erişim komutları tablosundaki birçok varyant, komutla da belirlenebilir.
böyle mi?
Yanlış anlaşılmaya neden olabilecek bir şey var. Makalede eylem ve durum arasındaki farkı bir şekilde bulanıklaştırdım. Bir faz belirlenirken bir piyasa aksiyonu alınması gerekiyorsa buna aksiyon denmeli. Ve bekleyen emirlerin belirlenmesi gerektiğinde, buna bir durum açıklaması denmesi daha olasıdır. Bir aşama temel olarak bir piyasa pozisyonundaki bir yorumla tanımlanır ve bu aşama ya bir eyleme (bir piyasa pozisyonunun açılması/kapatılması) ya da bir duruma (bazı bekleyen emirlerin varlığı) karşılık gelir. Bir piyasa eylemi ise, gerçekleştirildikten sonra başka bir faza geçiş olacağı varsayılır. Emirleri doğru şekilde işaretlemek önemlidir. Ancak bir aşamada hem bir piyasa eylemi hem de emirlerin belirlenmesi olabilir. Piyasa eylemi başarısız olursa, ondan sonraki hiçbir şey yürütülmeyecektir. Ve eğer başarılı olursa, bir adımda mümkün olduğunca çok şey yapmaya çalışmanız durumunda gerçekleştirilecektir. Emirlerin belirlenmeyebileceği, ancak piyasa eyleminin tamamlandığı, yani başka bir aşamaya geçiş olduğu akılda tutulmalıdır.

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale Emir Stratejileri. Çok Amaçlı Uzman Danışman (EA) yayınlandı:
Bu makale, bekleyen emirleri aktif olarak kullanan stratejiler, bu tür stratejileri resmi olarak tanımlamak için oluşturulabilecek bir üstdil ve işlemi bu açıklamalara dayanan çok amaçlı bir Uzman Danışmanın (EA) kullanımı etrafında odaklanmaktadır.
Ayrıca, stratejiler başka bir analiz türü gerektirebilir. Biz buna mevcut alım satım durumunun analizi diyeceğiz. Alım satım pozisyonu durumunun analizini ve mevcut/eksik bekleyen emirlerin (herhangi biri bir stratejide kullanılırsa) analizini içerir. Bu tür analizlerin sonuçları, pozisyon veya emirler içeren belirli eylemlerin gerçekleştirilmesi gerekip gerekmediğine, örneğin Zararı Durdur seçeneğini kapatmaya, taşımaya, bekleyen emirleri yerleştirmeye veya silmeye vb. dair kararlara getirir. Başka bir deyişle, bu tür analizler piyasa faaliyetimizin incelenmesini, bizim (veya bir Uzman Danışmanın (EA)) oluşturduğumuz duruma göre eylemleri ve kullanımdaki stratejinin kurallarını içerir.
Yaygın olarak bilinen bir Takip Eden Durdurma, belirli ölçüde bir alım satım stratejisindeki ikinci öğe türü olarak kabul edilebilir. Aşağıdaki analizi göz önünde bulundurun: Zararı Durdur ayarlanmadığında veya ayarlarda belirtildiği gibi geçerli fiyattan mesafe daha uzakken, ayarlanan değerden daha yüksek kara sahip açık bir pozisyon varsa, Zararı Durdur taşınır.
Takip Eden Durdurma, özellikle ilgi çekici olmak için oldukça basit bir fonksiyondur. Ayrıca, bir pozisyon yönetimi fonksiyonu olarak, alım satım stratejisi öğelerinin tamamen farklı bir kategorisi olarak sınıflandırılabilir. Bu nedenle, bir alım satım stratejisi üç öğe kategorisinden oluşabilir:
Piyasa analizi ve buna dayalı eylemler.
Alım satım durumunun ve buna dayalı eylemlerin analizi.
Pozisyon yönetimi.
Bu makale, bekleyen emirleri aktif olarak kullanan stratejileri (kısaca emir stratejileri olarak adlandıracağız), bu tür stratejileri açıklamak için oluşturulabilecek bir üstdili ve bu açıklamalara dayanan çok amaçlı bir aracın (Uzman Danışman (EA)) geliştirilmesini ve kullanılmasını merkeze almaktadır
Yazar: Dmitry Fedoseev