Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 394

 

Salve.

Per favore aiutatemi a colorare uno zigzag.

Voglio fare in modo che se la distanza dal trogolo alla cima è >=100 punti, il segmento sia colorato di verde.

 
Dimitry-1983:

Ciao!

Mi sono già scervellato. Come faccio a controllare se c'è un certo prezzo nell'array doppio?

L'ho scritto così per il test:



Lo script trova 11, 22, 33, 44 senza problemi (il terminale ha tali ordini). Tuttavia, se lo script elabora il prezzo di 45, per esempio, mostra ancora 3 (posizione del prezzo 44 nell'array).

Quello di cui ho davvero bisogno è un bool - se c'è un prezzo dell'ordine in elaborazione nell'array, dovrebbe restituire true, altrimenti dovrebbe restituire false. Ma non ho ancora trovato una tale funzione nella lingua.

La funzionerestituisce l'indice del primo elemento trovato nella prima dimensione dell'array, mase ilvalore cercato non viene trovato, restituisce l'indice dell'elemento con il valore più piccolo, tra cui si trova il valore cercato. Quindi, per questo compito, dovremmo anche controllare l'uguaglianza tra il valore cercato e quello trovato. Il risultato del confronto sarà vero o falso

 
STARIJ:

Perché dovrei stampare qualcosa dall'indicatore? Tutto è sullo schermo - questo è l'indicatore. Quando ho bisogno di una tabella, eseguo lo script con iCustom()


Di quello che hai scritto qui non ho capito nulla. Stavamo parlando del fatto che io creo un file, che per qualche motivo è sempre vuoto. Non riesco a portare un array di dati in un file.

Ho bisogno che i dati siano salvati in un file. Se l'indicatore è attaccato al grafico per 1 anno, in modo che ci siano tutte le registrazioni delle sue letture per l'anno!

 
Alekseu Fedotov:

È un modo interessante di cucirlo.

Prova questo per errore.


Grazie! Ma ho già provato e non ha funzionato.

 

Potete consigliarmi perché gli errori vengono fuori?

//--- input parameters
input int      MyLevel=100; // установка уровня (отступ) выше (ниже) текущей цены;
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   double R1 = 0; // служеные переменные принимаются равными 0;
   double R2 = 0; // служебные переменные; принимаются равными 0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   double i=Bid; // переменной i присваивается значение текущего курса;

   if(i>=R1) // если текущий курс >= служебной переменной R1;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break;  // иначе, выходим из оператора
     }
   if(i<=R2) // если текущий курс <= служебной переменной R2;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break; // иначе выходим
     }

   Label1Buffer [0] = R1; // заносим в буфер данные R1
   Label2Buffer [0] = R2; // и R2

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Errori:

'R1' - identificatore non dichiarato Mylevel.mq4 61 10

possibile perdita di dati dovuta alla conversione del tipo Mylevel.mq4 63 9

'R2' - identificatore non dichiarato Mylevel.mq4 64 7

';' - 'break' deve essere usato all'interno di qualche ciclo o dichiarazione di switch Mylevel.mq4 68 12

';' - 'break' deve essere usato all'interno di qualche ciclo o dichiarazione di switch Mylevel.mq4 77 12


 
YarTrade:

Potete consigliarmi perché gli errori vengono fuori?

Errori:

'R1' - identificatore non dichiarato Mylevel.mq4 61 10

possibile perdita di dati dovuta alla conversione del tipo Mylevel.mq4 63 9

'R2' - identificatore non dichiarato Mylevel.mq4 64 7

';' - 'break' deve essere usato all'interno di qualche ciclo o dichiarazione di switch Mylevel.mq4 68 12

';' - 'break' deve essere usato all'interno di qualche ciclo o dichiarazione di switch Mylevel.mq4 77 12


R1, R2 sono dichiarati all'interno di una funzione, rispettivamente - visibili solo lì - sono locali.
break è usato nei cicli e negli swith
 

Non sono sicuro che ci sia un programma per combinare i rapporti di test simile a reportmanager per mt5,reportmanager non li apre.

 
iv1986:

Se lo sai, c'è un programma per combinare i rapporti di prova simile a reportmanager per mt5, mareportmanager non li apre?

È più facile riscrivere il codice e fare test multicurrency in mt5. I risultati dei test nella piattaforma mt4 sono ovviamente sbagliati, e il risultato finale sarà criticamente distorto e non ha senso analizzarlo.

Ecco uno dei 23 test dei simboli, tutto è chiaro e quasi ovvio


 

Posso fare un EA multistrumentale se ho diversi parametri e strategie per ogni strumento?

Vitaly Muzichenko:

È più facile riscrivere il codice e fare test multicurrency in mt5. I risultati dei test nella piattaforma mt4 sono ovviamente sbagliati, e il risultato finale sarà criticamente distorto e non ha senso analizzarlo.

Ecco uno dei test per 23 simboli, tutto è chiaro e quasi ovvio


E se ho una strategia diversa e corrispondentemente un codice diverso per ogni simbolo, posso fare un tale EA?

 
iv1986:

Posso fare un EA multistrumentale se ho diversi parametri e strategie per ogni strumento?

E se ho diverse strategie e codice per ogni strumento, è possibile fare un tale EA?

Puoi scrivere un EA multivaluta, sarà in un unico file. È possibile combinare le strategie per diverse coppie in un unico file per il tester, ed è anche possibile scambiarle online su un grafico, ma è possibile separarle in modo che ogni strategia scambi sul simbolo su cui è stato collocato l'EA. Le possibilità sono illimitate