Errori, bug, domande - pagina 525

 

Buon pomeriggio, è possibile cambiare lo strumento grafico standard in qualche modo? Più specificamente: aggiungere una linea verticale alla griglia Fibo, tracciata ad un fattore di 1,3

 

una domanda sull'uso degli indicatori. Ho scritto un codice di prova.

int Fractals;
double bar_val[];
bool start;
int OnInit()
{
   Fractals = iFractals(_Symbol, _Period);
   if (Fractals == INVALID_HANDLE) return (1);
   if (!ArrayResize(bar_val, 2)) return (1);
   if (!ArraySetAsSeries(bar_val, true)) return (1);
   start = false;
   return(0);
}

void OnTick()
{
   if (start) return; else start = true;
   for (int i = 0; i < 10; i++)
   {
      CopyBuffer(Fractals, UPPER_LINE, i, 2, bar_val);
      if (EMPTY_VALUE != bar_val[0])
         Print("1. i = " + string(i) + ", bar_val = " + string(bar_val[0]));
      CopyBuffer(Fractals, LOWER_LINE, i, 2, bar_val);
      if (EMPTY_VALUE != bar_val[0])
         Print("2. i = " + string(i) + ", bar_val = " + string(bar_val[0]));
   }
}

Visualizza periodicamente il frattale con i = 2, ma non è presente sullo schermo (dall'indicatore standard Fractals)

Si prega di consigliare qual è l'errore

 
Per qualche ragione, tra il 2001 e il 2006 nessun esperto viene testato. Ho guardato l'euro e la sterlina. Chiuso il terminale, cancellato la cronologia. Scaricato di nuovo. Tutti uguali. È possibile aprire accordi fino al 2001. E dal 2001 al 2006 salta quando ci sono segnali. Perché?
 

I pulsanti del timeframe sulla barra del terminale sono bloccati. A volte diversi in una volta quando si passa frequentemente da un TF all'altro. Forse, è dovuto a un gran numero di finestre, indicatori, modelli... Tuttavia, una volta avevo altrettante finestre, ma questo effetto non è stato osservato. Lo screenshot è un esempio di incoerenza tra il pulsante timeframe premuto e il valore reale mostrato nell'angolo superiore sinistro del grafico. Più un effetto a lungo termine, anche se prima o poi viene via.

A volte non ne viene premuto nessuno.

 

Posso controllare la dimensione della finestra usando mql5?

 
ilunga:

una domanda sull'uso degli indicatori. Ho scritto un codice di prova.

Visualizza periodicamente il frattale con i = 2, ma non è presente sullo schermo (dall'indicatore standard Fractals)

Si prega di consigliare qual è l'errore

Non dovrei sapere a colpo d'occhio come trattare il codice dell'Expert Advisor
 
tol64:
In qualche modo tra il 2001 e il 2006 gli esperti non vengono testati. Ho guardato l'euro e la sterlina. Chiuso il terminale, cancellato la cronologia. Scaricato di nuovo. Tutti uguali. È possibile aprire accordi fino al 2001. E dal 2001 al 2006 salta quando ci sono segnali. Perché?
Informazioni aggiuntive. Questo succede solo se hai selezionato D1 timeframe nelle impostazioni del tester. Se seleziono il timeframe D1 nelle impostazioni dell'Expert Advisor e un TF più piccolo nelle impostazioni del tester, allora non ci saranno salti. È un bug o c'è qualche spiegazione?
 

Ho fatto un semplice indicatore, ma non capisco perché non vuole funzionare;(

//+------------------------------------------------------------------+
//|                                                      testind.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot Vol
#property indicator_label1  "UniPrice"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLightSlateGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#include <MovingAverages.mqh>
//--- input parameters
input int      Smooth=50;
//--- indicator buffers
double         SmoothSpreadBuffer[];
double         SpreadBuffer[];
double         UniPriceBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,UniPriceBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SpreadBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,SmoothSpreadBuffer,INDICATOR_CALCULATIONS);
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   int i;
   for(i=1;i<rates_total;i++)
     {
      SpreadBuffer[i]=(high[i]-low[i]);
     }  
     
   SmoothedMAOnBuffer(rates_total,prev_calculated,
                         1,  // с какого индекса есть значения в массиве для сглаживания 
                         Smooth,  // период экспроненциальной средней
                         SpreadBuffer,       // буфер для взятия средней
                         SmoothSpreadBuffer);  // в этот буфер помещаем значения средней      
   for(i=1;i<rates_total;i++)
     {
      UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[i];//не показывает
      //UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[rates_total-1];//показывает
      //UniPriceBuffer[i]=close[i];//показывает
      //UniPriceBuffer[i]=SmoothSpreadBuffer[i];//показывает
     }  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Perché non vuole dividere uno per l'altro e mostrare il risultato?

A volte dà un risultato, ma non corrisponde alla realtà, per esempio EURUSD dovrebbe avere un valore entro 300-400 sull'orologio...

 
Olegts:

Ho fatto un semplice indicatore, ma non capisco perché non vuole funzionare;(

close[i] quando lo sostituisco, SmoothSpreadBuffer[i] quando lo sostituisco, perché non vuole dividere uno per l'altro e mostrare il risultato?

È vero, a volte dà un risultato, ma non corrisponde alla realtà, per esempio, l'orologio EURUSD dovrebbe avere un valore nella gamma di 300-400...

UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[i];

Basta sostituire i valori EURUSD qui per l'ora corrente e lo otterrai:

Ma per esempio con una media di 16 a prezzi di chiusura

UniPriceBuffer[i] = 1,33846 / 1.33932 = 0,99935

o meglio usare

handle=iMA(name,period,ma_period,ma_shift,ma_method,applied_price);
и т.д
 

Dopo l'ultima build, il terminale si blocca al caricamento. Non c'è accesso al menu o al menu contestuale. Nessun accesso al menu o al menu contestuale. WIn7. La finestra di panoramica dei simboli è vuota. L'icona della connessione è rossa. Nessun carico della CPU. Cosa fare e quando sarà disponibile la stabilità?

Описание:
  Ошибка привела к остановке взаимодействия программы с Windows.

Сигнатура проблемы:
  Имя события проблемы:    AppHangB1
  Имя приложения:    terminal.exe
  Версия приложения:    5.0.0.514
  Отметка времени приложения:    00343800
  Сигнатура зависания:    86b5
  Тип зависания:    1
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Доп. сигнатура зависания 1:    86b56845a796dcc49c1ed94bca152915
  Доп. сигнатура зависания 2:    4dea
  Доп. сигнатура зависания 3:    4dea45bbcdd37e9fd7bef8af1f8c0d94
  Доп. сигнатура зависания 4:    1df5
  Доп. сигнатура зависания 5:    1df5990b738955081f33bb6a466caece
  Доп. сигнатура зависания 6:    b4e6
  Доп. сигнатура зависания 7:    b4e6e85bfba9e3852328760498392cb4

Motivazione: