[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 331

 
drknn:

Immaginate se alcuni indicatori sono così affilati che il timeframe D1 è un posto spaventoso per loro. :) In breve, è necessario guardare il codice - molto probabilmente la causa è lì.
Sono confuso dal fatto che tutto funziona su altri terminali. Ho appena trovato il bug - il preventivo per il 1970 è di circa 14000 GBP.
 

Devo aver incasinato di nuovo qualcosa con i buffer. Per favore, dategli un'occhiata.

Il compito è il seguente:

1) Si calcola LSMA. Se [i]>[i+1] - il colore è verde, se [i]<[i+1] - il colore è rosso. Tutto è chiaro con questo.

2) Ho bisogno di trovare la lunghezza della serie di valori verdi e rossi e memorizzarli in un array. Questo è il problema che non sono ancora riuscito a risolvere da solo.

//+------------------------------------------------------------------+
//|                                                   LSMA_Stat2.mq4 |
//|                                                       silhouette |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "silhouette"
#property link      "http://www.metaquotes.net"

#property copyright "silhouette"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Green
#property indicator_color3 Red
//+------------------------------------------------------------------+
double BufferYellow[],BufferGreen[], BufferRed[];
int GreenSeries[], RedSeries[], g=0, r=0, gc=0, rc=0;
string Symb;

int init()
  {
   Symb=Symbol();
   
   SetIndexBuffer(0,BufferYellow);
   SetIndexBuffer(1,BufferGreen);
   SetIndexBuffer(2,BufferRed);
   
   SetIndexStyle(0,DRAW_LINE,EMPTY,2);
   SetIndexStyle(1,DRAW_LINE,EMPTY,2);
   SetIndexStyle(2,DRAW_LINE,EMPTY,2);  
   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
   double tmp1, tmp2, LSMA;
   
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars-1;
   if (limit>1) 
      limit=Bars-1;
      
   for(int i=limit; i>0; i--)
    {
     tmp1=iMA(Symb,Period(),34,0,MODE_SMA,0,i);
     tmp2=iMA(Symb,Period(),34,0,MODE_LWMA,0,i);
     LSMA=3.0*tmp2-2.0*tmp1;
      
     BufferYellow[i]=LSMA;
     BufferGreen[i]=LSMA;
     BufferRed[i]=LSMA;

     if(BufferYellow[i]>BufferYellow[i+1])
      {
       BufferRed[i]=EMPTY_VALUE;
      }
     else if(BufferYellow[i]<BufferYellow[i+1])
      {
       BufferGreen[i]=EMPTY_VALUE;
      }
     else
      {
       BufferRed[i]=EMPTY_VALUE;
       BufferGreen[i]=EMPTY_VALUE;
      }                        
      
     if(BufferGreen[i]!=EMPTY_VALUE && BufferRed[i]==EMPTY_VALUE)
      {
       g++;
      }
     if(BufferGreen[i]==EMPTY_VALUE && BufferRed[i]!=EMPTY_VALUE)
      {
       r++;
      }
     if(BufferGreen[i]==EMPTY_VALUE && BufferRed[i]==EMPTY_VALUE)
      {
       if(BufferGreen[i+1]!=EMPTY_VALUE)
        {
         GreenSeries[gc]=g;
         gc++;
         g=0;
        }
       if(BufferRed[i+1]!=EMPTY_VALUE)
        {
         RedSeries[rc]=r;
         rc++;
         r=0;
        }
      }              
    }
   return(0);
  }
 
silhouette:

Devo aver incasinato di nuovo qualcosa con i buffer. Per favore, dategli un'occhiata.

Il compito è il seguente:

1) Si calcola il LSMA. Se [i]>[i+1] - il colore è verde, se [i]<[i+1] - il colore è rosso. Tutto è chiaro con questo.

2) Ho bisogno di trovare la lunghezza della serie di valori verdi e rossi e memorizzarli in un array. Questo è il problema che non sono ancora riuscito a risolvere da solo.


Cosa c'è che non va in questo indicatore
 
Vinin:

Perché non ti piace questo indicatore?

Vinin, in realtà l'ho fatto secondo il tuo esempio, ma il punto è diverso: non è il metodo di calcolo in sé che è importante per me (che sia il più semplice MA), ma la soluzione del problema al punto 2.

Ho bisogno di ottenere un array che memorizzi la lunghezza delle serie verdi o rosse per ulteriori analisi.

 
Si prega di avvisare. Ci sono 2 grafici di equilibrio virtuale (per gli ordini di vendita e di acquisto) nella vita reale possono divergere molto. Come posso tradurli in qualsiasi unità relativa per poter cronometrare il momento dell'incrocio di questi grafici.
 
silhouette:

Vinin, in realtà l'ho fatto secondo il tuo esempio, ma il punto è diverso: non è il metodo di calcolo in sé che è importante per me (che sia il più semplice MA), ma la soluzione del problema al punto 2.

Ho bisogno di ottenere un array che memorizzi la lunghezza della serie verde o rossa per ulteriori analisi.


Perché avete bisogno di un array?
 
Vinin:

Perché avete bisogno di un array?
Per la successiva analisi statistica. In Excel, per esempio.
 

C'è una libreria per il trading del mouse https://www.mql5.com/ru/code/9671

Non sto avendo assolutamente fortuna nel collegarlo, per favore aiutatemi.

Ho scaricato tutti i file di cui ho bisogno nella cartella expert e poi ho compilato, ma ancora gli indicatori hanno finestre nere senza dati.

Ovviamente un errore infantile, ma non riesco a trovarlo per 24 ore.


 
TheXpert:

Non c'è bisogno di piegare nulla. L'archivio contiene già tutti i file, tutto quello che devi fare è scompattare l'archivio nella cartella del terminale e compilare.

Solo i file indicatori sono compilati, le librerie (mqh) non hanno bisogno di essere compilate. Prova a mettere un nuovo terminale e a fare pratica su di esso.

 

Puoi darmi un suggerimento? C'è un pulsante "MQL4.community" nel terminale e cliccandoci sopra si apre Word con la pagina corrispondente, ma quando provo a cliccare su qualsiasi link, appare una finestra che dice che c'è una restrizione sul mio computer! ???

Come lo affronta? Grazie.