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.
#property indicator_label1 "LINE"#property indicator_type1 DRAW_LINE#property indicator_color1 clrGold#property indicator_style1 STYLE_SOLID#property indicator_width1 2inputint period = 10; //Период усреденияinputbool USE_LIMIT= false; //вкл/выкл лимитирование//Заключается в ограничении максимального изменения значения индикатораinputdouble use_limit= 0.00005; //Величина//на которую максимально может измениться индикаторdouble Buffer[];
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
//PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//--- вычисления значений индикатора//--- calculate the indicator valuesint start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate//--- if the calculation is made on a previous run of OnCalculateif(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations//--- заполняем индикаторный буфер значениями//--- fill indicator buffer valuesfor(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 functionreturn(rates_total);
}
//+------------------------------------------------------------------+
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.
Grazie per l'attenzione.
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)
Se non funziona su un conto demo, fatemelo sapere.
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
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.
Cosa c'è di sbagliato nel codice?
La grafica va bene, nel tester viene fuori l'errore Array Out Of Range
Buffer[i+1] === +1 не делается проверка на выход за массив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-1Sembra funzionare