Errori, bug, domande - pagina 32

 
Ora anche io ho un problema... Finché non si ricompila, le ultime battute sono rese.
 
Interesting:

L'unico modo corretto per farlo è molto semplice.

Si scrive un indicatore funzionante al 100%, e lo si fa classicamente senza il parametro "Symbol", cioè lo si calcola usando il simbolo e il periodo correnti.

Dopo di che tale calcolatrice BASIC viene chiamata in Expert Advisor (se è previsto il lavoro meccanico) o calcolatrice (se è necessario visualizzare le informazioni sul grafico dello STRUMENTO NON CALCOLANTE).

PS

Altrimenti, se la calcolatrice o una funzione separata deve fare un calcolo aggiuntivo, e poi collegare i risultati ai dati del grafico corrente...

Suggerimento degno di considerazione,

Ma naturalmente dal punto di vista della logica comune è come grattarsi l'orecchio sinistro con la mano destra (ma non è per voi, è per gli sviluppatori),

Perché devo chiamare i dati di uno strumento non nativo?

Se devi creare indicatori personalizzati e chiamarli da un simbolo richiesto comunque, in generale, la conclusione è che lo comprerò.

Ma di nuovo, chiamo un indicatore pronto per EUR con dati su JPY (per esempio, non c'è abbastanza storia per lo Yen)

Se cerco lo stesso indicatore e non contiene dati per questa lunghezza, cosa mi dirà?

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Ecco un'opzione praticabile:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot LRma
#property indicator_label1  "LRma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
input string             symbol      ="EURJPY";
input int                MA_Period   =25;          // период MA
input int                MA_shift    =0;           // сдвиг индикатора
input ENUM_APPLIED_PRICE price       =PRICE_OPEN;  // тип цены 
//--- indicator buffers
double  LRma[],L[],S[],iPoint,iiMA;

int Lwma,Sma;// Хендлы машек
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,LRma,INDICATOR_DATA);
   Lwma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_LWMA,price);
   Sma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_SMA,price);
   iPoint=1.0/SymbolInfoDouble(symbol,SYMBOL_POINT);
   iiMA=1.0/MA_Period;
   IndicatorSetString(INDICATOR_SHORTNAME,"LRma_symbol_"+symbol);
//---
   int count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(S,true);
   ArraySetAsSeries(LRma,true);
   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 count=rates_total-prev_calculated;
   if(count>1)count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   if(count==0)count=1;
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   if(CopyBuffer(Lwma,0,0,count,L)!=-1)
     {
      if(CopyBuffer(Sma,0,0,count,S)!=-1)
        {
         for(int i=0;i<MathMin(ArraySize(LRma),ArraySize(L));i++)
            LRma[i]=(L[i]-S[i])*6*iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Posso aggiungere un altro mal di testa. Se l'indicatore è su un grafico, ma è di un altro, devi tenere conto che il numero di barre può essere diverso:

  1. Che il numero di barre può essere diverso. Credo che sia già stato preso in considerazione.
  2. Tieni conto che ci possono essere dei vuoti nella storia dello strumento, e 25 barre nella storia per uno strumento, può essere lunedì, e per un altro - venerdì...
  3. anche se avete risolto i primi due problemi, c'è ancora la sincronizzazione per tempo, per uno strumento una nuova barra è già iniziata, per un altro non è ancora iniziata...
  4. l'indicatore funziona solo con l'arrivo di un nuovo tick, cioè se si blocca sul grafico con pochi tick, la barra 0 di un altro grafico è problematica...
  5. se smetti di contare le barre 0, solo quelle completate, allora ci saranno un paio di trappole in più...
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Prival:

Posso aggiungere un altro mal di testa. Se l'indicatore è su un grafico, ma lo mostra da un altro, bisogna tenerne conto:

  1. Che il numero di barre può essere diverso. Credo che abbiamo già preso in considerazione questo aspetto.
  2. Tieni conto che ci possono essere dei vuoti nella storia dello strumento, e 25 barre nella storia per uno strumento, può essere lunedì, e per un altro - venerdì...
  3. anche se avete risolto i primi due problemi, c'è ancora la sincronizzazione per tempo, per uno strumento una nuova barra è già iniziata, per un altro non è ancora iniziata ...
  4. l'indicatore funziona solo con l'arrivo di un nuovo tick, cioè, se si blocca su un grafico con pochi tick, sarà problematico per la barra 0 dell'altro grafico...
  5. Se smetti di contare le barre 0, solo quelle completate, allora ci saranno un paio di trappole in più...

Grazie per le parole gentili :o)
 

Bug. Descrizione. ATS sempre a mercato (rollover del doppio lotto 0,2).

Modalità di prova tutte le zecche. Tutto è normale.

Modalità di prova, aprendo i prezzi. lo stesso pezzo.

Per qualche motivo si divide in 2 trade. forse è solo il modo in cui viene visualizzato, ma non è giusto. non dovrebbe essere così.

 
Alexandr2385:

Ciao, ho un problema serio con il terminale MT5. Quando avvio il terminale, solo la linea del prezzo (offerta) si muove, mentre le candele (barre) non vengono disegnate/modificate. Quindi il prezzo si muove senza cambiare il grafico. Ho una domanda: come si può risolvere questo problema? Infatti, tutto funziona bene in MT4! Ho provato a reinstallare il terminale, ma non è servito! Ho avuto un problema simile con diversi broker... Potete dirmi cosa fare in questa situazione?
Qualcuno degli sviluppatori può rispondere alla domanda? O devo chiederlo in un altro thread?
File:
1.png  31 kb
 
Alexandr2385:
Qualcuno degli sviluppatori può rispondere alla domanda? O devo chiederlo in un altro thread?
+1 Ho visto la stessa cosa, ma sembra funzionare correttamente ora, devono averlo sistemato
 
SHOOTER777:

+1 Ho visto la stessa cosa, ma sembra funzionare correttamente ora, devono averlo sistemato

Sì, stranamente, ma ora è sparito, non so per quanto tempo...

 
Prival:

Posso aggiungere un altro mal di testa. Se l'indicatore è su un grafico, ma lo mostra da un altro, devi tenerne conto:

  1. Che il numero di barre può essere diverso. Credo che abbiamo già preso in considerazione questo aspetto.
  2. Tieni conto che ci possono essere dei vuoti nella storia dello strumento, e 25 barre nella storia per uno strumento, può essere lunedì, e per un altro - venerdì...
  3. anche se avete risolto i primi due problemi, c'è ancora la sincronizzazione per tempo, per uno strumento una nuova barra è già iniziata, per un altro non è ancora iniziata ...
  4. l'indicatore funziona solo con l'arrivo di un nuovo tick, cioè, se si blocca su un grafico con pochi tick, sarà problematico per la barra 0 dell'altro grafico...
  5. Se smetti di contare le barre 0, al diavolo, solo quelle completate, allora ci saranno un paio di trappole in più...

Sono d'accordo sui buchi e sui problemi della storia.

Con un funzionamento normale e la sincronizzazione del periodo, le nuove barre dovrebbero (logicamente) iniziare alla stessa ora...