Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1434

 
jeremy10p100 # :
Merhaba ve cevabınız için teşekkür ederim. Beklentilerimi karşılayan bir komut dosyası oluşturabildim, ancak ne yazık ki hala anlayamadığım veya düzeltemediğim iki hata var. Biraz yardım için kiminle iletişime geçeceğimi biliyor musunuz? Derlemeden sonra hata olarak kaydedilen sadece iki satır kod ...

Freelance bir iş oluşturabilir ve işinize başvuran geliştiriciler arasından seçim yapabilirsiniz

https://www.mql5.com/fr/job

Applications de trading pour MetaTrader 5 à commander
Applications de trading pour MetaTrader 5 à commander
  • 2023.01.08
  • www.mql5.com
Le plus grand service de freelance avec des développeurs d'applications MQL5
 
#include <JAson.mqh>
CJAVal jv;

jv["type"] = "BTCUSD";
jv["title"] = "test";

int result;
char res_data[],post[];
ArrayResize(post,StringToCharArray(jv.Serialize(),post,0,WHOLE_ARRAY)-1);
string headers="Content-Type: application/json\r\nAccept: text/plain";
result=WebRequest("POST",url,headers,3000,post,res_data,res_headers);

WebRequest aracılığıyla json göndermeye çalıştığımda, sunucu"\u0022BTCUSD\u0022, denormalizasyon için geçerli bir paket türü değil." döndürüyor.

Yani ters virgül \u0022 kodlamasını beğenmiyor.
Başlıklarda ve
StringToCharArray'de tüm kodlama çeşitlerini belirtmeyi den edim, hiçbir şey yardımcı olmuyor.

Python'dan her şey sorunsuz bir şekilde uçuyor:
response = requests.post(url, data=json.dumps(data), headers=headers)
yani sunucu ile her şey yolunda.

Sorun nasıl çözülür?

 

Soruyu biraz daha farklı ifade edeyim. Optimize ediciye OnInit bloğunda belirli koşullar altında test/optimizasyon varyantını atlaması için bir komut vermek mümkün mü?

input group "Входные настройки Стохастик"
input bool Stoch = false; // Стохастик включен/выключен
input int in_StochK = 14; // период основной линии K
input int in_StochD = 3; // период первичного сглаживания D
input int in_StochSlow = 3; // период окончательного сглаживания

int OnInit() {
if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
   {
   // Некая команда, которая говорит, что такой вариант даже не стоит пробовать оптимизировать  
   }
}

Bunu yapmayı denedim, ancak yanlış optimizasyon varyantlarına yol açıyor.

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0))) 
   {
   
Print("Такой вариант тестирования не имеет смысла");
   return(INIT_FAILED);
   }

Hedefim, optimizasyon sırasında 4 stokastik parametrenin (Stoch, in_StochK, int in_StochD, int in_StochSlow) varyantlarının numaralandırılmasını etkinleştirebilmek.

  • Stokastik etkinleştirildiğinde (Stoch = true), optimize edici in_StochK, in_StochD, in_StochSlow değişkenlerini numaralandırıyor. Bu kısımda her şey doğru çalışıyor.
  • Stokastik kapatıldığında (Stoch = false), optimize edici hala in_StochK, in_StochD, in_StochSlow değişkenlerini arar. Ve Stoch = false ise bunları aramaması için kodda bir tür durdurucu yapmam gerekiyor.
 

Merhaba @taramortom.

Muhtemelen şu şekilde değiştirirseniz yardımcı olacaktır

return(INIT_FAILED)

için

return(INIT_PARAMETERS_INCORRECT)
 
Yuriy Bykov #:

Merhaba, @taramortom.

Muhtemelen sadece

için

Bunu denedim. İşe yaramıyor. İyileştirici bu komutla hala yanlış çalışıyor.
 

Belki de optimize edicinin düzgün çalışmamasının nedeni koddaki bu yanlışlıktır:

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
 
Yuriy Bykov #:

Belki de optimize edicinin düzgün çalışmamasının nedeni koddaki bu yanlışlıktır:


Sebep bu değil. Kodu çalışma mantığına bir örnek olması için yaptım. Kodun tam sürümü çok büyük - birçok farklı osilatör var. Optimize ederken, optimize edicinin farklı kombinasyonları denemesini istiyorum (bir osilatör açık, iki osilatör açık, üç osilatör açık, vb.)

- Bu durdurucu kullanıldığında, çok sayıda geçiş olması gerekmesine rağmen, optimize edici az sayıda geçişle çalışmayı hızla tamamlar.

- Bu kısıtlamayı kullanmadan, optimize edici daha iyi çalışır, ancak çok sayıda boş varyant üretir (yukarıdaki örnek için - Stokastik kapatıldığında parametrelerini hala arar). Tanrı boş varyantlarla olsun, ancak bu hem optimizasyon için ekstra zaman hem de yararlı olanlar yerine boş geçişler anlamına gelir.

 
Genetik mi yoksa tam optimizasyon mu kullanıyorsunuz?
Ben de açıkça gereksiz parametre kombinasyonlarını hariç tutmak için bu yaklaşımı kullandım ve yanlış optimize edici performansı fark etmedim. Aksine, optimize edici tam olarak beklendiği gibi çalıştı.
Kaç tane ve hangilerinin gerçekten kaçırıldığını kontrol etmek ve nedenlerini anlamak için kaçırılan parametre kombinasyonlarını veritabanına veya ortak bir dosyaya kaydetmeyi deneyebilirsiniz.
 

Merhaba MA'ya dayalı bir gösterge yazıyorum - ExtJawsHandle=iMA(NULL,0,Period,0,Method,AppliedPrice);

aşağıdaki şekilde gösterildiği gibi MA seviyelerine programlı olarak nasıl ulaşabilirim.

Türünde bir yapı

IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

çalışmıyor.


 
Tango_X IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

işe yaramıyor.


seçenek yok mu?)