Errori, bug, domande - pagina 1290

 
Tapochun:
Grazie, ho capito che OnTrade() e OnTradeTransaction() non possono essere utilizzati comunque?
Avete capito bene. Non si può.
 

1. Perché quando cambio la lingua su un terminale, cambia su tutti gli altri dopo averli riavviati?

In dettaglio: ho 10 terminali MT4/765 in esecuzione, ho cambiato la lingua in uno di essi dal russo all'inglese e l'ho riavviato. Dopo aver riavviato gli altri terminali, anche la loro lingua cambia!

2. Perché il profilo non viene ricordato automaticamente quando lo cambio - impostazioni degli indicatori, Expert Advisors, grafici?

Per essere precisi: ieri ho configurato un profilo, ci ho scambiato sopra, e oggi si è oscurato e quando ho riavviato i terminali, non sono state salvate le modifiche e sono state scaricate solo quelle che avevo prima delle modifiche.
Sarebbe una buona idea ricordare automaticamente il profilo dopo un certo tempo, per esempio ogni 10 minuti o ogni 1 ora.

 
Novikov:

2. Perché il profilo non viene ricordato automaticamente quando vengono apportate delle modifiche - impostazioni degli indicatori, Expert Advisors, grafici?

Il profilo viene salvato quando si chiude normalmente l'applicazione.
Se hai bisogno di salvarlo, chiudi il terminale e riaprilo, poi sarai felice :)
 
fyords:
Il profilo viene salvato quando si chiude normalmente l'applicazione.
Se hai bisogno di salvarlo, chiudi il terminale e riaprilo, poi sarai felice :)

"cosa farei senza di te" :)

3. Dove vanno le citazioni?

Quando scarico le quotazioni m1 per costruire i grafici RENCO, dopo uno spegnimento errato del terminale (interruzione di corrente), le quotazioni devono essere ricaricate!

 
perché quando si accede al profilo di un'altra persona da un cellulare android, non c'è un pulsante per scrivere un messaggio? dei messaggi, bisogna digitare il nome utente del nuovo corrispondente .... questo è molto scomodo...
 
Novikov:

"cosa farei senza di te" :)

3. Dove vanno le citazioni?

Scarico le quotazioni m1 per costruire i grafici RENCO, ma dopo che il terminale termina erroneamente (interruzione di corrente), le quotazioni devono essere ricaricate!

vi viene detto che tutte le modifiche sono salvate con l'arresto corretto .... comprese le citazioni scaricate
 

Capisco che un membro della struttura non può essere usato come un buffer di indicatore, per esempio così:

struct Buffers
{
    double buffer [];
};

ma poi cosa fare se avete bisogno di diverse decine di buffer e non funziona così:

struct Buffers
{
    double buffer [];
};

Buffers IndBuff;

void Func()
{
  IndBuff[0].buffer[0]=3.1415926;
}
 
paladin800:
Sì, anch'io mi sono imbattuto in questa funzione. Non riesco a capire come rendere una variabile nei parametri esterni come 4AM e l'altra come 5PM e poi semplicemente confrontare il risultato di TimeGMT() con loro.

È da un po' che non ci guardo.

4AM è 04:00
Le 17:00 sono le 17:00

 
joo:

Ho capito che un membro della struttura non può essere usato come un buffer indicatore, per esempio

Può
 
joo:

Capisco che un membro della struttura non può essere usato come un buffer di indicatore, per esempio così:

Ma cosa fare se avete bisogno di diverse decine di buffer e non funziona così:

Ho trovato tale esempio da un autore non sconosciuto. )

//+------------------------------------------------------------------+
//|                                                  EMA_Rainbow.mq5 |
//|                                       Copyright 2012, MetaDriver |
//|                                            MetaDriver@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaDriver"
#property link      "MetaDriver@rambler.ru"
#property version   "1.00"
//---
#define  CountLine  50
//---
#property indicator_chart_window
#property indicator_buffers CountLine
#property indicator_plots   CountLine

//--- Внешние параметры
input int   FastPeriod   =5;
input int   PeriodStep   =5;
input color FastColor    =clrAqua;
input color MiddleColor  =clrDodgerBlue;
input color SlowColor    =clrBlue;
input color LFastColor   =clrYellow;
input color LMiddleColor =clrOrange;
input color LSlowColor   =clrOrangeRed;
//--- 
struct SBuffer
  {
   double            B[];
  };
//--- indicator buffers
SBuffer       EmaBuffer[CountLine];
//---
color Colors[CountLine];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   InitColors();
//---
   for(int i=0; i<CountLine; i++)
      InitBuffers(i);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//---
   int limit=rates_total-prev_calculated;
//---
   if(limit==1)
      limit++;
//---
   if(prev_calculated==0)
     {
      limit-=begin+1;
      for(int i=0; i<CountLine; i++)
         EmaBuffer[i].B[limit]=price[limit];
     }
//---
   if(limit!=0)
     {
      for(int i=0; i<CountLine; i++)
        {
         double p=2./(FastPeriod+PeriodStep*(CountLine-i)+1);
         //---
         for(int j=limit-1; j>=0; j--)
            EmaBuffer[i].B[j]=price[j]*p+EmaBuffer[i].B[j+1]*(1.-p);
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Инициализация цветных буферов                                    |
//+------------------------------------------------------------------+
void InitColors()
  {
   int Half=CountLine/2;
//---
   for(int i=0; i<Half; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LSlowColor,LMiddleColor,i*1.0/Half);
      else
         Colors[i]=MixColor(SlowColor,MiddleColor,i*1.0/Half);
     }
//---
   for(int i=Half; i<CountLine; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LMiddleColor,LFastColor,(i-Half)*1.0/Half);
      else
         Colors[i]=MixColor(MiddleColor,FastColor,(i-Half)*1.0/Half);
     }
  }
//+------------------------------------------------------------------+
//| Определение цвета                                                |
//+------------------------------------------------------------------+
color MixColor(color A,color B,double mix)
  {
   int r = (int)MathRound((B     & 0xFF) * mix + (A     & 0xFF) * (1. - mix));
   int g = (int)MathRound((B>>8  & 0xFF) * mix + (A>>8  & 0xFF) * (1. - mix));
   int b = (int)MathRound((B>>16 & 0xFF) * mix + (A>>16 & 0xFF) * (1. - mix));
   return color(r|g<<8|b<<16);
  }
//+------------------------------------------------------------------+
//| Инициализация индикаторных буферов                               |
//+------------------------------------------------------------------+
void InitBuffers(int index)
  {
   SetIndexBuffer(index,EmaBuffer[index].B,INDICATOR_DATA);
   PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(index,PLOT_LINE_COLOR,Colors[index]);
   PlotIndexSetDouble(index,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
   if(index%8==7) PlotIndexSetInteger(index,PLOT_LINE_WIDTH,1);
  }
//+------------------------------------------------------------------+