Yeni başlayanlardan temel sorular

 

Merhaba!

Bu soruları buradaki ilgili konuda sormaya çalıştığım için hemen rezervasyon yapacağım , ancak soru nedense gereken ilgiyi görmedi. Her ne kadar bana öyle gelse de, birçok kişinin en az bir kez değindiği konular kafalarda endişe / ortaya çıkıyor. SSS'deki sorular gibi bir şey (yanlış olsam da). Soruları burada çoğaltacağım:

1. Mql4 ve Mql5 arasındaki fark (web sitesi ve gerçek programlama dili). Sırasıyla yerleşik Mql4 ve Mql5 ile Metatrade 4 ve Metatrader 5 vardır. Ayrıca iki farklı ilgili site var. Aynı zamanda, MT4'te baktığım tüm uzmanlar bu siteye yönlendiriyor. Hangisi daha alakalı? Hangi forum "canlı"? Soru yazmak için en iyi yer neresidir? MT ve Mql'nin farklı sürümleri arasında geriye dönük uyumluluk? Şu anda sırasıyla Mql4 üzerinde MT4'te bir Uzman Danışman yazıyorum. Bunun nedeni, test için demoyu kullandığım komisyoncunun MT4 kullanmasıdır. Expert Advisor'ın yazıldığı dil nasıl belirlenir? Sadece uzantı (.mq4 ve .mq5) ile kastediyorum. Ve dosya yeniden adlandırılırsa, derlenir mi (yine, bu uyumlulukla ilgili)?

2. Expert Advisor'ın dinamik harici parametreleri. EA'nın özelleştirilebilir parametrelerini bir şekilde dinamik olarak değiştirmek mümkün mü? Açıklayayım... Örneğin, harici bir bool a parametresi var. Doğruysa, ek bir extern int b parametresi yapılandırmanız gerekir. a=yanlış ise, b'ye gerek yoktur. Seçilen akım değerine bağlı olarak bir şekilde görüntülemek/göstermemek mümkün mü? Dış parametreleri değiştirmek için işleyiciler bulamadığım ve #if .. #endif gibi bir yapı olmadığı göz önüne alındığında, bunun yapılamayacağından şüpheleniyorum ... Eğer öyleyse, ama bana bu durumda en iyi nasıl devam edeceğimi söyleme işlemin dış ayarlarını aşırı yüklememek için? Örneğin, a=false ayarlayabilirsiniz, bu durumda b parametresinin kullanılmadığını unutun, ancak yine de optimizasyona dahil edin (bu mantıklı olmasa da, yalnızca fazladan zaman harcar). Ve b parametresinin sadece bir tane olması bir şeydir. Ve örneğin, harici bir parametre numaralandırması yaparsam ve araç için birkaç açılır seçenek varsa. Ortak bir yanları vardır (çünkü bunları birkaç tane yazmak yerine tek bir Uzman Danışman içinde uygulamak mantıklıdır), ancak birçok farklı parametreye sahip farklı olanlar da vardır. Ardından, seçilen araç için hangi parametrelerin alakalı olduğu konusunda kafa karıştırmak çok kolaydır.

3. Uzmanın otomatik optimizasyonu. IMHO, çok uygun ve gerekli bir şey. Burada bir makalenin gerçek ticareti sürecinde bir ticaret robotunun otomatik optimizasyonunu buldum. Ama orada, anladığım kadarıyla, dışarıdan (çalışan bir MT örneğinden) optimizasyon için başlatılan ikinci bir MT örneği kullanılıyor ve optimizasyon sonuçları rapordan html biçiminde okunuyor. Çok kullanışlı ve eğri değil. Mantıksal olarak, optimizasyon için kendi işlevinizi/dll'nizi yazmanız ve doğrudan Expert Advisor'dan çalıştırmanız gerekir. Yani asıl soru burada. Anladığım kadarıyla, MT'nin kendisinde, strateji test cihazında bir genetik optimizasyon algoritması programlanmıştır. Bu algoritmalar hakkında çok az şey biliyorum. Ancak teoride uzun süredir biliniyorlar, bu nedenle soru - tekerleği neden yeniden icat ettiler?) Doğrudan MT'de kullanılan hazır bir algoritma var mı? Belki de zaten terminalin kütüphanelerinde bir yerdedir ... Belki ayrı kaynaklar veya hazır bir dll vardır. Genel olarak, lütfen bu konudaki deneyiminizi paylaşın.

Bu soruların en azından bir kısmını yanıtladığınız için şimdiden teşekkür ederiz.

 
gammaray :

Merhaba!

Bu soruları buradaki ilgili konuda sormaya çalıştığım için hemen rezervasyon yapacağım , ancak soru nedense gereken ilgiyi görmedi. Her ne kadar bana öyle gelse de, birçok kişinin en az bir kez değindiği konular kafalarda endişe / ortaya çıkıyor. SSS'deki sorular gibi bir şey (yanlış olsam da). Soruları burada çoğaltacağım:

1. Mql4 ve Mql5 arasındaki fark (web sitesi ve gerçek programlama dili). Sırasıyla yerleşik Mql4 ve Mql5 ile Metatrade 4 ve Metatrader 5 vardır. Ayrıca iki farklı ilgili site var. Aynı zamanda, MT4'te baktığım tüm uzmanlar bu siteye yönlendiriyor. Hangisi daha alakalı? Hangi forum "canlı"? Soru yazmak için en iyi yer neresidir? MT ve Mql'nin farklı sürümleri arasında geriye dönük uyumluluk? Şu anda sırasıyla Mql4 üzerinde MT4'te bir Uzman Danışman yazıyorum. Bunun nedeni, test için demoyu kullandığım komisyoncunun MT4 kullanmasıdır. ...

...

MQL4 ile ilgili soruları "dördüncü" forumda ele almak mantıklıdır. Ancak, MQL5 ve MQL4 arasındaki farklar artık önemli değildir. MQL4'ten geçiş . Bu nedenle, bu forumdaki "dört" hakkında bir soru sormak istiyorsanız, sorunun MT4 ile ilgili olduğunu doğrudan konu başlığında belirtmeniz daha iyidir. Böylece daha net olacaktır.


... Expert Advisor'ın yazıldığı dil nasıl belirlenir? Sadece uzantı (.mq4 ve .mq5) ile kastediyorum. Ve dosya yeniden adlandırılırsa, derlenir mi (yine, bu uyumlulukla ilgili)?

...

Ek olarak. Yeniden adlandırdıktan sonra mükemmel bir şekilde derlenen ve hem MT4 hem de MT5'te çalışan dosyalar var - burada genel tarifler yok.
 
Karputov Vladimir :

MQL4 ile ilgili soruları "dördüncü" forumda ele almak mantıklıdır. Ancak, MQL5 ve MQL4 arasındaki farklar artık önemli değildir. MQL4'ten geçiş . Bu nedenle, bu forumdaki "dört" hakkında bir soru sormak istiyorsanız, sorunun MT4 ile ilgili olduğunu doğrudan konu başlığında belirtmeniz daha iyidir. Böylece daha net olacaktır.


Ek olarak. Yeniden adlandırdıktan sonra mükemmel bir şekilde derlenen ve hem MT4 hem de MT5'te çalışan dosyalar var - burada genel tarifler yok.
Burada sadece ilk soru mql4 ile ilgilidir, geri kalan IMHO mql4 ve mql5 için ortaktır. İlk soruyu yanıtladığınız için teşekkür ederiz;) Şu anda en çok ikinci soru ilgi çekiyor. Üçüncü soru, IMHO, tüm EA yazarlarının ilgisini çekebilir)
 
İkinci soru için input, sinput, ParametreGetRange(...), ParametreSetRange(...)'a bakın.
 
Vladimir Kazakov :
İkinci soru için input, sinput, ParametreGetRange(...), ParametreSetRange(...)'a bakın.

Bir EA'nın harici parametrelerinin nasıl ayarlanacağını sormadım. Bunu yapmayı uzun zaman önce öğrendim (girdi, harici). Ayarlarda görüntülenen parametre setini dinamik olarak değiştirmenin nasıl ve mümkün olduğunu sordum. mql'de ParametreGetRange ve ParametreSetRange'i bulamadım. Bunlar yerleşik işlevler değil mi? Onları nerede aramalı?

PS sinput kullanımı sadece parametrenin diğer parametrelere bağlanmadan kendi başına optimize edilemeyeceğine dair bir ipucu olarak kullanılabilir. Ancak, çalıştırmada fazladan zaman kaybetmemek için optimizasyonda hangi parametrelerin kullanılması gerektiğini (belirli seçilen parametrelerle hangi parametrelerin önemli olduğunu) önermek için, halihazırda seçilmiş parametrelere bağlı olarak girişi dinamik olarak sinput'a bile değiştiremiyorum. şu anda önemli parametreler yok

 

Seçenekler sekmesinde hiçbir şeyi programlı olarak değiştiremezsiniz. OnInit() öğesinden INIT_PARAMETERS_INCORRECT döndürerek geçersiz parametre kümesini atlayabilirsiniz.

Optimizasyon için başlatma, adım, durdurma ve izni programlı olarak değiştirebilirsiniz: https://www.mql5.com/ru/docs/optimization_frames

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Kazakov :

Seçenekler sekmesinde hiçbir şeyi programlı olarak değiştiremezsiniz. Geçersiz parametre setini atlayamazsınız - gereksiz hesaplamalar yapmamak için saplamayı açabilirsiniz.

Optimizasyon için başlatma, adım, durdurma ve izni programlı olarak değiştirebilirsiniz: https://www.mql5.com/en/docs/optimization_frames

Görünüşe göre bu işlevler mql5'te göründü, çünkü mql4 yardımında bunlara sahip değilim. Sonra tekrar uyumluluk sorunu. Metatrader 5'te Uzman Danışman yazarsam, Metatrader 4'te kullanabilir miyim? Pek olası görünmüyor... Özellikle mql5'te ortaya çıkan yeni işlevleri kullanıyorsanız. mql5'in optimizasyonu başlatmak için işlevleri var mı (bu sadece 3. sorumla ilgili)?
 

Konuya "yeni başlayanlardan temel sorular" deniyor, ancak yeni başlayan biri olarak hiçbir şey anlamadım. Bu, temel soruma kesinlikle (veya daha doğrusu umarım) bir cevap alacağım anlamına geliyor. Kendi robotumu yazmak için bir danışman yazmaya yönelik adım adım kılavuzu izlemeye çalışıyorum. Şu anda sıkışıp kaldım: örneğin, iki MA kesiştiğinde veya Bollinger bantları daraldığında veya diğer sinyaller olduğunda, belirli bir gösterge sinyali oluştuğunda (SL veya TP'yi beklemeden) MCL5'te (SL veya TP'yi beklemeden) bir açık pozisyonu zorla nasıl kapatabilirim? ? ClosePos() gibi bir fonksiyon olmalı ama nerede ve nasıl geri alabilirim? Ayrıntılı bir kod parçası istiyorum, çünkü Ben kendim nüanslara ulaşamıyorum - hala MKL5'te bir bebeğim.

 
doublezero :

Konuya "yeni başlayanlardan temel sorular" deniyor, ancak yeni başlayan biri olarak hiçbir şey anlamadım. Bu, temel soruma kesinlikle (veya daha doğrusu umarım) bir cevap alacağım anlamına geliyor. Kendi robotumu yazmak için bir danışman yazmaya yönelik adım adım kılavuzu izlemeye çalışıyorum. Şu anda sıkışıp kaldım: örneğin, iki MA kesiştiğinde veya Bollinger bantları daraldığında veya diğer sinyaller olduğunda, belirli bir gösterge sinyali oluştuğunda (SL veya TP'yi beklemeden) MCL5'te (SL veya TP'yi beklemeden) bir açık pozisyonu zorla nasıl kapatabilirim? ? ClosePos() gibi bir fonksiyon olmalı ama nerede ve nasıl geri alabilirim? Ayrıntılı bir kod parçası istiyorum, çünkü Ben kendim nüanslara ulaşamıyorum - hala MKL5'te bir bebeğim.

Bunu kendim bir aydan az bir süredir yapıyorum. Burada soru, kendinizi kazmak mı yoksa forumda sormak mı istediğinizdir. Genellikle basit sorular sormam, çünkü bir şekilde onursuzdur (yardıma bakabilir, İnternet'te hazır cevapları arayabilirsiniz). Bu nedenle, bu ay boyunca ortaya çıkan oldukça kapsamlı soruları sordum. Sorunuzla ilgili olarak... OrderClose işlevi çağrılır. Çok sayıda kullanım örneği. Aynı gömülü MACD Örneği içinde. MACD sinyallerine dayalı siparişleri kapatmak için ondan gelen kod (Ayrıca İzleyen Durdurma mekanizmasının nasıl uygulanacağına dair bir örnek kod da vardır)


//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {
            //--- should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            //--- should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }


Genel olarak, dizin yardımına "Sipariş" kelimesini yazmanız yeterlidir - orada siparişleri yönetmekle ilgili tüm işlevler görüntülenecektir.
 
gammaray :

Bunu kendim bir aydan az bir süredir yapıyorum. Burada soru, kendinizi kazmak mı yoksa forumda sormak mı istediğinizdir. Genellikle basit sorular sormam, çünkü bir şekilde onursuzdur (yardıma bakabilir, İnternet'te hazır cevapları arayabilirsiniz). Bu nedenle, bu ay boyunca ortaya çıkan oldukça kapsamlı soruları sordum. Sorunuzla ilgili olarak... OrderClose işlevi çağrılır. Çok sayıda kullanım örneği. Aynı gömülü MACD Örneği içinde. MACD sinyallerine dayalı siparişleri kapatmak için ondan gelen kod (Ayrıca İzleyen Durdurma mekanizmasının nasıl uygulanacağına dair bir örnek kod da vardır)



Bu kadar hızlı yanıt için teşekkürler! Son zamanlarda bunu yapan birinin büyük olasılıkla cevap vereceğini düşündüm.

Sadece şimdi OrderClose MKL4'te, ancak MKL5'te değil. CTrade sınıfındaki standart kitaplıkta yalnızca PositionClose işlevi vardır . Ve onu oradan nasıl çıkaracağım konusunda kesinlikle hiçbir fikrim yok. Bunun için bir şekilde koddan kütüphaneye, ardından CTrade sınıfına başvurmanız gerektiğini düşünüyorum .... Genel olarak, bu benim için karanlık bir orman. MKL5 üzerinde çalışmayacaktım, sadece oldukça başarılı (benim için) stratejimi otomatikleştirmeye karar verdim, bu yüzden adım adım talimatları izlemeye başladım. Ve sıkışmış...

 
doublezero :

Bu kadar hızlı yanıt için teşekkürler! Son zamanlarda bunu yapan birinin büyük olasılıkla cevap vereceğini düşündüm.

Sadece şimdi OrderClose MKL4'te, ancak MKL5'te değil. CTrade sınıfındaki standart kitaplıkta yalnızca PositionClose işlevi vardır . Ve onu oradan nasıl çıkaracağım konusunda kesinlikle hiçbir fikrim yok. Bunun için bir şekilde koddan kütüphaneye, ardından CTrade sınıfına başvurmanız gerektiğini düşünüyorum .... Genel olarak, bu benim için karanlık bir orman. MKL5 üzerinde çalışmayacaktım, sadece oldukça başarılı (benim için) stratejimi otomatikleştirmeye karar verdim, bu yüzden adım adım talimatları izlemeye başladım. Ve sıkışmış...

Burada mql 5'te bir şeyler ters gitti, geçiş yapma isteği tamamen ortadan kalktı) Orada her şey OrderSend ile yapılıyor (kapatma dahil). Yine, MT5 aynı MACD Örneğine sahiptir. Sadece şimdi 10 kat daha fazla satır alıyor ...
Ошибка закрытия ордера
Ошибка закрытия ордера
  • www.mql5.com
Скажите а есть отдельная команда по закрытию позиции или только встречная позиция? - - Категория: эксперты форекс, торговые роботы и советники
Neden: