[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 56

 
Buon pomeriggio, per favore aiutatemi, c'è un'idea semplice per implementare una chiamata Alert() quando tre MAs si intersecano.
Descrizione dell'intersezione nel programma. Sembra funzionare, ma non come dovrebbe. Sto arrotondando le variabili a una cifra in modo che
catturi l'intersezione. E questo Alert() mi tamburella finché i mezzi sono nella stessa posizione. Come faccio a farlo chiamare una volta, bene fino a 5 volte.
//+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   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);}




Se è tutto sbagliato alla radice, suggerisci dei metodi per rintracciare l'intersezione. Grazie.
 
Zherart:
Buon pomeriggio, per favore aiutatemi, c'è un'idea semplice per implementare una chiamata Alert() quando tre MAs si intersecano.
Descrizione dell'intersezione nel programma. Sembra funzionare, ma non come dovrebbe. Sto arrotondando le variabili a una cifra per
per prendere l'incrocio. E questo Alert() mi tamburella fino a quando i mezzi sono nella stessa posizione. Come faccio a farlo chiamare una volta, bene fino a 5 volte.Se non è proprio alla radice, suggerisci dei metodi per tracciare l'intersezione. Grazie.

//+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   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;       
      }

Un posto come questo a colpo d'occhio...
 
Sepulca, grazie!!! Faremo un tentativo. Capito il punto!!!
 
O sono stupido o c'è qualcosa di sbagliato nel terminale. Volevo ottimizzare un EA, ma non c'è una scheda "parametri di input" nelle proprietà dell'EA. Aiuto.
 
prom18:
O sono stupido o c'è qualcosa di sbagliato nel terminale. Volevo ottimizzare un EA, ma non c'è una scheda "parametri di input" nelle proprietà dell'EA. Ho cercato di ottimizzare il mio EA, ma non c'è una scheda "parametri di input" nelle sue proprietà.



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

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

 

È possibile usare un array nei parametri di una funzione? Per esempio, voglio creare una funzione che gestisca le informazioni in un array:

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

È possibile usare un array nei parametri di una funzione? Per esempio, voglio creare una funzione che gestisca le informazioni in un array:


Cosa dice il tutorial qui?

"

I parametri da passare sono indicati tra parentesi dopo il nome della funzione da chiamare e sono elencati, separati da virgole. Il numero di parametri passati a una funzione non deve superare 64. La funzione può anche non utilizzare i parametri passati. In questo caso, viene indicata una lista di parametri vuota, vale a dire che le parentesi di apertura e di chiusura sono poste immediatamente dopo il nome della funzione.

Il numero, il tipo e l'ordine dei parametri passati nella chiamata di funzione devono coincidere con il numero, il tipo e l'ordine dei parametri formali, specificati nella descrizione della funzione (l'eccezione è la chiamata di una funzione, che ha parametri predefiniti - vedi Chiamata di funzione e Descrizione della funzione e operatore di ritorno). Se non c'è tale coincidenza, il MetaEditor produrrà un messaggio di errore. Costanti, variabili, espressioni e array possono essere usati come parametri passati. "

 
silhouette:

È possibile usare un array nei parametri di una funzione? Per esempio, voglio creare una funzione che gestisca le informazioni in un array:

Prova questo:

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


Lo stesso vale per Close - iClose, Open - iOpen, Time - iTime Volume - iVolume ecc.

E l'indicatore può disegnare fino a 8 linee da 0 a 7 https://docs.mql4.com/ru/customind/indicatorbuffers


grazie mille :) l'indicatore non è ancora disegnato, ho avuto picchi in linee come price=iL[k]; dove iL è il mio iLow...ex Low

Comunque, ho scoperto un sacco di cose utili... ma non voglio scavare oltre...

c'è un metodo più semplice per visualizzare il ridisegno... senza un indicatore personalizzato.

 
Roman.:

Cosa dice il libro di testo qui?

"

I parametri da passare sono indicati tra parentesi dopo il nome della funzione da chiamare e sono elencati, separati da virgole. Il numero di parametri passati alla funzione non deve superare 64. La funzione può anche non utilizzare i parametri passati. In questo caso, viene indicata una lista di parametri vuota, vale a dire che le parentesi di apertura e di chiusura sono poste immediatamente dopo il nome della funzione.

Il numero, il tipo e l'ordine dei parametri passati nella chiamata di funzione devono coincidere con il numero, il tipo e l'ordine dei parametri formali, specificati nella descrizione della funzione (l'eccezione è la chiamata di una funzione, che ha parametri predefiniti - vedi Chiamata di funzione e Descrizione della funzione e operatore di ritorno). Se non c'è tale coincidenza, il MetaEditor produrrà un messaggio di errore. Costanti, variabili, espressioni e array possono essere usati come parametri passati. "

Leggere il libro di testo prima di scrivere, vedere la sottolineatura, ma non è riuscito ad attuare in pratica - scrive di tipo incompatibile.
Motivazione: