[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 501

 
borilunad :
Sol kodlara dalmayı sevmiyorum ama double sonrası fonksiyonlarda neden &(!) olduğu hemen gözüme çarptı. Bu hata veriyor!

Her şey mantıklı. Bu, parametreleri referans olarak iletmek anlamına gelir.

Kodu boyamamak için kısaca anlatacağım.

3 işlev vardır:( int GetCrossingMa , int GetStochSignal ve int GetSignal() )

int GetSignal() işlevinde, ana olmayan işlevler ( int GetCrossingMa ve   int GetStochSignal ) içlerinde uygun sinyalleri almak için. Aynı verileri farklı fonksiyonlarda almamak için bunu yapmak istiyorum. Aynı arabaları 2 veya daha fazla fonksiyonda hesaplamak bence mantıklı değil. Bir kez hesaplandığında daha kolay. Neden bu konuda fazladan kaynak harcıyorsunuz?

 
hoz :

Her şey mantıklı. Bu, parametreleri referans olarak iletmek anlamına gelir.

Kodu boyamamak için kısaca anlatacağım.

3 işlev vardır:( int GetCrossingMa , int GetStochSignal ve int GetSignal() )

int GetSignal() işlevinde, ana olmayan işlevler ( int GetCrossingMa ve   int GetStochSignal ) içlerinde uygun sinyalleri almak için. Aynı verileri farklı fonksiyonlarda almamak için bunu yapmak istiyorum. Aynı arabaları 2 veya daha fazla fonksiyonda hesaplamak bence mantıklı değil. Bir kez hesaplandığında ve her şey daha kolay. Neden bu konuda fazladan kaynak harcıyorsunuz?

MKL4 dışında bir dilde programladınız mı?

 
hoz :

İşte benim ham baykuş test eğitimim:

function int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) çaprazlama sinyalini alır.

int GetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) işlevi , stokastikten bir sinyal alır.

void GetMomentumSignal() işlevi momentum değerini alır.

int GetSignal() işlevi, yalnızca onları değil, önceki 3 işlevi temel alan ortak bir sinyal alacaktır.Soru şudur. int GetSignal() işlevi tabiri caizse ve ana sinyal içinde elde edildiğinden, kenelerin tüm değerlerini ( i_maFast1 , i_maFast2 , i _maSlow1 ve i_maSlow2 ) ve değerleri alıyorum stokastiğin ( stochD1 , stochD2 , stochK1 , stochK2 )

Kod optimizasyonu açısından doğru olanı mı yapıyorum?

Evet, ancak GetSignal() işlevinde alınan tüm parametreler , ilgili işlevlere başvurularak iletilir.

Ama bu alanda

derleme sırasında bir hata oluşur:

  
Niye ya?

Bu, ihtiyacımız olan çubukta bir sinyal aramanın bir çeşidi olabilir:

 //+---------------------------------------------------------------------------------------+
//| Проверка пересечения скользящих средних                                               |
//+---------------------------------------------------------------------------------------+
int GetCrossingMa ( int fi_Bar = 1 )
{
     double i_maFast1 = iMA ( Symbol (), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0 , fi_Bar),       // Вычисляем быстрые скользящие..
           i_maFast2 = iMA ( Symbol (), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0 , fi_Bar + 1 ),     //..средние
           i_maSlow1 = iMA ( Symbol (), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0 , fi_Bar),       // Вычисляем медленные скользящие..
           i_maSlow2 = iMA ( Symbol (), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0 , fi_Bar + 1 );     //..средние
//----
     if (i_maFast2 < i_maSlow2) if (i_maFast1 > i_maSlow1)             // Если быстрая скользящая пересекла медленную снизу вверх..
     return (CROSSINGTOUP);                                           //.. значит, - пересечение вверх
     if (i_maFast2 > i_maSlow2) if (i_maFast1 < i_maSlow1)             // Если быстрая скользящая средняя пересекла медленную сверху вниз..
     return (CROSSINGTODOWN);                                         //..значит, - пересечение вниз
//----
     return (CROSSINGWAIT);                                               // Ожидаем пересечения
}

//+---------------------------------------------------------------------------------------+
//| Получение сигнала от Стохастика                                                       |
//+---------------------------------------------------------------------------------------+
int GetStochSignal ( int fi_Bar = 1 )
{
     double stochD1 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 1 , fi_Bar),     // Вычисляем значения сигнальной линии..
           stochD2 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 1 , fi_Bar + 1 ),   //..стохастика
           stochK1 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 0 , fi_Bar),     // Вычисляем значения главной линии..
           stochK2 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 0 , fi_Bar + 1 );   //..стохастика
//----
       if (stochD2 < stochK2) if (stochD1 > stochK1)                     // Если сигнальная линия пересекла главную снизу вверх..
       return (CROSSINGTOUP);                                           //..значит, - пересечение вверх
       if (stochD2 > stochK2) if (stochD1 < stochK1)                     // Если сигнальная линия пересекла главную сверху вниз..
       return (CROSSINGTODOWN);                                         // ..значит, - пересечение вниз
   }
//----
   return (CROSSINGWAIT);                                             // Ожидаем пересечения
}
//+---------------------------------------------------------------------------------------+
//| Получение сигнала от Моментума                                                        |
//+---------------------------------------------------------------------------------------+
double GetMomentumSignal ( int fi_Bar = 0 )
{ return ( iMomentum ( Symbol (), i_TF, i_momPeriod, 0 , fi_Bar));}
//+---------------------------------------------------------------------------------------+
//| Получение общего сигнала для входа в рынок                                            |
//+---------------------------------------------------------------------------------------+
int GetSignal ( int fi_Bar = 1 )
{
     int li_Signal;
//----
       double ld_SignalMomentum = GetMomentumSignal (fi_Bar);
       int     li_SignalStoch = GetStochSignal (fi_Bar),
             li_CrossingMA = GetCrossingMa (fi_Bar);
//----
     return (li_Signal);
}

Ve son GetSignal() işlevinde tüm sinyalleri (kendi başınıza) "eklersiniz".

Not Göstergeden sinyal alınırken "ince" bir an vardır. Örneğin, maSlow'un maFast'ın üstünde / altında olduğu gerçeğini düzeltebilir veya kesişme anını "yakalayabilirsiniz". Yaklaşım ve kod farklıdır.

 
Roman. :

MKL4 dışında bir dilde programladınız mı?


Biraz inci ve biraz php. Ancak diğer dillere ciddi şekilde yaklaşmadı. gerek yoktu. Önemli mi?
 
hoz :

Her şey mantıklı. Bu, parametreleri referans olarak iletmek anlamına gelir.

Kodu boyamamak için kısaca anlatacağım.

3 işlev vardır:( int GetCrossingMa , int GetStochSignal ve int GetSignal() )

int GetSignal() işlevinde, ana olmayan işlevler ( int GetCrossingMa ve   int GetStochSignal ) içlerinde uygun sinyalleri almak için. Aynı verileri farklı fonksiyonlarda almamak için bunu yapmak istiyorum. Aynı arabaları 2 veya daha fazla fonksiyonda hesaplamak bence mantıklı değil. Bir kez hesaplandığında ve her şey daha kolay. Neden bu konuda fazladan kaynak harcıyorsunuz?

Açıklamalar açık, ancak eylemler değil.
İşte bunlar: " int GetSignal() işlevinde, tiklerin ve diğer göstergelerin değerleri elde edilir " Sürümünüzdeki eylemler, hafifçe söylemek gerekirse, "şüpheli", çünkü bu tür eylemlere ihtiyaç var.

Bu kod:

   for ( int i= 1 ;i<= Bars ;i++)
   {
       double i_maFast1 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i);       // Вычисляем быстрые скользящие..
       double i_maFast2 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i+ 1 );     //..средние
       double i_maSlow1 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i);       // Вычисляем медленные скользящие..
       double i_maSlow2 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i+ 1 );     //..средние
       double stochD1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i);     // Вычисляем значения сигнальной линии..
       double stochD2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i+ 1 );   //..стохастика
       double stochK1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i);     // Вычисляем значения главной линии..
       double stochK2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i+ 1 );   //..стохастика
   }

tam P.... Burada "olup bitenin" farkında mısınız??? - TÜM "çubuk satırını" aşmak işe yaramaz ve döngünün sonunda, değerler değişkenlerde bırakılır ... sonra kendiniz tahmin edin.

 
İyi günler arkadaşlar, meslekten olmayan kişiye NZ MT4 ticaret platformunu kullanmaya nasıl başlayacağını söyleyin? Platformun arayüzünü çözemiyorum, nereden başlayacağımı, demo hesap demek istiyorum, daha sonra satışla hisse nasıl alınır, butonları çözemiyorum..
 
hoz :
Biraz inci ve biraz php. Ancak diğer dillere ciddi şekilde yaklaşmadı. gerek yoktu. Önemli mi?

Evet. Var. Bu durumda, her şeyi kaldırın (yani, olmamalıdır) " bence" ve dahası - "makul değil".

Bunu doğru şekilde yapıyorsun! "Bunun için ek kaynakları boşa harcamak " dahil .

Ders kitabına ve rıhtımlara ek olarak, BASE ve ABC'yi dikkatlice okuyun - her şey orada sıralanır!

 
TarasBY :

Açıklamalar açık, ancak eylemler değil.
İşte bunlar: " int GetSignal() işlevinde, tiklerin ve diğer göstergelerin değerleri elde edilir " Sürümünüzdeki eylemler, hafifçe söylemek gerekirse, "şüpheli", çünkü bu tür eylemlere ihtiyaç var.

Bu kod:

tam P.... Burada "olup bitenin" farkında mısınız??? - TÜM "çubuk satırını" aşmak işe yaramaz ve döngünün sonunda, değerler değişkenlerde bırakılır ... sonra kendiniz tahmin edin.

Tabiki anladım. Hızlı ve yavaş maskara ve sinyal çizgisi stokastik değerleri, belirli bir TF'de her çubuğun kapanışında zamanın her anında bulunur. Ve sonra kesiştikleri yer çizilir. O zaman mantıklı olmayan ne?

 
Roman. :

Evet. Var. Bu durumda, her şeyi kaldırın (yani, olmamalıdır) " bence" ve dahası - "makul değil".

Bunu doğru şekilde yapıyorsun! "Bunun için ek kaynakları boşa harcamak " dahil .

Ders kitabına ve rıhtımlara ek olarak, BASE ve ABC'yi dikkatlice okuyun - her şey orada sıralanır!

Bu yüzden okudum ve okudum.

Ve " Bu durumda, her şeyi kaldırın (yani, olmaması gerekir)" ile ne demek istiyorsunuz? Ne temizlemeli?

 
hoz :

Bu yüzden okudum ve okudum.

Ve " Bu durumda, her şeyi kaldırın (yani, olmaması gerekir)" ile ne demek istiyorsunuz? Ne temizlemeli?

" Aynı verileri farklı fonksiyonlarda almamak için bunu yapmak istiyorum. Aynı daktiloyu 2 veya daha fazla fonksiyonda hesaplamak mantıklı değil. Sadece bir kez hesapladım ve bu kadar. Neden buna ek kaynak harcıyorum?"

Belgelerde yazıldığı gibi yapın ve tekerleği yeniden icat etmeye gerek yok.

Peki ya bu döngü?

 for ( int i= 1 ;i<= Bars ;i++)
   {
       double i_maFast1 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i);       // Вычисляем быстрые скользящие..
       double i_maFast2 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i+ 1 );     //..средние
       double i_maSlow1 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i);       // Вычисляем медленные скользящие..
       double i_maSlow2 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i+ 1 );     //..средние
       double stochD1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i);     // Вычисляем значения сигнальной линии..
       double stochD2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i+ 1 );   //..стохастика
       double stochK1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i);     // Вычисляем значения главной линии..
       double stochK2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i+ 1 );   //..стохастика
   }

Adımları kendiniz uygulayın, çıkmanın bir sonucu olarak ne olacak ve bundan sonra ne yapacaksınız? Brad tamamlandı.

Ders kitabında olduğu gibi yapın - alım satım kriterlerinin tetiklenmesini belirlemek için bu fonksiyondaki tüm alım satım sinyalleri sıralıdır (farklı sinyalleri farklı fonksiyonlara sarabilir ve ancak o zaman bu alım satım kriterlerinin tetiklenmesini kontrol ederken onlarla çalışabilirsiniz), ardından koşullar onların tetiklenmesi.

Burayı oku:

" YAZILIM ÇÖZÜMLERİ

Yeni başlayanlar için nereden başlamalı?
Son fraktalın fiyatı NASIL bulunur?
NASIL iki MA'nın kesişim sinyali alınır?
Gerekli tutarsızlık göz önüne alındığında MA'nın kesişimi NASIL kontrol edilir? "