Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 236

 
barabashkakvn:
Tutti i calcoli sono fatti in OnCalculate (cioè un nuovo evento barra è definito qui)
Grazie, darò un'occhiata. Forse non capisco qualcosa, ma sembra che in Five non sia possibile specificare l'indice del buffer per ottenere il valore dell'indicatore personalizzato.
 
forexman77:
Grazie, darò un'occhiata. Forse non capisco qualcosa, ma sembra che non ci sia la possibilità di specificare l'indice del buffer per ottenere il valore dell'indicatore personalizzato.
iCustom dà il manico dell'indicatore personalizzato. Poi CopyBuffer, in cui il secondo parametro è il numero del buffer.
 
Puoi dirmi se c'è una funzione che ferma completamente l'ottimizzazione di un EA, piuttosto che una corsa di ottimizzazione separata?
 
barabashkakvn:
iCustom dà il manico dell'indicatore personalizzato. Poi CopyBuffer, in cui il secondo parametro è il numero del buffer.

Dimmi, è possibile ottenere il valore dell'indicatore nello script?

Ho provato in questo modo:

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // считаем по ценам закрытия
                     );  
Alert("MA_handle=",MA_handle);
  }

Ottengo il valore su qualsiasi indicatore 10.

Ho provato anche in questo modo (esce l'errore 4807):

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
int MA_handle;
double ma1Val[]; 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

//--- массив значений индикатора MA
   ArraySetAsSeries(ma1Val,true);
//--- копируем значения индикаторов из индикаторных буферов
   if(CopyBuffer(MA_handle,0,0,3,ma1Val)<0)
     {
      Alert("Ошибка копирования буферов индикатора Moving Average - номер ошибки:",GetLastError(),"!!");
      return;
     }
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // считаем по ценам закрытия
                     );  
Alert("ma1Val[0]=",ma1Val[0]);
  }
 
forexman77:
Verrà utilizzata la seguente procedura:
iCustom vi dà il manico dell'indicatore personalizzato. Poi CopyBuffer, in cui il secondo parametro è il numero del buffer.

Dimmi, è possibile ottenere il valore dell'indicatore nello script?

Ho provato in questo modo:

Ottengo il valore su qualsiasi indicatore 10.

Provato in un altro modo (esce l'errore 4807):

1. Leggete l'aiuto di iCustom.
2. Per ottenere il valore del buffer dell'indicatore: ottenere l'handle dell'indicatore, poi copiare il buffer dell'indicatore richiesto usando CopyBuffer.
 
barabashkakvn:
1. Leggete l'aiuto di iCustom.
2. Ordine di ottenere il valore del buffer dell'indicatore: ottenere l'handle dell'indicatore, e poi usare CopyBuffer per copiare il buffer dell'indicatore richiesto da questo handle.
Capisco, lo studierò. Ho chiesto dello script perché non ha "OnInit" e ottiene l'handle. Quindi lo script chiede l'handle prima di "OnStart"?
 
forexman77:
Capisco, darò un'occhiata. Ho chiesto dello script perché non ha "OnInit" e ottiene l'handle. Questo significa che lo script richiede l'handle prima di "OnStart"?
OnInit è presente in Expert Advisors e indicatori.
 
barabashkakvn:
OnInit è in esperti e indicatori.
Ha funzionato tutto!!! Grazie!!!
 
forexman77:
Ha funzionato tutto! Grazie!!!
Non c'è di che.
 
Fleder:
I prodotti nel Mercato hanno tra 5 e 20 attivazioni (a discrezione del rivenditore). Se non hai esaurito i tuoi tentativi di attivazione, non preoccuparti, non ti faranno pagare soldi extra.
Grazie per la risposta, premerò il pulsante per comprare. Non c'è altro :-)