Boşuna, elbette, bir ders kitabından öğrenme tavsiyesine uymadınız. Burada örneğin, sıraların, emirlerin vb. nasıl yerleştirileceğini öğreniyorsunuz, ancak yine de bir strateji yazamayacaksınız çünkü teorik bir temel yok. Tüm bu satırlar ve komut dosyaları, programlamanın ana şeylerini anlamanıza yardımcı olmayacak ve onlarsız çok ileri gidemezsiniz. Sadece ilk 4 ay çalıştım, bir şeyler yazmaya bile çalışmadım. Tabii ki, sizin gibi küstah olabilirdi, ancak bu tür bilgilerin kalitesi yüksek değil - çoğu zaman ilköğretimde gelecekte doldurulması gereken boşluklar vardır ...
Реter Konow : Boşuna, elbette, bir ders kitabından öğrenme tavsiyesine uymadınız. Burada örneğin, sıraların, emirlerin vb. nasıl yerleştirileceğini öğreniyorsunuz, ancak yine de bir strateji yazamayacaksınız çünkü teorik bir temel yok. Tüm bu satırlar ve komut dosyaları, programlamanın ana şeylerini anlamanıza yardımcı olmayacak ve onlarsız çok ileri gidemezsiniz. İlk 4 ay sadece çalıştım, bir şeyler yazmaya bile çalışmadım. Elbette sizin gibi küstahça olabilirdi ama bu bilginin kalitesi düşük. Oldukça sık olarak, temel düzeyde gelecekte doldurulması gereken boşluklar vardır ...
Selam Peter! Ders kitabını gerektiği gibi çalışırım, yani. Bilgide bir boşluk gördüğümde. Şimdi, şimdiden kısa bir ara vermem ve ders kitabıyla daha yakından çalışmam gerektiğini hissediyorum. Forum katılımcılarının tüm tavsiyelerini not aldım ve onlara uymaya çalıştım. Bu arada, bu kadar kısa sürede sadece MQL5 Reference kullanarak en azından kendi başıma bir şeyler yazabildiğime şaşırdım.
Yeni bir komut dosyası New6.mq5 gönderiyorum, bu, mevcut grafikte bir BuyStop ve SellStop bekleyen emrini bir kerede sabit bir lot büyüklüğü ile mevcut fiyattan belirli bir mesafede yerleştirmeye yardımcı olur. Bu senaryoda, daha önce söz verdiğim gibi, bir programlama okulunun 1. sınıf öğrencisi için erişilebilir bir sunumda her şeyi boyamaya çalıştım.
Senaryoyu yazarken sadece MQL5 Reference'dan alınan bilgileri kullandım!
Saygılarımla, Vladimir.
Örnek güzel. Başlangıç noktası olarak kullanmanızı öneririm. Temel.
BayBrooklin :
Gelecekte, kendi kendine çalışma planına göre, görev, komut dosyasında aşamalı bir değişiklik yapmaktır, yani:
Hayır hayır. Henüz yeni işlevler eklemeyin. Şimdi mevcut mantığı geliştirin. Paralel olarak, betiğin uygulanmasındaki sorunlardan kurtulun (şimdi zaten görünüyorlar). Eğer ilgileniyorsanız tam olarak neyi yeniden yazacağınızı size söyleyeceğim.
Örnek güzel. Başlangıç noktası olarak kullanmanızı öneririm. Temel.
Hayır hayır. Henüz yeni işlevler eklemeyin. Şimdi mevcut mantığı geliştirin. Paralel olarak, betiğin uygulanmasındaki sorunlardan kurtulun (şimdi zaten görünüyorlar). Eğer ilgileniyorsanız tam olarak neyi yeniden yazacağınızı size söyleyeceğim.
Merhaba Vasili! Tabii ki, neyin yeniden yazılması gerektiğini söyle, çok ilgileniyorum!
Merhaba Vasili! Tabii ki, neyin yeniden yazılması gerektiğini söyle, çok ilgileniyorum!
Saygılarımla, Vladimir.
Programcıların iki sorunu vardır: derleyici hataları ve mimari sorunlar. Başlangıç seviyesindeyken, derleyiciyle savaşmaya odaklanırsınız ve nihai hedefiniz doğru çalışan bir programdır. Bununla birlikte, yeni başlayanlar için program çok hızlı bir şekilde, yazarın yakında çözemediği sözde spagetti koduna dönüşür. Bu nedenle, artık derleyiciye ve son betiğin doğruluğuna değil, mimari konulara odaklanmanızı öneririm. Piyano çalmayı öğrenmek gibidir: ilk başta parmaklarınızı doğru tutmayı ve enstrümanlara doğru oturmayı öğretirler, hiç kimse Bach çalmak için yeni başlayanlara ihtiyaç duymaz.
Komut dosyanızın davranışı iki parametre grubu tarafından belirlenir: ilki, bir makro biçiminde statik olarak ayarlanır. İkincisi , komut dosyası grafiğe yüklenirken kullanıcı tarafından ayarlanır. Artık kullanıcı, bu betiği yeniden derlemeden verilecek siparişin türünü seçemez. Bu kötü. Bu nedenle, ek bir parametre lehine bu makroları terk etmek daha iyidir:
enum ENUM_ORDER_TYPE_FLAGS
{
BuyStop = 1 , // Только BuyStop
SellStop = 2 , // Только SellStop
BuyStopAndSellStop = 4// BuyStop и SellStop
};
input ENUM_ORDER_TYPE_FLAGS TypeSendOrders = BuyStop; // Тип Выставляемого ордера(ов)
Buna göre, kullanıcı için bir seçim parametresi olarak uyguladığımız yeni bir enum tanımladık.
Programcıların iki sorunu vardır: derleyici hataları ve mimari sorunlar. Başlangıç seviyesindeyken, derleyiciyle savaşmaya odaklanırsınız ve nihai hedefiniz doğru çalışan bir programdır. Bununla birlikte, yeni başlayanlar için program çok hızlı bir şekilde, yazarın yakında çözemediği sözde spagetti koduna dönüşür. Bu nedenle, artık derleyiciye ve son betiğin doğruluğuna değil, mimari konulara odaklanmanızı öneririm. Piyano çalmayı öğrenmek gibidir: ilk başta parmaklarınızı doğru tutmayı ve enstrümanlara doğru oturmayı öğretirler, hiç kimse Bach çalmak için yeni başlayanlara ihtiyaç duymaz.
Komut dosyanızın davranışı iki parametre grubu tarafından belirlenir: ilki, bir makro biçiminde statik olarak ayarlanır. İkincisi , komut dosyası grafiğe yüklenirken kullanıcı tarafından ayarlanır. Artık kullanıcı, bu betiği yeniden derlemeden verilecek siparişin türünü seçemez. Bu kötü. Bu nedenle, ek bir parametre lehine bu makroları terk etmek daha iyidir:
Buna göre, kullanıcı için bir seçim parametresi olarak uyguladığımız yeni bir enum tanımladık.
Mükemmel, aslında, komut dosyasının adım adım değiştirilmesinin 4. paragrafında yazılanları, yani bekleyen siparişlerin seçimini genişletmeyi önerdiniz.
Kodunuzdaki bir sonraki sorun, uzun bir prosedür sayfasına dönüşmesidir. Tüm yeni başlayanlar bunu yapar. Ve bu, uzun yıllar onlarla birlikte kalan bir problemdir. Bu komut dosyası gibi temel bilgilerden başlayarak algoritmanızı parçalara ayırmayı öğrenin. Bunu yapmanın iki yolu vardır: işlevler ve sınıflar aracılığıyla. Sınıf kavramını ilk başta kavramak çok zor, bu yüzden fonksiyonlarla çalışmaya odaklanmanızı öneririm. Özelliklerin önemini düşünün:
MQL'de yazılan tüm kodlar (ve bunların tümü örneğin CodeBase'deki komut dosyaları, göstergeler ve Uzman Danışmanlardır) ya sistem işlevlerinin içinde ya da kullanıcı işlevlerinin içindedir.
Herhangi bir MQL kodu, düzinelerce yerleşik MQL işlevini çağırır. MetaTrader ve ticaret ortamı ile tüm etkileşim, bir veya başka bir sistem işlevinin çağrısı yoluyla gerçekleşir.
Harici parametrelere bağlı olmayan herhangi bir fonksiyon her zaman aynı sonucu verir. Böyle bir işlev, bir komut dosyasından/göstergeden/uzmandan diğerine kopyalanabilir ve doğru şekilde çalışacaktır. Rastgele bir prosedürel kod parçasını kopyalamak, aksine, büyük olasılıkla çalışmayacaktır.
Yararlı iş yapan herhangi bir özel işlevi yazabilirsiniz. Böylece MQL'nin standart işlevselliğini ihtiyacınız olan şekilde genişletecektir. Örneğin, şöyle düşünüyorsunuz: "MQL'nin böyle bir işlevi olsa harika olurdu..." - Peki o zaman neden kendiniz yazmıyorsunuz?
Kodunuzdaki bir sonraki sorun, uzun bir prosedür sayfasına dönüşmesidir. Tüm yeni başlayanlar bunu yapar. Ve bu uzun yıllar onlarla birlikte kalan bir sorun. Bu komut dosyası gibi temel bilgilerden başlayarak algoritmanızı parçalara ayırmayı öğrenin. Bunu yapmanın iki yolu vardır: işlevler ve sınıflar aracılığıyla. Sınıf kavramını ilk başta kavramak çok zor, bu yüzden fonksiyonlarla çalışmaya odaklanmanızı öneririm. Özelliklerin önemini düşünün:
MQL'de yazılan tüm kodlar (ve bunların tümü örneğin CodeBase'deki komut dosyaları, göstergeler ve Uzman Danışmanlardır) ya sistem işlevlerinin içinde ya da kullanıcı işlevlerinin içindedir.
Herhangi bir MQL kodu, düzinelerce yerleşik MQL işlevini çağırır. MetaTrader ve ticaret ortamı ile tüm etkileşim, bir veya başka bir sistem işlevinin çağrısı yoluyla gerçekleşir.
Harici parametrelere bağlı olmayan herhangi bir fonksiyon her zaman aynı sonucu verir. Böyle bir işlev, bir komut dosyasından/göstergeden/uzmandan diğerine kopyalanabilir ve doğru şekilde çalışacaktır. Rastgele bir prosedürel kod parçasını kopyalamak, aksine, büyük olasılıkla çalışmayacaktır.
Yararlı iş yapan herhangi bir özel işlevi yazabilirsiniz. Böylece MQL'nin standart işlevselliğini ihtiyacınız olan şekilde genişletecektir. Örneğin, şöyle düşünüyorsunuz: "MQL'nin böyle bir işlevi olsa harika olurdu..." - Peki o zaman neden kendiniz yazmıyorsunuz?
Böyle ayrıntılı bir tavsiye için teşekkür ederim Vasily. Kesinlikle not alacağım ve bana tavsiye ettiğiniz her şeyi anlamaya çalışacağım.
Kodunuzdaki bir sonraki sorun, uzun bir prosedür sayfasına dönüşmesidir. Tüm yeni başlayanlar bunu yapar. Ve bu, uzun yıllar onlarla birlikte kalan bir problemdir. Bu komut dosyası gibi temel bilgilerden başlayarak algoritmanızı parçalara ayırmayı öğrenin. Bunu yapmanın iki yolu vardır: işlevler ve sınıflar aracılığıyla. Sınıf kavramını ilk başta kavramak çok zor, bu yüzden fonksiyonlarla çalışmaya odaklanmanızı öneririm. Özelliklerin önemini düşünün:
MQL'de yazılan tüm kodlar (ve bunların tümü örneğin CodeBase'deki komut dosyaları, göstergeler ve Uzman Danışmanlardır) ya sistem işlevlerinin içinde ya da kullanıcı işlevlerinin içindedir.
Herhangi bir MQL kodu, düzinelerce yerleşik MQL işlevini çağırır. MetaTrader ve ticaret ortamı ile tüm etkileşim, bir veya başka bir sistem işlevinin çağrısı yoluyla gerçekleşir.
Harici parametrelere bağlı olmayan herhangi bir fonksiyon her zaman aynı sonucu verir. Böyle bir işlev, bir komut dosyasından/göstergeden/uzmandan diğerine kopyalanabilir ve doğru şekilde çalışacaktır. Rastgele bir prosedürel kod parçasını kopyalamak, aksine, büyük olasılıkla çalışmayacaktır.
Yararlı iş yapan herhangi bir özel işlevi yazabilirsiniz. Böylece MQL'nin standart işlevselliğini ihtiyacınız olan şekilde genişletecektir. Örneğin, şöyle düşünüyorsunuz: "MQL'nin böyle bir işlevi olsa harika olurdu..." - Peki o zaman neden kendiniz yazmıyorsunuz?
Vasily, bir kişi henüz dizilerde ustalaşmadı. Bu tür dersleri dinlemek için henüz çok erken.)
Gelecekte, kendi kendine çalışma planına göre, görev, komut dosyasında aşamalı bir değişiklik yapmaktır, yani:
Boşuna, elbette, bir ders kitabından öğrenme tavsiyesine uymadınız. Burada örneğin, sıraların, emirlerin vb. nasıl yerleştirileceğini öğreniyorsunuz, ancak yine de bir strateji yazamayacaksınız çünkü teorik bir temel yok. Tüm bu satırlar ve komut dosyaları, programlamanın ana şeylerini anlamanıza yardımcı olmayacak ve onlarsız çok ileri gidemezsiniz. İlk 4 ay sadece çalıştım, bir şeyler yazmaya bile çalışmadım. Elbette sizin gibi küstahça olabilirdi ama bu bilginin kalitesi düşük. Oldukça sık olarak, temel düzeyde gelecekte doldurulması gereken boşluklar vardır ...
Selam Peter! Ders kitabını gerektiği gibi çalışırım, yani. Bilgide bir boşluk gördüğümde. Şimdi, şimdiden kısa bir ara vermem ve ders kitabıyla daha yakından çalışmam gerektiğini hissediyorum. Forum katılımcılarının tüm tavsiyelerini not aldım ve onlara uymaya çalıştım. Bu arada, bu kadar kısa sürede sadece MQL5 Reference kullanarak en azından kendi başıma bir şeyler yazabildiğime şaşırdım.
Saygılarımla, Vladimir.
Herkese iyi akşamlar ve iyi bir ruh hali!
Yeni bir komut dosyası New6.mq5 gönderiyorum, bu, mevcut grafikte bir BuyStop ve SellStop bekleyen emrini bir kerede sabit bir lot büyüklüğü ile mevcut fiyattan belirli bir mesafede yerleştirmeye yardımcı olur. Bu senaryoda, daha önce söz verdiğim gibi, bir programlama okulunun 1. sınıf öğrencisi için erişilebilir bir sunumda her şeyi boyamaya çalıştım.
Senaryoyu yazarken sadece MQL5 Reference'dan alınan bilgileri kullandım!
Saygılarımla, Vladimir.
Örnek güzel. Başlangıç noktası olarak kullanmanızı öneririm. Temel.
Gelecekte, kendi kendine çalışma planına göre, görev, komut dosyasında aşamalı bir değişiklik yapmaktır, yani:
Hayır hayır. Henüz yeni işlevler eklemeyin. Şimdi mevcut mantığı geliştirin. Paralel olarak, betiğin uygulanmasındaki sorunlardan kurtulun (şimdi zaten görünüyorlar). Eğer ilgileniyorsanız tam olarak neyi yeniden yazacağınızı size söyleyeceğim.
Örnek güzel. Başlangıç noktası olarak kullanmanızı öneririm. Temel.
Hayır hayır. Henüz yeni işlevler eklemeyin. Şimdi mevcut mantığı geliştirin. Paralel olarak, betiğin uygulanmasındaki sorunlardan kurtulun (şimdi zaten görünüyorlar). Eğer ilgileniyorsanız tam olarak neyi yeniden yazacağınızı size söyleyeceğim.
Merhaba Vasili! Tabii ki, neyin yeniden yazılması gerektiğini söyle, çok ilgileniyorum!
Saygılarımla, Vladimir.
Merhaba Vasili! Tabii ki, neyin yeniden yazılması gerektiğini söyle, çok ilgileniyorum!
Saygılarımla, Vladimir.
Programcıların iki sorunu vardır: derleyici hataları ve mimari sorunlar. Başlangıç seviyesindeyken, derleyiciyle savaşmaya odaklanırsınız ve nihai hedefiniz doğru çalışan bir programdır. Bununla birlikte, yeni başlayanlar için program çok hızlı bir şekilde, yazarın yakında çözemediği sözde spagetti koduna dönüşür. Bu nedenle, artık derleyiciye ve son betiğin doğruluğuna değil, mimari konulara odaklanmanızı öneririm. Piyano çalmayı öğrenmek gibidir: ilk başta parmaklarınızı doğru tutmayı ve enstrümanlara doğru oturmayı öğretirler, hiç kimse Bach çalmak için yeni başlayanlara ihtiyaç duymaz.
Komut dosyanızın davranışı iki parametre grubu tarafından belirlenir: ilki, bir makro biçiminde statik olarak ayarlanır. İkincisi , komut dosyası grafiğe yüklenirken kullanıcı tarafından ayarlanır. Artık kullanıcı, bu betiği yeniden derlemeden verilecek siparişin türünü seçemez. Bu kötü. Bu nedenle, ek bir parametre lehine bu makroları terk etmek daha iyidir:
Buna göre, kullanıcı için bir seçim parametresi olarak uyguladığımız yeni bir enum tanımladık.
Programcıların iki sorunu vardır: derleyici hataları ve mimari sorunlar. Başlangıç seviyesindeyken, derleyiciyle savaşmaya odaklanırsınız ve nihai hedefiniz doğru çalışan bir programdır. Bununla birlikte, yeni başlayanlar için program çok hızlı bir şekilde, yazarın yakında çözemediği sözde spagetti koduna dönüşür. Bu nedenle, artık derleyiciye ve son betiğin doğruluğuna değil, mimari konulara odaklanmanızı öneririm. Piyano çalmayı öğrenmek gibidir: ilk başta parmaklarınızı doğru tutmayı ve enstrümanlara doğru oturmayı öğretirler, hiç kimse Bach çalmak için yeni başlayanlara ihtiyaç duymaz.
Komut dosyanızın davranışı iki parametre grubu tarafından belirlenir: ilki, bir makro biçiminde statik olarak ayarlanır. İkincisi , komut dosyası grafiğe yüklenirken kullanıcı tarafından ayarlanır. Artık kullanıcı, bu betiği yeniden derlemeden verilecek siparişin türünü seçemez. Bu kötü. Bu nedenle, ek bir parametre lehine bu makroları terk etmek daha iyidir:
Buna göre, kullanıcı için bir seçim parametresi olarak uyguladığımız yeni bir enum tanımladık.
Mükemmel, aslında, komut dosyasının adım adım değiştirilmesinin 4. paragrafında yazılanları, yani bekleyen siparişlerin seçimini genişletmeyi önerdiniz.
Teşekkür ederim!
Saygılarımla, Vladimir.
Kodunuzdaki bir sonraki sorun, uzun bir prosedür sayfasına dönüşmesidir. Tüm yeni başlayanlar bunu yapar. Ve bu, uzun yıllar onlarla birlikte kalan bir problemdir. Bu komut dosyası gibi temel bilgilerden başlayarak algoritmanızı parçalara ayırmayı öğrenin. Bunu yapmanın iki yolu vardır: işlevler ve sınıflar aracılığıyla. Sınıf kavramını ilk başta kavramak çok zor, bu yüzden fonksiyonlarla çalışmaya odaklanmanızı öneririm. Özelliklerin önemini düşünün:
Kodunuzdaki bir sonraki sorun, uzun bir prosedür sayfasına dönüşmesidir. Tüm yeni başlayanlar bunu yapar. Ve bu uzun yıllar onlarla birlikte kalan bir sorun. Bu komut dosyası gibi temel bilgilerden başlayarak algoritmanızı parçalara ayırmayı öğrenin. Bunu yapmanın iki yolu vardır: işlevler ve sınıflar aracılığıyla. Sınıf kavramını ilk başta kavramak çok zor, bu yüzden fonksiyonlarla çalışmaya odaklanmanızı öneririm. Özelliklerin önemini düşünün:
Böyle ayrıntılı bir tavsiye için teşekkür ederim Vasily. Kesinlikle not alacağım ve bana tavsiye ettiğiniz her şeyi anlamaya çalışacağım.
Saygılarımla, Vladimir.
Kodunuzdaki bir sonraki sorun, uzun bir prosedür sayfasına dönüşmesidir. Tüm yeni başlayanlar bunu yapar. Ve bu, uzun yıllar onlarla birlikte kalan bir problemdir. Bu komut dosyası gibi temel bilgilerden başlayarak algoritmanızı parçalara ayırmayı öğrenin. Bunu yapmanın iki yolu vardır: işlevler ve sınıflar aracılığıyla. Sınıf kavramını ilk başta kavramak çok zor, bu yüzden fonksiyonlarla çalışmaya odaklanmanızı öneririm. Özelliklerin önemini düşünün:
Vasily, bir kişi henüz dizilerde ustalaşmadı. Bu tür dersleri dinlemek için henüz çok erken.)
Peter, seninki de dahil tüm yapıcı tavsiyeler benim için önemli!
Saygılarımla, Vladimir.