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

 

İşlem sırasında özel bir göstergede giriş parametresi nasıl değiştirilir ve değişiklikler uygulanır?

Diyelim ki ma 25 vardı, şimdi ma 33'e ihtiyacım var.

Anladığım kadarıyla giriş parametreleri yalnızca başlatma sırasında ortaya çıkıyor. Ama işlem yaparken göstergeyi değiştirmem gerekiyor

 input int             InpMA_ma_period      = 25 ;         // Параметры МА 
input int             InpMA_ma_shift       = 0 ;         // MA PRICE_HIGH and PRICE_LOW: horizontal shift 
input ENUM_MA_METHOD InpMA_ma_method      = MODE_SMA ;   // MA PRICE_HIGH: smoothing type 

int             handle_MA; 

int OnInit ()
  {
    handle_MA= iCustom (m_symbol.Name(), Period (), "MA" ,InpMA_ma_period,InpMA_ma_shift,InpMA_ma_method, PRICE_CLOSE );
  }

void OnTick ()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   InpMA_ma_period      = 33 ;
  }
 
ilvic :

İşlem sırasında özel bir göstergede giriş parametresi nasıl değiştirilir ve değişiklikler uygulanır?

Diyelim ki ma 25 vardı, şimdi ma 33'e ihtiyacım var.

Anladığım kadarıyla giriş parametreleri yalnızca başlatma sırasında ortaya çıkıyor. Ama işlem yaparken göstergeyi değiştirmem gerekiyor

Önceden İKİ gösterge oluşturun.

 
Vladimir Karputov :

Önceden İKİ gösterge oluşturun.

Hayır, iki göstergeye ihtiyacım yok. Müzayede sırasında bunu değiştirmem gerekiyor.

Dinamikler, tabiri caizse.

Bir şekilde boşaltılıp yeni parametrelerle yüklenebilir mi?

 
ilvic :

Hayır, iki göstergeye ihtiyacım yok. Müzayede sırasında bunu değiştirmem gerekiyor.

Dinamikler, tabiri caizse.

Bir şekilde boşaltılıp yeni parametrelerle yüklenebilir mi?

Üç gösterge oluşturun :).

Genel olarak, önce düşünmeniz, bir ortam yaratmanız ve ancak o zaman veri almanız gerekir.

 
Vladimir Karputov :

Üç gösterge oluşturun :).

Genel olarak, önce düşünmeniz, bir ortam yaratmanız ve ancak o zaman veri almanız gerekir.

Diyelimki-

Danışmanın başlangıcında, MA=25 parametresi;

Her yeni tik ile MA = +1 parametresini değiştiriyorum.

yani MA =26;

Farklı koşullar için 500 tutamaç oluşturmayacağım)

 
ilvic :

İşlem sırasında özel bir göstergede giriş parametresi nasıl değiştirilir ve değişiklikler uygulanır?

Diyelim ki ma 25 vardı, şimdi ma 33'e ihtiyacım var.

Anladığım kadarıyla giriş parametreleri yalnızca başlatma sırasında ortaya çıkıyor. Ama işlem yaparken göstergeyi değiştirmem gerekiyor

Görünüşe göre danışmanın giriş parametrelerindeki değerleri değiştirirken OnInit() tetikleniyor, bu da yeni parametre değerlerinin uygulandığı anlamına geliyor. Ya da ben hatalıyım?

 
Vitaly Muzichenko :

Görünüşe göre danışmanın giriş parametrelerindeki değerleri değiştirirken OnInit() tetikleniyor, bu da yeni parametre değerlerinin uygulandığı anlamına geliyor. Ya da ben hatalıyım?

Ben böyle oldum.

Çalışmıyor

 input int             InpMA_ma_period      = 25 ;         // Параметры МА 
input int             InpMA_ma_shift       = 0 ;         // MA PRICE_HIGH and PRICE_LOW: horizontal shift 
input ENUM_MA_METHOD InpMA_ma_method      = MODE_SMA ;   // MA PRICE_HIGH: smoothing type 

double ExtInpMA_ma_period=InpMA_ma_period;
int             handle_MA; 

int OnInit ()
  {
    handle_MA= iCustom (m_symbol.Name(), Period (), "MA" ,ExtInpMA_ma_period,InpMA_ma_shift,InpMA_ma_method, PRICE_CLOSE );
  }

void OnTick ()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   ExtInpMA_ma_period      = 33 ;
  }
 
ilvic :

Ben böyle oldum.

Çalışmıyor

Eh, işe yaramaz, göstergeyi yeniden başlatmak için OnInit'i aramanız gerekir.

Çalışma sırasında parametreleri ne sıklıkla değiştiriyorsunuz?

 
Vitaly Muzichenko :

Eh, işe yaramaz, göstergeyi yeniden başlatmak için OnInit'i aramanız gerekir.

Çalışma sırasında parametreleri ne sıklıkla değiştiriyorsunuz?

Sık sık değiştireceğim.

Yani kod böyle mi görünmeli?

 void OnTick ()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   
   ExtInpMA_ma_period      = 33 ;
   OnInit();

  }
 
ilvic :

Sık sık değiştireceğim.

Yani kod böyle mi görünmeli?

Her onayda OnInit'i çekmemek için değer değişikliklerini kontrol etmek için bir bayrak ayarlamalısınız.

Bunun gibi bir şey:

 void OnTick ()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   static int NewExtInpMA_ma_period;
   if (ExtInpMA_ma_period != NewExtInpMA_ma_period)
    {
     NewExtInpMA_ma_period=ExtInpMA_ma_period;
     OnInit ();
    }
  }