Kütüphaneler: Uzman - sayfa 10

 

Sezgisel olmayan şey, parametre ve ad dizilerinin farklı boyutlar döndürmesidir, çünkü adlarda Uzman Danışmanın adını temsil eden boş parametre yoktur.

Ayrıca gerçek parametre türlerini bilmek istiyorum, şimdi her yerde "string" döndürülüyor. Bunu nasıl sağlayacağımı bilmiyorum - kafa kafaya giden yol: dizenin içeriğini ve kayan noktalı sayıya veya tam sayıya indirgenebilirliğini analiz edin, ancak parametre "0" depolarsa, türü tanımlanamaz.

 
Stanislav Korotky:

Sezgisel olmayan şey, parametre ve ad dizilerinin farklı boyutlar döndürmesidir çünkü adlarda Uzman Danışmanın adını temsil eden bir null parametresi yoktur.

Evet, bu pek hoş değil. Belki de Names[] için sahte bir null öğesi yapmalıydık.

Ayrıca parametrelerin gerçek türlerini bilmek istiyorum, şu anda her yerde "string" döndürülüyor. Bunu nasıl sağlayacağımı bilmiyorum - kafa kafaya yapmanın yolu: dizenin içeriğini ve kayan nokta sayısına veya tam sayıya indirgenebilirliğini analiz edin, ancak parametre "0" depolarsa, türünü belirleyemezsiniz.

Kütüphanede bunun gereksiz olduğunu düşündüm, çünkü hala özel ENUM'lar var. Dahası, bunun gerekli olabileceği bir görev de görmedim.

Kendi otomatik optimize edicimi yapıyordum. Orada kullanışlı değildi.

 
fxsaber:

Evet, bu pek hoş değil. Belki de Names[] için sahte bir null öğesi yapmalıydınız.

Kütüphanede gereksiz olduğunu düşündüm, çünkü özel ENUM'lar da var. Dahası, bunun gerekli olabileceği bir görev de görmedim.

Kendi otomatik optimize edicimi yapıyordum. Orada işe yaramadı.

ParameterGetRange/ParameterSetRange işlevleri yalnızca long ve double türleri için tanımlanmıştır, bu nedenle parametre döngüsü yalnızca sayılar için ayarları analiz etmeyi ve değiştirmeyi gerektirir.

 
Stanislav Korotky:

ParameterGetRange/ParameterSetRange işlevleri sırasıyla yalnızca long ve double türleri için tanımlanmıştır, parametreler üzerindeki döngü yalnızca sayılar için ayarları analiz etmeyi ve değiştirmeyi gerektirir.

Tamsayı türleri bool, enum'lardır.

 
fxsaber:

Tamsayı türleri bool, enum'lardır.

Bu normaldir. Artık her şeyin dizelerle temsil edilmesi ve gerçek dizeleri ayıklamanın imkansız olması normal değildir.

 
Stanislav Korotky:

Bu normal. Normal olmayan şey, her şeyin artık dizelerle temsil edilmesi ve gerçek dizeleri eleyememenizdir.

Optimize edilecek parametreler önceden numaralandırılmıştır. Yani aralarında kesinlikle string yoktur. Böylece bir filtre olarak kullanabilirsiniz.

 

Merhaba, yetkili ticaret ile uzman üzerinde nasıl açılacağını anlayamıyorum

bu kod geçtiğim girdilerle normal bir şekilde açılıyor.

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
// Uzman Danışmanın ilk giriş parametresi
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// Yeni bir grafikte Uzman Danışmanı çalıştırın
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

Eğer bu kodu kullanırsam

   Params[0].string_value = "Experts\\Shared Projects\\luipaulo89\\experts\\PullbackEA_v2.ex5";
   Params[0].string_value += "\nexpertmode=5";
// Uzman Danışmanın ilk giriş parametresi
   Params[1].type = TYPE_STRING;
   Params[1].string_value = "Hello World!";
   Params[2].type = TYPE_INT;
   Params[2].integer_value = 0;
// Yeni bir grafikte Uzman Danışmanı çalıştırın
   if (inpFirst==1) EXPERT::Run(ChartOpen(_Symbol, _Period), Params);

izin verilen ticaretle açılır ancak parametreleri geçmez.

Görev, aynı Uzman Danışmanı yeni bir grafikte açmaktır.

input group "EA Settings"
input int inpFirst = 1;//ilk örnek;

Böylece yalnızca ilk Uzman Danışman yenilerini açabilir, yenilerine 0 geçiyorum, ancak maalesef ikinci varyantta (ticarete izin verildiğinde) hiçbir parametre geçilmiyor (veya yanlış geçiliyor).

inpFirst = 0;
 

tpl dosyasında başlık mükemmel bir şekilde oluşturulur, ancak bazı nedenlerden dolayı parametreyi geçmez

<expert>
name=PullbackEA_v2
path=Experts\Shared Projects\luipaulo89\experts\PullbackEA_v2.ex5
expertmode=5
<inputs>
inpFirst=1

inpFirst=0 olması bekleniyor

   Params[1].type = TYPE_INT;
   Params[1].integer_value = 0;
 
Aleksei Beliakov:

Kütüphaneyi güncelleyin.

Uzman Danışmanı Test Edin.

input group "EA Settings"
input int inpFirst = 1;//ilk örnek;

void OnInit() {}


Örnek1.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // Danışmanlığa Giden Yol
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";

  // giriş grubu "EA Ayarları"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;

  // giriş int inpFirst
  Params[2].type = TYPE_INT;
  Params[2].integer_value = 123;

  EXPERT::Run(ChartOpen(_Symbol, PERIOD_CURRENT), Params); // Uzman Danışmanı kendi grafiğinde doğru şekilde çalıştıramayacak
}


Örnek2.

#include <fxsaber\Expert.mqh>

void OnStart()
{
  MqlParam Params[3];

  // Danışmanlığa Giden Yol
  Params[0].string_value = "Experts\\Test6.ex5";
  Params[0].string_value += "\nexpertmode=5";
  
  // giriş grubu "EA Ayarları"
  Params[1].type = TYPE_STRING;
  Params[1].string_value = NULL;
  EXPERT::AddInputName(Params[1], " "); // Probl.

  // giriş int inpFirst
  Params[2].type = TYPE_INT;
  Params[2].integer_value = 123;
  EXPERT::AddInputName(Params[2], "inpFirst");

  EXPERT::Run(0, Params); // Uzman Danışmanı kendi grafiğinde doğru şekilde çalıştırabilecektir.
}
 
Teşekkür ederim her zamanki gibi en iyisisiniz!!!