Daha az kod, daha fazla kullanım Uzman Danışman yazmak - sayfa 2

 
Maxim Kuznetsov :

kullanım durumunda, stil, en yaygın olarak temelde prosedüreldir. Potansiyel kullanıcılar ( acemi programcılar ) aynen böyle yazar.

Demek istediğim, tarzın esasen prosedürel. Onlar. onunla birlikte gelen tüm sorunlarla birlikte hem içeride hem dışarıda prosedüreldir. Kullanıcı düzeyinde, uygulama ayrıntılarını ifşa etmek temelde imkansızdır. Ve zaten kullanıcı seviyesi kodunda nihai özelliklere sahipsiniz:

 double GetData(EA *ea, int id, int shift, double &data[])
{
#ifdef __MQL4__
   // для 4-ки всё просто - по идентификаторам серии и бара получить данные
   switch ((ENUM_SERIES)id) {
       case FAST_MA:
         return data[shift]= iMA (ea. Symbol ,ea. Period ,FAST_MA_PERIOD, 0 ,FAST_MA_METHOD,FAST_MA_PRICE,shift);
       case SLOW_MA:
         return data[shift]= iMA (ea. Symbol ,ea. Period ,SLOW_MA_PERIOD, 0 ,SLOW_MA_METHOD,SLOW_MA_PRICE,shift);
   }
   return EMPTY_VALUE ;
#else
   ...
#endif
}

Koşullu derleme makroları, MA işlevinin belirli uygulamalarına çağrılar vb. vb. Onlar. OOP değil, FP değil, bu tür sertleştirilmiş prosedürel programlama. Eh, pastanın üzerine bir kiraz olarak: ea.Symbol yani. resmen hala OOP.

 
Maxim Kuznetsov :

Danışmanlar için bir temel oluşturmaya çalışacağım (ya da ilgilenenler varsa deneyeceğiz).

başlıkta bahsedilenlerle aynı işe yaramaz (çoğu için) şapkayı alırsınız.

çünkü hemen iyi değil, kendi yönteminizle yazmaya çalışıyorsunuz. ve adı geçen tüm yazarların yanı sıra.

 
Vasiliy Sokolov :

Demek istediğim, tarzın esasen prosedürel. Onlar. onunla birlikte gelen tüm sorunlarla birlikte hem içeride hem dışarıda prosedüreldir. Kullanıcı düzeyinde, uygulama ayrıntılarını ifşa etmek temelde imkansızdır. Ve zaten kullanıcı düzeyindeki kodda nihai özelliklere sahipsiniz:

Koşullu derleme makroları, MA işlevinin belirli uygulamalarına çağrılar vb. vb. Onlar. OOP değil, FP değil, bu tür sertleştirilmiş prosedürel programlama. Eh, pastanın üzerine bir kiraz olarak: ea.Symbol yani. resmen hala OOP.

Bir kez daha, kullanım senaryosu, potansiyel kullanıcıların amaçlanan perspektifinden yazılmıştır.

Ancak, kullanım senaryosunun kendisine dokunmadan kitaplık üzerinde çalışmaya başlayabilmeniz için yeterli hacimde.

Koşullu derleme ayarlanmalıdır, çünkü forumda hem 4 hem de 5 vardır.

 
Maxim Kuznetsov :

Bir kez daha, kullanım senaryosu, potansiyel kullanıcıların amaçlanan perspektifinden yazılmıştır.

Başka bir deyişle, iMA(...) gibi platforma özgü işlevlere çağrı eklemek için prosedürel stil gereksinimi nerede?

Maksim Kuznetsov :

Ancak, kullanım senaryosunun kendisine dokunmadan kitaplık üzerinde çalışmaya başlayabilmeniz için yeterli hacimde.

Kullanım durumu, platforma özgü işlevlere yönelik belirli çağrılarla doluysa, dokunma nasıl olmaz?

Maksim Kuznetsov :

Koşullu derleme ayarlanmalıdır, çünkü forumda hem 4 hem de 5 vardır.

Onlar. "evrensel kod" kullanıcı durumu seviyesi platformdan bağımsız bile olamaz mı?

 
Maxim Kuznetsov :

...

Kullanıcı durumundan bahsediyorsak - bir numaralı emir: bu seviyede belirli bir uygulama yok . Şunlara zaten tam bir bağımlılığınız var: 1) platform, 2) kullanıcı durumu düzeyinde terminal API'si. Onlar. önerilen uygulama, beyan edilen konsepte tam olarak uymuyor.

 
Vasiliy Sokolov :

Kullanıcı durumundan bahsediyorsak - bir numaralı emir: bu seviyede belirli bir uygulama yok . Şunlara zaten tam bir bağımlılığınız var: 1) platform, 2) kullanıcı durumu düzeyinde terminal API'si. Onlar. önerilen uygulama, beyan edilen konsepte tam olarak uymuyor.

burada, genel olarak, MQL dilinde ve MT4,MT5 :-) ticaret terminallerinin API'sı altında yazarlar, bu nedenle terminal API'sine erişim normaldir.

use-case, alan için tipik şeyleri göstermeli/yapmalıdır. Sadece birkaç sayı eklemek için değil, aynı zamanda, ulaşmak istediğimiz, kullanıcı tarafından anlaşılabilir bir hedefe sahip olmak. Uzman Danışmanların minimum olası amacı ticaret yapmaktır :-) Aklıma gelen en basit Uzman Danışman ortalamaların kesiştiği noktada ticaret yapmaktır. Orijinal gönderide tam olarak var.

Ve bu arada, işe yarıyor. Şu anda, ticaret fonksiyonları yerine, taslaklar ve keneler çizilir :-) Verilerle çalışma yazıyorum / hata ayıklıyorum. Verilerin olduğu kısım ham olmasına rağmen tartışmaya hazır olur olmaz yayınlayacağım

 
Maxim Kuznetsov :

burada, genel olarak, MQL dilinde ve MT4,MT5 :-) ticaret terminallerinin API'sı altında yazarlar, bu nedenle terminal API'sine erişim normaldir.

use-case, alan için tipik şeyleri göstermeli/yapmalıdır. Sadece birkaç sayı eklemek için değil, aynı zamanda, ulaşmak istediğimiz, kullanıcı tarafından anlaşılabilir bir hedefe sahip olmak. Uzman Danışmanların minimum olası amacı ticaret yapmaktır :-) Aklıma gelen en basit Uzman Danışman ortalamaların kesiştiği noktada ticaret yapmaktır. Orijinal gönderide tam olarak var.

Ve bu arada, işe yarıyor. Şu anda, ticaret fonksiyonları yerine, taslaklar ve keneler çizilir :-) Verilerle çalışma yazıyorum / hata ayıklıyorum. Verilerin olduğu kısım ham olmasına rağmen tartışmaya hazır olur olmaz yayınlayacağım

Her şeyi doğru yazıyorsun. Ancak kullanıcı burada çok daha anlaşılır, aşağıdaki sözde kod:

 if (SMA( Close , 12 ) > SMA( Close , 24 ))
   BUY();
else
   SELL();

Başka bir şey de, bu formda çalışmasını sağlamak (prosedürle ilgili not edeceğim) oh, ne kadar zor, ama yine de mümkün. Kullanıcı düzeyinde mümkün olduğunca basit ve soyut talimatlar olması için çaba göstermeniz gereken şey budur. Ve kullanıcının koşullu derleme makrolarını, ortalamaları hesaplamak için belirli işlevleri ve ustalaşamayacağı diğer teknik ayrıntıları belirtmesi gerektiği ortaya çıktı.

 
Vasiliy Sokolov :

Başka bir deyişle, iMA(...) gibi platforma özgü işlevlere çağrı eklemek için prosedürel stil gereksinimi nerede?

Kullanım durumu, platforma özgü işlevlere yönelik belirli çağrılarla doluysa, dokunma nasıl olmaz?

Onlar. "evrensel kod" kullanıcı durumu seviyesi platformdan bağımsız bile olamaz mı?

4/5 platformlarının farklı bir API'si var, öyle oldu.

Her şey için başka bir uyumluluk katmanı veya evrensel bir kitaplık yazmıyorum. Ne kadar istersen :-)

sadece danışmanlar için temeldir.

 
Vasiliy Sokolov :

Her şeyi doğru yazıyorsun. Ancak kullanıcı burada çok daha anlaşılır, aşağıdaki sözde kod:

Başka bir şey de, bu formda çalışmasını sağlamak (prosedürel, not edeceğim) oh, ne kadar zor, ama yine de mümkün. Kullanıcı düzeyinde mümkün olduğunca basit ve soyut talimatlar olması için çaba göstermeniz gereken şey budur. Ve kullanıcının koşullu derleme makrolarını, ortalamaları hesaplamak için belirli işlevleri ve ustalaşamayacağı diğer teknik ayrıntıları belirtmesi gerektiği ortaya çıktı.

Prensipte GetData OnCrossSignal içinde, sağladığınız girişe benzer bir giriş kullanmak mümkün olacaktır. Potansiyel olarak betik yazmak bile mümkün olacak :-) Ama her şeyin bir zamanı var... Verilerle çalışmak elektronik bir elektronik tablo gibi inşa edilmiştir.

 
Maxim Kuznetsov :

4/5 platformlarının farklı bir API'si var, öyle oldu.

Her şey için başka bir uyumluluk katmanı veya evrensel bir kitaplık yazmıyorum. Ne kadar istersen :-)

sadece danışmanlar için temeldir.

Artem'in koduna bakın. Kodu, hedef platformdan bağımsız tek bir API'ye sahiptir. Bu nedenle, "oldu" argümanını duymak garip.