Quelqu'un peut-il me dire comment écrire la chose suivante.
J'ai fait un indicateur d'entraînement, qui compte iVolume pour chaque tick : iVolume est positif pour ceux qui ont monté, et iVolume est négatif pour ceux qui ont baissé. Pour faire une courbe, j'ajoute tous les iVolume (positifs et négatifs) en augmentant le total de barre en barre. Une courbe est obtenue. Cependant, j'ai rencontré deux problèmes :
1) la ligne s'avère très cassée ;
2) il est impossible de tester l'Expert Advisor, car le graphique iVolume obtenu n'a qu'une vie réelle.
Question :
1) comment décrire le code qui permet de construire un graphique basé sur des données moyennées que j'écris dans le tampon ?
2) Est-il possible d'écrire les données de cet indicateur (qui sont reçues en mode réel) dans un certain fichier, de sorte que plus tard, en se référant à ce fichier, on puisse construire l'indicateur sur les données historiques, en leur appliquant les volumes de tick déjà collectés ? Si possible, comment le décrire de manière programmatique ? Ou existe-t-il une autre solution qui ne nécessite pas d'écrire les informations de l'iVolume actuel dans un fichier?
#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: est-il possible d'écrire les données de cet indicateur (qui sont obtenues en mode réel) dans un fichier, de sorte que plus tard, en se référant à ce fichier, il serait possible de construire un indicateur sur des données historiques, en y appliquant les volumes de tick déjà collectés ? Si possible, comment le décrire de manière programmatique ? Ou existe-t-il une autre solution qui ne nécessite pas d'écrire les informations de l'iVolume actuel dans le fichier?
Indicateur basé sur les données du fichier - a entré cette ligne dans la recherche et a trouvé
Bonjour à tous. Les amis, pouvez-vous nous aider ? Quelqu'un pourrait-il définir une ligne dans l'indicateur où vous pouvez spécifier le nom du fichier son, afin que la ligne soit affichée dans les paramètres de l'indicateur.
Quelqu'un peut-il me dire comment écrire la chose suivante.
J'ai fait un indicateur d'entraînement, qui compte iVolume pour chaque tick : iVolume est positif pour ceux qui ont monté, et iVolume est négatif pour ceux qui ont baissé. Pour faire une courbe, j'ajoute tous les iVolume (positifs et négatifs) en augmentant le total de barre en barre. Une courbe est obtenue. Cependant, j'ai rencontré deux problèmes :
1) la ligne s'avère très cassée ;
2) il est impossible de tester l'Expert Advisor, car le graphique iVolume obtenu n'a qu'une vie réelle.
Question :
1) comment décrire le code qui permet de construire un graphique basé sur des données moyennées que j'écris dans le tampon ?
2) Est-il possible d'écrire les données de cet indicateur (qui sont reçues en mode réel) dans un certain fichier, de sorte que plus tard, en se référant à ce fichier, on puisse construire l'indicateur sur les données historiques, en leur appliquant les volumes de tick déjà collectés ? Si possible, comment le décrire de manière programmatique ? Ou existe-t-il une autre solution qui ne nécessite pas d'écrire les informations de l'iVolume actuel dans un fichier?
Peut-être ajouter à la fin du code :
double macurrent=iMAOnArray(Buf_1[0],0,5,0,MODE_LWMA,0);
Eh, non ! Le compilateur génère l'erreur disant qu'il n'y a pas de tableau.
Anyone....., pouvez-vous aider ? L'impasse dans laquelle je me trouve est exposée ici: https://www.mql5.com/ru/forum/160683/page378#comment_6053255.
Indicateur basé sur les données du fichier - a entré cette ligne dans la recherche et a trouvé
Une sorte de cauchemar, je ne comprends pas pourquoi ça donne comme ça :
Code section :
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 : Code 11754.00000
Qu'advient-il de la valeur après l'affectation ?
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 : Code 11754.00000
Qu'advient-il de la valeur après l'affectation ?
Imprimez la valeur des variables après l'affectation et la valeur de la variable D. Utilisez votre calculatrice pour faire le calcul.
Bonjour à tous. Les amis, pouvez-vous nous aider ? Quelqu'un pourrait-il définir une ligne dans l'indicateur où vous pouvez spécifier le nom du fichier son, afin que la ligne soit affichée dans les paramètres de l'indicateur.
Imprimez les valeurs des variables après affectation et la valeur de la variable D. Calculons-le sur une calculatrice...
J'imprime donc la valeur de la variable après l'affectation. Le code est donc essentiellement le suivant :
a=b ;
Imprimer (a) ;
Imprimer (b) ;
Mais a est égal à zéro et b est imprimé correctement.
C'est ainsi que j'édite la valeur assignée. Le code est donc essentiellement le suivant :
a=b ;
Imprimer (a) ;
Imprimer (b) ;
Mais a est égal à zéro alors que b est imprimé correctement.
Je ne vois pas de zéro, tu as fait une erreur quelque part.