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.
...
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.
İ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

- www.mql5.com
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
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.
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)
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;
}
}
}
}
}
}
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ış...
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ış...

- www.mql5.com

- Ü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
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.