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

 
Vinin:

Naturalmente, e quando altro.


mm, ho pensato, pezzi completati, bene, ci sono 128 kilobyte uniti - registrati. Come sarebbe più corretto in caso di incidente. Anche se per la storia, ovviamente, non importa.

Non riuscivo a capirlo, stavo scaricando, ma non c'era nessun posto dove andare finché non ho chiuso il terminale ))

 
ToLik_SRGV
Grazie per il suggerimento su Print(), ci darò un'occhiata.
 
sanyooooook:

È possibile cambiare questo parametro nell'inite, ma all'inizio è dubbio.


Grazie, perché quando il TF sulla finestra cambia, l'indicatore riparte, significa che è possibile ricolorare i buffer

E il punto è - su qualsiasi TF, il colore delle linee corrispondenti agli stocastici di altri TF è sempre lo stesso colore. Cioè se lo stocastico orario è blu, che sia blu su tutti i TF.

Naturalmente, possiamo assegnare i buffer del colore appropriato ai TF appropriati, ma allora il programma di elaborazione diventa più complicato. E vogliamo che legga uno stesso buffer in tutte le condizioni.

 
ToLik_SRGV:

Print() che dovete mettere qui prima:

che, assicurarsi che l'array c1b_1[i] è vuoto, quindi confrontando in se zeri, comprensibilmente gli accordi non vengono aperti.

E zeri lì perché il periodo di mediazione nella funzione iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i) (extern int AvgB=25;) è più grande dell'array c1b stesso , ArrayResize(c1b,PeriodB ) (extern int PeriodB=20;), quindi non può mediare nulla.


Sì, infatti "0", ma cosa fare, dimmi - non funziona in entrambi i modi (e periodi uguali impostati) provato entrambe le opzioni (nuovo e vecchio) Print("NormalizeDouble(c1b_1 ..., ritorna null (mostra solo c1b[i] valore, tutti gli altri compresi c1s[i] - zeri), aiutare a portare una delle opzioni in uno stato di lavoro o almeno condividere un suggerimento, chi vedrà il difetto?

Nuovo:

// Торговые критерии   
   double c1b[];
   ArrayResize(c1b,PeriodB);
   double c1b_1[];
   ArrayResize(c1b_1,AvgB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   {
   c1b_1[i]=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   }
   }
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   double c1s_1[];
   ArrayResize(c1s_1,AvgS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   {
   c1s_1[i]=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   }
   }
   
   Print("NormalizeDouble(c1b_1[i],4) - ",NormalizeDouble(c1b_1[i],4));
   Print("NormalizeDouble(c1b_1[i+2],4) - ",NormalizeDouble(c1b_1[i+2],4));
   Print("NormalizeDouble(c1b_1[i+3],4) - ",NormalizeDouble(c1b_1[i+3],4)); 

if (NormalizeDouble(c1b_1[i],4)<NormalizeDouble(c1b_1[i+2],4)&&NormalizeDouble(c1b_1[i+2],4)>NormalizeDouble(c1b_1[i+3],4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1[i],4)>NormalizeDouble(c1s_1[i+2],4)&&NormalizeDouble(c1s_1[i+2],4)<NormalizeDouble(c1s_1[i+3],4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Vecchio:

// Торговые критерии
   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);
   
   Print("NormalizeDouble(c1b_1,4) - ",NormalizeDouble(c1b_1,4));
   Print("NormalizeDouble(c1b_2,4) - ",NormalizeDouble(c1b_2,4));
   Print("NormalizeDouble(c1b_3,4) - ",NormalizeDouble(c1b_3,4));

if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Intero:

File:
21_1.mq4  15 kb
 

Signori, mi sto chiedendo, se faccio un loop su quattro timeframe per trovare il segnale, i dati saranno richiamati ogni volta, con più carico della CPU che se ci fossero, per esempio, quattro finestre dello stesso indicatore con timeframe diversi?

 
Rossi:

Signori, mi sto chiedendo, se faccio un loop di quattro timeframe per trovare il segnale, i dati saranno richiamati ogni volta, con più carico della CPU che se ci fossero, per esempio, quattro finestre dello stesso indicatore con timeframe diversi?


Dipende da come viene implementato.
 

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}

approssimativamente così senza allocare la memoria per ogni periodo di tempo

 
Lo stesso.
 
Rossi:

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}

approssimativamente così senza allocare la memoria per ogni periodo di tempo


int TimeMassive[]={15, 30, 60, 240} ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}
Questo è un po' più accurato
 
Cosa può causare uno stack overflow? Quando aprite una posizione con una grande presa (la presa è calcolata dalla volatilità e moltiplicata per 100, la dimensione è 41*100), uno stack overflow viene registrato e... ...prendilo e basta. Non si aprono altre posizioni finché questa non si chiude, e questa, ovviamente, non si chiuderà a causa dell'enorme TP... E l'EA non funziona affatto correttamente, perché dovrebbe chiudere tutte le posizioni quando viene raggiunto il profitto totale predefinito delle posizioni aperte... Ma non succede, anche se questa posizione è stata in enorme profitto per molto tempo, circa duemila punti... Come posso combatterlo? Non si può essere sicuri della situazione in cui le posizioni aperte traboccano dalla pila, e tutto va alla rovescia...