Domande da un "manichino" - pagina 234

 
forward666: Sì, ho bisogno di una visualizzazione

Per i test: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Non è stato ancora trovato alcun aiuto per il trading dal vivo - basta provare ad aprire e chiudere una posizione in un conto demo.

 
Boris.45: Buon pomeriggio, stimati trader, vi prego di aiutare un programmatore principiante. Ho scritto una parte del programma per cercare i canali mobili (SK) di Borispolz usando i frattali per diversi timeframe e ho iniziato a scrivere algoritmi per prendere decisioni per aprire posizioni. Ho affrontato una situazione in cui il timeframe delle tendenze in rapido movimento è solo una o due barre. Questa situazione suggerisce quanto segue: è necessario lavorare su timeframes selezionati nella ricerca e nel calcolo dei parametri SK, mentre la decisione di piazzare ordini o aprire posizioni dovrebbe essere presa su timeframes molto piccoli. Si prega di consigliare come organizzare il programma in modo tale che il blocco per il calcolo dei parametri SK funzioni solo sui timeframe selezionati, ad esempio H1 e H4, e il blocco per prendere decisioni sul piazzamento degli ordini funzioni sul timeframe M1. Non ho trovato soluzioni per questo problema negli articoli.

Grazie per l'attenzione.

Sono abbastanza lontano dai frattali, ma ecco alcune considerazioni generali. Possiamo provare nel modo più semplice: creare un indicatore che calcola i "parametri SK" su H4. Poi lasciamo che il nostro Expert Advisor controlli questo indicatore ad ogni tick e prenda decisioni su come piazzare gli ordini.
 
Yedelkin:

Per i test: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Per il trading dal vivo non ho ancora trovato alcun aiuto - basta provare ad aprire e chiudere una posizione in un conto demo.

Grazie, lo proverò!

Ma mi serve solo per la visualizzazione su un conto demo)

 
forward666: Ma mi serve solo per la visualizzazione su un conto demo)
Se non funziona su un conto demo, scrivetemi.
 
Yedelkin:
Se non funziona su un conto demo, fatemelo sapere.
Ok, lo proverò stasera e vi farò sapere!
 
forward666:

Ma mi serve solo per la visualizzazione su un conto demo)


Dalla cronologia, si può tirare il mouse sul grafico (con lo shifter - tutto).

!!! Con un controllore si resettano le impostazioni del grafico.
 

Cosa c'è di sbagliato nel codice?

La grafica va bene, nel tester viene fuori l'errore Array Out Of Range

#property indicator_label1  "LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

input int    period   = 10;       //Период усредения
input bool   USE_LIMIT= false;    //вкл/выкл лимитирование
                                  //Заключается в ограничении максимального изменения значения индикатора
input double use_limit= 0.00005;  //Величина
                                  //на которую максимально может измениться индикатор

double         Buffer[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
   //PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- вычисления значений индикатора
//--- calculate the indicator values
   int start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate
//--- if the calculation is made on a previous run of OnCalculate
   if(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations
//--- заполняем индикаторный буфер значениями
//--- fill indicator buffer values
   for(int i=start;i<rates_total;i++)
     {
      Buffer[0]=price[0];
      double delta=(price[i]-Buffer[i])/period;
      if(USE_LIMIT && delta>use_limit)
        {
         delta=use_limit;
        }
      if(USE_LIMIT && delta<-use_limit)
        {
         delta=-use_limit;
        }
      Buffer[i+1]=Buffer[i]+delta;
     }
//--- вернем значение prev_calculated для следующего вызова функции
//--- return the value for the next call of prev_calculated function
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
lazarev-d-m:

Cosa c'è di sbagliato nel codice?

La grafica va bene, nel tester viene fuori l'errore Array Out Of Range


Il loop va fino a i<rates_total.Poi c'è Buffer[ i+1] .

Buffer[rates_total] .Non esiste, l'ultimo indice è rates_total-1.

 
lazarev-d-m:

Cosa c'è di sbagliato nel codice?

La grafica va bene, nel tester viene fuori l'errore Array Out Of Range


Buffer[i+1] === +1 не делается проверка на выход за массив
 
Karlson:


Il ciclo va fino a i<rates_total.Poi c'è Buffer[ i+1] .

Buffer[rates_total] .Non esiste, l'ultimo indice è rates_total-1.

Cambiato in questo

i<rates_total-1
Sembra funzionare