Kütüphaneler: Uzman - sayfa 6

 
fxsaber:

Bir EA'nın yazarı, test cihazındaki sonuçların kötü olduğu durumlarda EA'sının ticaretini asla savunmayacaktır.

Yapmayacaktır, ancak bunlar sinyal değildir - Uzman Danışmanlar, aracı kurum merkezinden bağımsız olarak satılır. O zaman satıcının bu tür sonuçları nereden aldığını belirtmek zorunlu olmalıdır ve bu DC'nin bir tür reklamıdır....

 
Aleksey Vyazmikin:

Ajitasyon yapmayacağım, ancak bunlar sinyal değil - danışmanlar DC'den bağımsız olarak satılıyor. O zaman satıcının bu tür sonuçları nereden aldığını belirtmek zorunlu olmalıdır ve bu bir tür DC'nin reklamıdır....

Muhtemelen, teorik muhakeme bazen iyidir. Ancak yine de bu yazıyla ilgili uygulamayla ilgileniyorum. Bu konuya yazılmasının bir nedeni var.

Her yönden akıtmayı durdurmayı öneriyorum.

 
fxsaber:

Pazarda birçok kez yazarların her bir karakter için TC'lerinin set dosyalarını eklediklerini gördüm. Buna göre, alıcılar bunları kullanır.


Market TC'ler için aşağıdaki mantığı kullanmayı öneriyorum

  • Bir giriş parametresi eklenir
  • Bu klasör kullanıcı tarafından belirtilirse, Uzman Danışman bu klasördeki tüm setleri otomatik olarak alır ve ilgili sürümlerini çalıştırır.
  • Kullanıcının yalnızca set dosyasını klasöre yerleştirmesi ve Uzman Danışmanı başlatırken bu klasörün yolunu belirtmesi gerekir (Uzman Danışmanın yazarı bu yolu bir kerede ekleyebilir).
  • Kullanıcı bir hata yapar ve iki kez çalıştırırsa, bunu yapması otomatik olarak engellenebilir.

Bu yaklaşım, kendi TS'nizi tek bir tıklama ile başlatmak için de uygundur.

Elbette, çözüm her iki platform için de evrensel olabilir. Kabaca konuşmak gerekirse, herhangi bir Uzman Danışmanın kaynak koduna yalnızca bir satır eklenmesi gerekecektir.


Büyük olasılıkla, bundan sonra EA'ları bu şekilde başlatacağım. Bu yöntemde bir kusur veya bir iyileştirme seçeneği gören varsa, bana bildirin.

Test cihazında çalıştırmak çevrimiçi olandan farklı olacaktır (sonuçta klasörler farklıdır), EA'nın belirli bir kopyasını bir setle eşleştirmek için fazladan bir şey yapmanız gerekir.

Kendi görselleştirmesi olmadan bu EA sürüsünü yönetmek de zor görünüyor.

Ayrıca, set setinin değiştirilmesine tüm EA'ların yeniden başlatılması eşlik edecektir.


Bireysel MT grafikleri, profilin "sabit klasöründe" dosyalanan "şeffaf dosyalar" olarak hizmet eder. Bu, her dosyaya gerekli bilgileri koymanıza veya gerekli dosyayı kolayca çıkarmanıza / değiştirmenize olanak tanır. Ve profili değiştirerek başka bir "sabit klasöre" geçebilirsiniz. Oldukça kullanışlı.

Tüm EA'larda bir parametreyi değiştirme ihtiyacıyla karşılaştım (örneğin, risk). Bunu şablon dosyalarında toplu değiştirme veya özel bir ana değişken aracılığıyla yaptım. Bunu uygun bir fonksiyona sarmak uygun olacaktır.

 
Andrey Khatimlianskii:

Test cihazında çalıştırma çevrimiçi olandan farklı olacaktır (klasörler farklıdır), EA'nın belirli bir kopyasını setle eşleştirmek için ekstra bir şey yapmanız gerekir.

Hiçbir fark olmayacaktır.

Peki, kendi görselleştirmesi olmadan bu EA sürüsünü yönetmek zor görünüyor.

Şu anda olduğundan daha karmaşık değil.

Ayrıca set değişikliklerine tüm danışmanların yeniden başlatılması eşlik edecektir.

EA normal şekilde başlatılacaktır. Yalnızca isterseniz, setlerin bulunduğu bir klasör belirtebilirsiniz.

Bireysel MT grafikleri, profilin "sabit klasöründe" dosyalanan "şeffaf dosyalar" olarak hizmet eder. Bu, her dosyaya gerekli bilgileri koymanıza veya gerekli dosyayı kolayca çıkarmanıza / değiştirmenize olanak tanır. Ve profili değiştirerek başka bir "sabit klasöre" geçebilirsiniz. Oldukça kullanışlı.

Elbette, MQL5\Profiles\Charts\....'da profilleri otomatik olarak okuyabilir/yazabilirsiniz. Ancak profiller oldukça farklıdır.

Tüm EA'larda bir parametreyi değiştirme ihtiyacıyla karşılaştım (örneğin, risk). Bunu şablon dosyalarında toplu değiştirme veya özel bir ana değişken aracılığıyla yaptım. Bunu uygun bir fonksiyona sarmak uygun olacaktır.

Bu tür bir işlevsellik kütüphanedeki örnekler arasındadır.


Bununla birlikte, giriş parametrelerini yeniden başlatma yöntemiyle değiştirmek ile F7 aracılığıyla elle değiştirmek arasında ayrım yapmalısınız. İlki tam teşekküllü bir yeniden başlatmadır, ikincisi ise değildir. İkincisine ihtiyaç duyduğunuz zamanlar vardır. Ancak bu MQL'de uygulanamaz.

 
fxsaber:

Hiçbir fark olmayacak.

Nasıl olacak? İstediğiniz bir seti seçerek mi?


fxsaber:

Şu anda olduğundan daha karmaşık değil.

Şu anda, çalışan her EA'nın kendi seti var.

Ancak 10 Uzman Danışman çalıştıran "yönetici", bazıları parametreleri manuel olarak değiştirirse nasıl davranacak? Ve yöneticiyi yeniden başlattıktan sonra ne olacak? Orijinal setler başlatılacak mı?

 
Andrey Khatimlianskii:

Nasıl? Gerekli bir set seçerek mi?

MQL_TESTER.

Şimdi çalışan her Uzman Danışmanın kendi seti vardır.

Ancak 10 Uzman Danışman çalıştıran bir "yönetici", bazılarının parametreleri manuel olarak değiştirilirse nasıl davranacak? Ve yöneticiyi yeniden başlattıktan sonra ne olacak? Orijinal setler başlatılacak mı?

Yöneticinin kullanılmaması gerekiyor. Görünüşe göre, sadece kodla ne demek istediğimi gösterebileceğim. Katılımınız için teşekkürler.

 
fxsaber:

MQL_TESTER.

Biraz daha ayrıntılı bir cevap verebilir misiniz?

Başlangıcın test cihazında olduğunu belirlemek elbette mümkündür. Ancak setler klasörüne erişim yoktur (veya kamon klasörüne erişiminiz varsa vardır) ve bu setleri okumanın bir anlamı yoktur - bunlardan yalnızca birini test etmeniz gerekir.

Ve testten sonra, onu çalışan Uzman Danışman ile eşleştirmeniz gerekir (örneğin, onu durdurmak veya bazı parametreleri değiştirmek için). Bunu yapmak için, setlerin bulunduğu klasöre gitmem, gerekli olanı bulmam ve düzenlemem gerekiyor mu?


O zaman tek bir EA'dan tüm setlerde işlem yapmak daha makul görünüyor. Bir veya birkaç strateji (set) seçme imkanı ile.

 
Andrey Khatimlianskii:

Biraz daha ayrıntılı bir cevap alabilir miyim?

Başlangıcın test cihazında olduğunu belirlemek elbette mümkündür. Ancak setler klasörüne erişim yoktur (veya kamon varsa vardır) ve bu setleri okumanın bir anlamı yoktur - bunlardan yalnızca birini test etmeniz gerekir.

Ve testten sonra, onu çalışan Uzman Danışman ile eşleştirmeniz gerekir (örneğin, onu durdurmak veya bazı parametreleri değiştirmek için). Bunu yapmak için, setlerin bulunduğu klasöre gitmem, gerekli olanı bulmam ve düzenlemem gerekiyor mu?

Test Cihazı için özel bir opt dosyası kullanılır. Ondan herhangi bir set tek bir tıklama ile başlatılır. Bu çok kullanışlıdır.

Eğer bir opt-dosyanız yoksa, eski yöntemlerle çalışırsınız. Yani, hiçbir şey karmaşık değildir.

O zaman tüm setleri tek bir EA'dan takas etmek daha mantıklı görünüyor. Bir veya birkaç strateji (set) seçme imkanı ile.

Böyle bir seçenek Test Cihazında her zaman mevcuttur - bir set yükleyin.

 
EA'larınızda böyle bir kontrol oluşturmanızı tavsiye ederim
// EA klonunun hatalı başlatılmasına karşı çapraz platform koruma örneği.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/tr/code/19003

string GetExpertData( const ulong Chart = 0 ) 
{ 
  string Str = NULL; 

  MqlParam Parameters[]; 
  string Names[]; 

  if (EXPERT::Parameters(Chart, Parameters, Names)) 
  { 
    Str += "\n" + ::ChartSymbol(Chart) + " " + ::EnumToString(::ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n"; 

    const int Amount = ::ArraySize(Names); 

    for (int i = 0; i < Amount; i++) 
      Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n"; 
  } 

  return(Str); 
} 

// Aynı danışman çalışıyor mu?
long IsRunning( void )
{ 
  long Res = 0;
  const string Str = GetExpertData();
  long Chart = ::ChartFirst(); 

  while (!Res && (Chart != -1)) 
    if ((Chart != ::ChartID()) && EXPERT::Is() && (Str == GetExpertData(Chart)))
      Res = Chart;
    else
      Chart = ::ChartNext(Chart); 

  return(Res); 
}

input int Range1 = 1;
input int Range2 = 1;

int OnInit()
{
  return(!MQLInfoInteger(MQL_TESTER) && IsRunning() &&
         (MessageBox("This EA is already running." +
                     GetExpertData() + "\nRun?", MQLInfoString(MQL_PROGRAM_NAME), MB_YESNO) == IDNO) ?
         INIT_FAILED : INIT_SUCCEEDED);
}
 

// MT4-advisor hangi Uzun / Kısa modda çalıştırıldığını gösterir.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/tr/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
  MqlParam Params[];
  string Names[];
  
  const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
  return(((Res & 3) << 1) + (Res & 1));
}

string LongShortToString( const int Chart_ID = 0 )
{
  const int Flag = GetLongShortFlag(Chart_ID);
  string Str = NULL;
  
  if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY) && (bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Long & Short";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY))
    Str = "Only Long";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Only Short";
    
  return(Str);
}

int OnInit()
{
  Alert(LongShortToString());
  
  return(INIT_FAILED);
}