Scriverò l'indicatore gratuitamente - pagina 18

 
Yurij Izyumov:
Come distribuire il volume di tick su una candela, la candela ha una gamma e a volte una grande

Non so molto sui dettagli, ma penso che questo funzionerà

Supponiamo che una candela a 1 minuto abbia un range di HL=100 punti e una certa quantità di unità di volume di tick

Se prendiamo la teoria che ognuno di essi è multidirezionale con ordine casuale, otteniamo, per esempio, una candela a 5 minuti e vedremo la distribuzione del prezzo con

HL_0bar/volume romantico HL_1bar/volume romantico HL2bar/volume romantico ecc.

cioè operiamo già con l'unità "valore della candela/volume dell'ancia". Infatti, la linea rifletterà verticalmente il valore di questo indicatore in relazione ad altri simili. E possiamo usarlo sui grafici m5

lo stesso con la candela a 15 minuti, che consiste in candele a 15 minuti

È chiaro che la definizione attuale non è proprio quello che volevamo inizialmente, ma ho appena guardato la documentazione - non c'è storia del grafico in tick da nessuna parte, quindi la candela minima è un minuto.

 

Ho bisogno di un RSI standard con un allarme. È possibile implementare un'idea del genere per seguire comodamente i segnali. Finora mi sono imbattuto o in un mucchio di spazzatura legata all'RSI o in un allarme quando una candela si chiude (e il treno è partito...)

un bip con un messaggio dovrebbe venire con l'indicazione di una coppia, su cui si verifica l'evento.

Il segnale arriva una volta durante la formazione di una candela nel time frame selezionato quando si attraversa il livello superiore o inferiore, rispettivamente, solo quando si attraversa in alto o in basso e solo al momento dell'attraversamento, non quando la candela si chiude.

È auspicabile fare un livello in più, al momento del suo attraversamento, c'è anche un segnale una tantum.

Esempio.

Nel time frame 5M, il prezzo della coppia EUR /USD scende. In un certo momento, avendo attraversato il livello RSI 30 (ad esempio, all'80° secondo di una candela), viene generato un allarme e viene visualizzato un messaggio che dice che la coppia EUR/USD ha un segnale preliminare di acquisto in un certo momento.

Se nel tempo rimanente di formazione di una candela RSI tocca il livello successivo (per esempio 20), un allarme suona e va fuori il messaggio che in un certo momento sulla coppia eVor dollaro c'è un secondo segnale per comprare.

Preferibilmente, il messaggio dovrebbe mostrare in qualche modo che il segnale è preliminare o già uno specifico (cioè ripetuto).

 
Yurij Izyumov:

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

B Scusate il ritardo nella risposta, ma ho DAVVERO bisogno del vostro aiuto. Sto scrivendo un articolo e il moderatore mi ha chiesto di riscrivere tutti i codici dei file allegati per mql5. Ho bisogno di riscriverne solo due, il resto dei codici sarà replicato per altri file.

Vi sarei molto grato se non poteste procrastinare, perché la pubblicazione dell'articolo è ritardata proprio per questo. Io, a mia volta, prometto di farvi conoscere il mio trattato. Grazie ancora!

1. Quindi, cosa dovete fare. Nell'indicatore TDSEQUENTA_by_nikelodeon.mq5 ho aggiunto un altro buffer che è responsabile della trasmissione del segnale, dove 1 è Buy e -1 è Sell, penso che non ci dovrebbero essere errori qui. Ma è necessario aggiungere un altro buffer, dove alla formazione di un punto blu o rosso, cioè il segnale stesso, il numero di punti verdi di ogni segnale verrebbe scritto in questo buffer. Ho già aggiunto un buffer numero 7, l'unica cosa che resta è organizzare la scrittura in esso.

2. L'indicatore eVOLution-dvoid.1.3 (1).mq5 dovrebbe essere completamente riscritto per MQL5 questo indicatore prende i dati dai file che si trovano nella cartella\Files\evolution-dvoid\dvoid-BP.csv. Usiamo il formato csv, ma dato che questo formato non è supportato sul forum, lo incollerò in formato txt. Dopo il download dovrebbe essere messo nella cartella specificata e rinominare l'estensione in csv. Il nostro indicatore dovrebbe funzionare con questo file.

L'indicatore BuyVOLDOWNNOPDOWN.mq5 deve essere riscritto in MQL5 per mostrare come vengono chiamati altri indicatori sull'esempio di eVOLution-dvoid.1.3 (1).mq5, viene chiamato lì.

Per quanto riguarda i file della famiglia Cluster_X, proverò a scaricarli per MT5 e poi vedremo come allegarli. Ma la cosa più importante ora è risolvere il problema con gli indicatori di cui sopra. Grazie mille!!!

 
Mihail Marchukajtes:
Posso chiedere quale sarà l'argomento dell'articolo?
 
Alexey Kozitsyn:
Posso chiedere quale sarà l'argomento dell'articolo?
Sistemi di intelligenza artificiale
 
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 colore dell'assenza di segnale per sopra/sotto lo zero. Grazie.
 

CiaoYurij Izyumov! Girovagando per i forum e ponendo questa domanda, non ho ottenuto una risposta chiara... tutti hanno offerto la loro soluzione, ma solo a parole e senza confermare che avrebbe funzionato. Vorrei vedere l'attuazione pratica della questione. E la domanda è la seguente...

C'è un indicatore di CodyBase https://www.mql5.com/ru/docs/series/copybuffer

Il problema è che quando si cambia il timeframe nei parametri di input dell'indicatore, il ritardo del calcolo dell'indicatore fino alla comparsa di un nuovo tick, e può richiedere fino a diverse ore per diversi strumenti.

Avete la possibilità di implementare questa lacuna? Grazie!

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Tango_X:

CiaoYurij Izyumov! Girovagando per i forum e ponendo questa domanda, non ho ottenuto una risposta chiara... tutti hanno offerto la loro soluzione, ma solo a parole e senza confermare che avrebbe funzionato. Vorrei vedere l'attuazione pratica della questione. E la domanda è la seguente...

C'è un indicatore di CodyBase https://www.mql5.com/ru/docs/series/copybuffer

Il problema è che quando si cambia il timeframe nei parametri di input dell'indicatore, il ritardo del calcolo dell'indicatore fino alla comparsa di un nuovo tick, e può richiedere fino a diverse ore per diversi strumenti.

Avete la possibilità di implementare questa lacuna? Grazie!

Potete chiamare forzatamente OnCalculate() premendo il pulsante di aggiornamento. Potete anche fare tutti i calcoli in OnTimer() o OnBookEvent().
 

Salve. È possibile fare una freccia su questi indicatori? Template e screenshot di mestieri nella cartella.Mi dispiace aggiungere così ind. non dà la cartella da caricare

LA DECOMPILAZIONE È VIETATA! ARCHIVIO RIMOSSO!

 
Alexey Kozitsyn:
Potete chiamare forzatamente OnCalculate() premendo il pulsante di aggiornamento. Potete anche fare tutti i calcoli in OnTimer() o OnBookEvent().

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("Таймер");
  }
//+------------------------------------------------------------------+