Qualcuno può gentilmente dirmi come scrivere la seguente cosa.
Ho fatto un indicatore di allenamento, che conta iVolume per ogni tick: iVolume è positivo per quelli che si sono mossi verso l'alto, e iVolume è negativo per quelli che si sono mossi verso il basso. Per fare una curva, tutti gli iVolume (positivi e negativi) aggiungo un totale crescente da barra a barra. Si ottiene una curva. Tuttavia, ho incontrato due problemi:
1) la linea risulta molto rotta;
2) è impossibile testare l'Expert Advisor, perché il grafico iVolume ottenuto ha solo una vita reale.
Domanda:
1) come descrivere il codice che permette di costruire un grafico basato su dati mediati che scrivo nel buffer?
2) È possibile scrivere i dati di questo indicatore (che si riceve in modalità reale) in un certo file, in modo che in seguito, facendo riferimento a questo file, si possa costruire l'indicatore sui dati storici, applicando ad essi i volumi di tick già raccolti? Se possibile, come descriverlo programmaticamente? O c'è un'altra soluzione che non richiede la scrittura delle informazioni correnti di iVolume in un file?
#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_label1"Вверх"#property indicator_type1DRAW_LINE#property indicator_color1 Salmon
#property indicator_style1STYLE_SOLID#property indicator_width12#property indicator_label2"Вниз"#property indicator_type2DRAW_LINE#property indicator_color2clrDarkTurquoise#property indicator_style2STYLE_SOLID#property indicator_width22datetime Время=0; // Время прошлого бараdouble Bid1;
double Buf_1[];
long V1; // объем для текущего тика вверхlong V2; // накопленный объем для всех тиков вверх текущего бараlong V3; // объем текущего тика внизlong V4; // накопленный объем для всех тиков вниз для текущего бараlong V5; // отрицательные и положительные iVolume нарастающим итогомvoidOnInit()
{
IndicatorDigits(0);
SetIndexBuffer(0,Buf_1);
//SetIndexBuffer(1,Buf_2);
Bid1=Bid;
V5 = 0;
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime Вр=Time[0]; // Время текущего бараif(Вр>Время) // Если новый бар
{
Время=Вр; // Запомнить// Buf_1[0]=0; // и обнулить последний элемент буфера
}
if(Bid >= Bid1)
{
if(Bid > Bid1)
{
V1 = iVolume(NULL, 0, 0); // если повышающий цену тик
V2 = V1 + V2;
}
else
{
V1 = 0; // если Bid1 = Bid2, т.е. изменение цены = 0, то iVolume этого тика присваиваем 0;
V2 = V1 + V2;
}
}
else
{
V3 = iVolume(NULL, 0, 0); // если понижающий цену тик
V4 = V3 + V4;
}
V5 = V2-V4;
Bid1=Bid;
Buf_1[0]= V5; // в буфер сгружаем return(rates_total);
}
YarTrade: è possibile scrivere i dati di questo indicatore (che si ottiene in modalità reale) in un file, in modo che più tardi, facendo riferimento a questo file, sarebbe possibile costruire un indicatore su dati storici, applicando ad esso i volumi di tick già raccolti? Se possibile, come descriverlo programmaticamente? O c'è un'altra soluzione che non richiede la scrittura delle informazioni correnti di iVolume nel file?
Indicatore basato sui dati del file - ha inserito questa linea nella ricerca e ha trovato
Ciao a tutti. Gente, potreste darci un piccolo aiuto? Qualcuno potrebbe per favore impostare una linea nell'indicatore dove è possibile specificare il nome del file audio, in modo che la linea venga visualizzata nelle impostazioni dell'indicatore.
Qualcuno può gentilmente dirmi come scrivere la seguente cosa.
Ho fatto un indicatore di allenamento, che conta iVolume per ogni tick: iVolume è positivo per quelli che si sono mossi verso l'alto, e iVolume è negativo per quelli che si sono mossi verso il basso. Per fare una curva, tutti gli iVolume (positivi e negativi) aggiungo un totale crescente da barra a barra. Si ottiene una curva. Tuttavia, ho incontrato due problemi:
1) la linea risulta molto rotta;
2) è impossibile testare l'Expert Advisor, perché il grafico iVolume ottenuto ha solo una vita reale.
Domanda:
1) come descrivere il codice che permette di costruire un grafico basato su dati mediati che scrivo nel buffer?
2) È possibile scrivere i dati di questo indicatore (che si riceve in modalità reale) in un certo file, in modo che in seguito, facendo riferimento a questo file, si possa costruire l'indicatore sui dati storici, applicando ad essi i volumi di tick già raccolti? Se possibile, come descriverlo programmaticamente? O c'è un'altra soluzione che non richiede la scrittura delle informazioni correnti di iVolume in un file?
Forse aggiungere alla fine del codice:
double macurrent=iMAOnArray(Buf_1[0],0,5,0,0,MODE_LWMA,0);
Eh, no! Il compilatore genera l'errore dicendo che non c'è una matrice.
Anyone....., puoi aiutarmi? Il mio punto morto per me è esposto qui:https://www.mql5.com/ru/forum/160683/page378#comment_6053255
Indicatore basato sui dati del file - ha inserito questa linea nella ricerca e ha trovato
Una specie di incubo, non capisco perché dà fuori così:
Codice sezione :
line[0]=MathFloor(Low[1]*MathPow(10,D-1));
Print("Var ",DoubleToStr(line[0],D));
Print("Code ",DoubleToStr(MathFloor(Low[1]*MathPow(10,D-1)),D));
Output :
EURUSD,M15: Var 0.00000
EURUSD,M15: Codice 11754.00000
Cosa succede al valore dopo l'assegnazione?
line[0]=MathFloor(Low[1]*MathPow(10,D-1));
Print("Var ",DoubleToStr(line[0],D));
Print("Code ",DoubleToStr(MathFloor(Low[1]*MathPow(10,D-1)),D));
Print :
EURUSD,M15: Var 0.00000
EURUSD,M15: Codice 11754.00000
Cosa succede al valore dopo l'assegnazione?
Stampa il valore delle variabili dopo l'assegnazione e il valore della variabile D. Usa la tua calcolatrice per fare i conti.
Ciao a tutti. Gente, potreste darci un piccolo aiuto? Qualcuno potrebbe per favore impostare una linea nell'indicatore dove è possibile specificare il nome del file audio, in modo che la linea venga visualizzata nelle impostazioni dell'indicatore.
Stampa i valori delle variabili dopo l'assegnazione e il valore della variabile D. Calcoliamolo con una calcolatrice...
Quindi stampo il valore della variabile dopo l'assegnazione. Quindi il codice è fondamentalmente il seguente:
a=b;
Stampa (a);
Stampa (b);
Ma a è uguale a zero e b è stampato correttamente
Questo è il modo in cui ho emesso il valore che è stato assegnato. Quindi il codice è essenzialmente il seguente:
a=b;
Stampa (a);
Stampa (b);
Ma a è uguale a zero mentre b è stampato correttamente
Non vedo lo zero, avete fatto un errore da qualche parte