Scriverò l'indicatore gratuitamente - pagina 19

 
Tango_X:

L'ho implementato con OnTimer() e non ne è uscito niente. Sfortunatamente l'evento onTimer() non calcola l'indicatore e il ritardo viene salvato, forse una dichiarazione forte e ho fatto qualcosa di sbagliato, per favore correggete. Grazie!

Quello che avete fatto non è un'implementazione attraverso OnTimer(). Si ottengono solo valori lì (tutta la storia, e ogni secondo, inoltre, senza controllare). Comunque, non credo che tu possa implementarlo da solo. Aspetta la risposta dell'autore del ramo:)
 
Alexey Kozitsyn:
Quello che avete fatto non è un'implementazione attraverso OnTimer(). Lì si ottengono solo valori (tutta la storia, e ogni secondo, senza alcun controllo). In generale, è improbabile che possiate implementarlo da soli. Aspetta la risposta dell'autore del ramo:)
Sì, grazie! già contattato l'autore del ramo, dove ha promesso di aiutare! Sto aspettando una risposta))
 
Tango_X:

L'ho implementato con OnTimer() e non ne è uscito niente. Sfortunatamente l'evento onTimer() non calcola l'indicatore e il ritardo viene salvato, forse una dichiarazione forte e ho fatto qualcosa di sbagliato, per favore correggete. Grazie!

//+------------------------------------------------------------------+
//|                                              TestCopyBuffer3.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1  "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
bool               AsSeries=true;
int                period=15;
input ENUM_TIMEFRAMES    TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD     smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int                shift=0;
//--- indicator buffers
double                   MABuffer[];
int                      ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
   Print("Параметр AsSeries = ",AsSeries);
   Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//--- set short indicator name
   IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
   ArraySetAsSeries(MABuffer,AsSeries);
   Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//---
   ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- check if all data calculated
   if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
   //int to_copy;
   if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      //--- last value is always copied
      to_copy++;
     }
//--- try to copy
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
   Print("Таймер");
  }
//+------------------------------------------------------------------+
Penso che quello che volevo dire era dispostare tutto inOnCalculate aOnTimer
 
Yurij Izyumov:
Suppongo che questo significhispostare tutto inOnCalculate aOnTimer
Se funziona, perché no!
 
Una soluzione è stata suggerita qui, ma siccome sono un programmatore alle prime armi, è abbastanza difficile da implementare per me, ecco perché ho chiesto aiuto in questo thread
 
Yurij Izyumov:

Per riscriverlo, tutti gli indicatori da includere devono essere anche sotto mql5

E la riscrittura? Il codice è troppo complicato?
 
Buon pomeriggio. Sono sull'indicatore Delta_RSI, continua a disegnare (vedi screenshot) isto in entrambe le direzioni allo stesso tempo (cerca l'errore). Ed è possibile colorare il segnale di zero in modo diverso per sopra/sotto lo zero. Sarete in grado di vedere (corretto)? Grazie.
 
Igor371:
Pomeriggio. Sono sull'indicatore Delta_RSI, l'ho costantemente disegnato (vedi screenshot) isto in entrambi i modi allo stesso tempo (cerca l'errore). Ed è possibile colorare il colore dell'assenza di segnale per sopra/sotto lo zero. Sarete in grado di vedere (corretto)? Grazie.

descrivi cosa fai per romperlo ))))

grafico, TF, sequenza, ecc.

 
Yurij Izyumov:

descrivi cosa fai per romperlo ))))

grafico, TF, sequenza, ecc.

In realtà non sta facendo nulla. Ho grandi periodi di 1000/250 su M1 per esempio. Ad un certo punto l'affare diventa entrambi i lati dello zero allo stesso tempo. Non so esattamente in quale momento, ma darò un'occhiata più da vicino. Non ho problemi nel codice, non c'è niente da sistemare?
 
Buon pomeriggio. Non riesco a cogliere quando l'indicatore si rompe. Sta lì e tutto va bene, ma poi si rompe. Non ho visto broker fare manipolazioni, perché spesso ho la stessa cosa con le frecce, (ma lo metto giù al disegno degli indici, e qui RSI) Metterò un gufo a cui fare attenzione con screenshot.
File:
GBPUSD.mM1.png  32 kb
Motivazione: