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

 
Güzel gün! Lütfen yardım edin, üç MA aşıldığında bir Alert() çağrısı uygulamak için basit bir fikir var.
Programdaki kavşağın açıklaması. Her şey çalışıyor gibi görünüyor, ama olması gerektiği gibi değil. Değişken değerleri bir ondalık basamağa yuvarladım, böylece
kavşağı durdurun. Ve bu Alert() beni ortalamalar aynı konuma gelene kadar çalıyor. Bir kez, iyi veya 5 defaya kadar çağrılacak şekilde nasıl yapılır.
//+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   extern int Period_MA_Blue = 4 ;         // Период 4-х расчётной синей МА (4 часа)
   extern int Period_MA_Green = 13 ;       // Период 13-ти расчётной зеленой МА (13 часов)
   extern int Period_MA_Orange = 50 ;      // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
   double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
   string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;

//+------------------------------------------------------------------+
//| Начало программы                                  |
//+------------------------------------------------------------------+

int init (){ return ( 0 );}
int EURUSD ()
      {
  
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD )
         {
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
          Alert ( "Cигнал на ПОКУПКУ паре EURUSD" );
          return ( 11 ); // 11 - на первой паре сигнал на покупку.
         }
  
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
         {
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
          Alert( "Cигнал на ПРОДАЖУ паре EURUSD" );
          return( 10 ); // 20 - на первой паре сигнал на продажу.
         }     
      }
int start ()

   {

//+------------------------------------------------------------------+
//| Блок работы с EURUSD                               |
//+------------------------------------------------------------------+
   if( EURUSD() != 11 || EURUSD() != 10 )
      {
         // Если функция EURUSD() не зафиксировала ни один из сигналов, обрабатываем данные дальше.
         MA_Blue_EURUSD = iMA ( "EURUSD" , PERIOD_H1 ,Period_MA_Blue, 0 ,MODE_EMA,PRICE_CLOSE, 0 );
         MA_Green_EURUSD = iMA ( "EURUSD" , PERIOD_H1 ,Period_MA_Green, 0 ,MODE_EMA,PRICE_CLOSE, 0 );
         MA_Orange_EURUSD = iMA ( "EURUSD" , PERIOD_H1 ,Period_MA_Orange, 0 ,MODE_EMA,PRICE_CLOSE, 0 );
  
         SMA_Blue_EURUSD = MA_Blue_EURUSD;
     // Преобразование int в string
         SMA_Blue_EURUSD = StringSetChar (SMA_Blue_EURUSD, 6 , '');      // Округление до х.хххх
         SMA_Green_EURUSD = MA_Green_EURUSD;    // Преобразование int в string
         SMA_Green_EURUSD = StringSetChar (SMA_Green_EURUSD, 6 , '');    // Округление до х.хххх
         SMA_Orange_EURUSD = MA_Orange_EURUSD; // Преобразование int в string
         SMA_Orange_EURUSD = StringSetChar (SMA_Orange_EURUSD, 6 , ''); // Округление до х.хххх

      }

     }

int deinit (){ return ( 0 );}




Kökte her şey yolunda değilse, kesişimi izlemek için yöntemler önerin. Teşekkür ederim.
 
Zherart :
Güzel gün! Lütfen yardım edin, üç MA kesiştiğinde Alert() çağrısını uygulamak için basit bir fikir var.
Programdaki kavşağın açıklaması. Her şey çalışıyor gibi görünüyor, ama olması gerektiği gibi değil. Değişken değerleri bir ondalık basamağa yuvarladım, böylece
kavşağı durdurun. Ve bu Alert() beni ortalamalar aynı konuma gelene kadar çalıyor. Bir kez, iyi veya 5 kez çağrılacak şekilde nasıl yapılır.Her şey kökte doğru değilse, kesişimi izlemek için yöntemler önerin. Teşekkür ederim.

 //+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   extern int Period_MA_Blue = 4 ;         // Период 4-х расчётной синей МА (4 часа)
   extern int Period_MA_Green = 13 ;       // Период 13-ти расчётной зеленой МА (13 часов)
   extern int Period_MA_Orange = 50 ;       // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
   double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
   string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;
   int БАРАБАНИТЬ = 1 ; // Сколько раз подавать сигнал
   int ПОКУПКА= 0 ,ПРОДАЖА= 0 ;
//+------------------------------------------------------------------+
//| Начало программы                                  |
//+------------------------------------------------------------------+

int init(){ return ( 0 );}
int EURUSD() 
      {
   
       if (SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD)
         { 
           // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
           if (ПОКУПКА<БАРАБАНИТЬ) { Alert ( "Cигнал на ПОКУПКУ паре EURUSD" );ПОКУПКА++;}
           return ( 11 ); // 11 - на первой паре сигнал на покупку.
         }
       else ПОКУПКА= 0 ;
       if (SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
         { 
           // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
           if (ПРОДАЖА<БАРАБАНИТЬ) { Alert ( "Cигнал на ПРОДАЖУ паре EURUSD" );ПРОДАЖА++;}
           return ( 10 ); // 20 - на первой паре сигнал на продажу.
         }
       else ПРОДАЖА= 0 ;       
      }

Önemsiz bir yerde...
 
Sepulka, teşekkürler! Deneyeceğiz. Anladım!!!
 
Ya da ben aptalım ya da terminalle ilgili bir şey. Danışmanı optimize etmek istedim, ancak uzmanın özelliklerinde "giriş parametreleri" sekmesi yok. Yardım.
 
prom18 :
Ya da ben aptalım ya da terminalle ilgili bir şey. Danışmanı optimize etmek istedim, ancak uzmanın özelliklerinde "giriş parametreleri" sekmesi yok. Yardım.



https://forum.mql4.com/en/46980/page417#702426

https://www.mql5.com/ru/forum/138609/page417#702426

 

Bir fonksiyonun kabul edilen parametrelerinde bir dizi kullanmak mümkün müdür? Örneğin, bir dizideki bilgileri işleyecek bir işlev oluşturmam gerekiyor:

 void Function( double Array[])
 {
  ...
 }
 
silhouette :

Bir fonksiyonun kabul edilen parametrelerinde bir dizi kullanmak mümkün müdür? Örneğin, bir dizideki bilgileri işleyecek bir işlev oluşturmam gerekiyor:


Ders kitabı burada ne diyor?

"

Geçirilen parametreler , çağrılan işlevin adından sonra parantez içinde belirtilir ve virgülle ayrılmış olarak listelenir. İşleve geçirilen parametre sayısı 64'ü geçmemelidir. İşlev, geçirilen parametreleri de kullanamaz. Bu durumda, boş bir parametre listesi belirtilir, yani. fonksiyon adından hemen sonra açma ve kapama parantezleri bulunur.

İşlev çağrısında iletilen parametrelerin sayısı, türü ve sırası, işlev açıklamasında belirtilen resmi parametrelerin sayısı, türü ve sırası ile eşleşmelidir (istisna, varsayılan parametrelere sahip bir işlev çağrısıdır - bkz. İşlev çağrısı ve İşlev açıklama ve dönüş ifadesi ). Böyle bir eşleşme yoksa MetaEditor bir hata mesajı verecektir. Sabitler, değişkenler, ifadeler ve diziler, geçirilen parametreler olarak kullanılabilir. "

 
silhouette :

Bir fonksiyonun kabul edilen parametrelerinde bir dizi kullanmak mümkün müdür? Örneğin, bir dizideki bilgileri işleyecek bir işlev oluşturmam gerekiyor:

Şu şekilde deneyin:

 void Function( double & Array[])
 {
  ...
 }
https://docs.mql4.com/en/basis/variables/formal
 
Sepulca :


Aynısı Kapat - iClose, Open - iOpen, Time - iTime Volume - iVolume vb. için de geçerlidir.

Ve gösterge 0'dan 7'ye kadar 8 satıra kadar çizebilir https://docs.mql4.com/en/customind/indicatorbuffers


çok teşekkür ederim :) indikatör hala çizilmemiş, satırlarda fiyat=iL[k]; nerede iL benim iLow'um...ex Low

genel olarak, birçok yararlı şey öğrendim ... ama daha fazla kazmayacağım ...

özel bir gösterge olmadan yeniden çizmeyi daha kolay görselleştirmenin bir yolu var.

 
Roman. :

Ders kitabı burada ne diyor?

"

Geçirilen parametreler , çağrılan işlevin adından sonra parantez içinde belirtilir ve virgülle ayrılmış olarak listelenir. İşleve geçirilen parametre sayısı 64'ü geçmemelidir. İşlev, geçirilen parametreleri de kullanamaz. Bu durumda, boş bir parametre listesi belirtilir, yani. fonksiyon adından hemen sonra açma ve kapama parantezleri bulunur.

İşlev çağrısında iletilen parametrelerin sayısı, türü ve sırası, işlev açıklamasında belirtilen resmi parametrelerin sayısı, türü ve sırası ile eşleşmelidir (istisna, varsayılan parametrelere sahip bir işlev çağrısıdır - bkz. İşlev çağrısı ve İşlev açıklama ve dönüş ifadesi ). Böyle bir eşleşme yoksa MetaEditor bir hata mesajı verecektir. Sabitler, değişkenler, ifadeler ve diziler, geçirilen parametreler olarak kullanılabilir. "

Ders kitabını yazmadan önce okudum, altı çizildiğini gördüm ama pratikte uygulamak mümkün olmadı - uyumsuz bir tür hakkında yazıyor.
Neden: