Il est nécessaire de cacher les objets par un critère. Comment puis-je cacher des objets sur un graphique (principalement des lignes) ? Les objets peuvent être sélectionnés par préfixe.
Seric29: Il est nécessaire de cacher des objets en fonction d'un critère. Comment puis-je cacher des objets sur un graphique (principalement des lignes) ? Les objets peuvent être sélectionnés par préfixe.
OBJPROP_TIMEFRAMES aide à le faire. Mais pas tous en même temps, mais en boucle, un par un.
Comment le programme s'exécutera-t-il plus rapidement ?
1. var.- si vous écrivez des fonctions universelles. Dans ce cas, le nombre de contrôles augmente, mais la quantité de code diminue, car au final il y a moins de fonctions, moins de variables initialisées, mais il y a un inconvénient mentionné plus haut.
La deuxième variante consiste à écrire plus de fonctions qui effectueront des calculs moins complexes. Dans ce cas, la quantité de code augmente, plus de variables sont initialisées et le compilateur devra exécuter le code à vide pour trouver la fonction désirée, mais il y a un plus, le nombre de contrôles diminue.
Comment le programme s'exécutera-t-il plus rapidement ?
1. var.- si vous écrivez des fonctions universelles. Dans ce cas, le nombre de contrôles augmente, mais la quantité de code diminue, car au final il y a moins de fonctions, moins de variables initialisées, mais il y a un inconvénient mentionné plus haut.
La deuxième variante consiste à écrire plus de fonctions qui effectueront des calculs moins complexes. Dans ce cas, la quantité de code augmente, plus de variables sont initialisées et le compilateur devra souvent exécuter le code à vide pour trouver la bonne fonction, mais il y a un plus, le nombre de contrôles diminue.
Qui y pense ?
Option 2, beaucoup de petites fonctions, mais vous êtes 2 mois dans le noir sur la différence entre compilateur et interpréteur, le compilateur ne fait pas tourner le code à vide, il crée des tableaux de liens vers les fonctions, variables, constantes.... et utilise ensuite ces tables pour intervenir au moment de l'exécution.
Делиться с ближним своим для нас, божьих тварей, это очень характерно, считается добродетелью, и вообще, как утверждает первоисточник, положительно отражается на карме. Однако в мире, созданном архитекторами микропроцессоров, такое поведение не всегда приводит к хорошим результатам, особенно если это касается разделения памяти между потоками...
C'est juste incroyable. Comment peut-on lire la documentation pour voir DRAW_HISTOGRAM2 et ne pas voir DRAW_COLOR_HISTOGRAM2
Oh, et il y a des tampons supplémentaires déclarés.
Bonsoir. J'ai essayé pendant longtemps et en vain. L'histogramme se dessine correctement, mais la coloration en différentes couleurs (au-dessus et au-dessous du niveau 50) n'a pas gagné. S'il te plaît, dis-moi où j'ai merdé. Texte ci-dessous, le fichier est lié.
//+------------------------------------------------------------------+//| Stoch_HISTOGRAM_MQL5_4.mq5 |//| Copyright 2009-2017, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"2009-2017, MetaQuotes Software Corp."#property link"http://www.mql5.com"//--- indicator settings#property indicator_separate_window#property indicator_buffers8#property indicator_plots3#property indicator_type1DRAW_LINE// основная#property indicator_color1clrLightSeaGreen#property indicator_style1STYLE_SOLID#property indicator_type2DRAW_LINE// сигнальная#property indicator_color2clrYellow#property indicator_style2STYLE_SOLID#property indicator_type3DRAW_COLOR_HISTOGRAM2#property indicator_color3clrGreen,clrRed#property indicator_style3STYLE_SOLID#property indicator_width13#property indicator_width22#property indicator_width31//--- input parametersinputint InpKPeriod=5; // K periodinputint InpDPeriod=3; // D periodinputint InpSlowing=3; // Slowing//--- indicator buffersdouble ExtMainBuffer[];
double ExtSignalBuffer[];
double ColorHistogram_2Buffer1[];
double ColorHistogram_2Buffer2[];
double ExtHighesBuffer[];
double ExtLowesBuffer[];
double ColorHistogram_2Colors[];
color colors[]={clrRed,clrGreen};
int cl;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+voidOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,ExtMainBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);
SetIndexBuffer(2,ColorHistogram_2Buffer1,INDICATOR_DATA);
SetIndexBuffer(3,ColorHistogram_2Buffer2,INDICATOR_DATA);
SetIndexBuffer(4,ExtHighesBuffer,INDICATOR_CALCULATIONS);
SetIndexBuffer(5,ExtLowesBuffer,INDICATOR_CALCULATIONS);
SetIndexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
//--- set accuracyIndicatorSetInteger(INDICATOR_DIGITS,2);
//--- set levelsIndicatorSetInteger(INDICATOR_LEVELS,3);
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
IndicatorSetDouble(INDICATOR_LEVELVALUE,1,50);
IndicatorSetDouble(INDICATOR_LEVELVALUE,2,80);
////--- установим пустое значение для HISTOGRAM2// PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0); //--- set maximum and minimum for subwindow IndicatorSetDouble(INDICATOR_MINIMUM,0);
IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- name for DataWindow and indicator subwindow labelIndicatorSetString(INDICATOR_SHORTNAME,"Stoch_HISTOGRAM("+(string)InpKPeriod+","+(string)InpDPeriod+","+(string)InpSlowing+")");
//PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);PlotIndexSetString(0,PLOT_LABEL,"Main");
PlotIndexSetString(1,PLOT_LABEL,"Signal");
PlotIndexSetString(2,PLOT_LABEL,"UP");
PlotIndexSetString(3,PLOT_LABEL,"LOW");
//--- sets first bar from what index will be drawnPlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpKPeriod+InpSlowing-2);
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpKPeriod+InpDPeriod);
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpKPeriod+InpSlowing-2);
PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,InpKPeriod+InpSlowing-2);
//--- initialization done
}
//+------------------------------------------------------------------+//| Stochastic Oscillator |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,k,start;
//PlotIndexSetInteger(2,PLOT_LINE_COLOR,0);//--- check for bars countif(rates_total<=InpKPeriod+InpDPeriod+InpSlowing)
return(0);
//---
start=InpKPeriod-1;
if(start+1<prev_calculated) start=prev_calculated-2;
else
{
for(i=0;i<start;i++)
{
ExtLowesBuffer[i]=0.0;
ExtHighesBuffer[i]=0.0;
}
}
//--- calculate HighesBuffer[] and ExtHighesBuffer[]for(i=start;i<rates_total && !IsStopped();i++)
{
double dmin=1000000.0;
double dmax=-1000000.0;
for(k=i-InpKPeriod+1;k<=i;k++)
{
if(dmin>low[k]) dmin=low[k];
if(dmax<high[k]) dmax=high[k];
}
ExtLowesBuffer[i]=dmin;
ExtHighesBuffer[i]=dmax;
}
//--- %K
start=InpKPeriod-1+InpSlowing-1;
if(start+1<prev_calculated) start=prev_calculated-2;
else
{
for(i=0;i<start;i++) ExtMainBuffer[i]=0.0;
}
//--- main cyclefor(i=start;i<rates_total && !IsStopped();i++)
{
double sumlow=0.0;
double sumhigh=0.0;
for(k=(i-InpSlowing+1);k<=i;k++)
{
sumlow +=(close[k]-ExtLowesBuffer[k]);
sumhigh+=(ExtHighesBuffer[k]-ExtLowesBuffer[k]);
}
if(sumhigh==0.0) ExtMainBuffer[i]=100.0;
else ExtMainBuffer[i]=sumlow/sumhigh*100;
if(ExtMainBuffer[i]>50){
cl=0;
ColorHistogram_2Buffer1[i]=50;
ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
ColorHistogram_2Colors[i]=colors[cl];
}
if(ExtMainBuffer[i]<50){
cl=1;
ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
ColorHistogram_2Buffer2[i]=50;
ColorHistogram_2Colors[i]=colors[cl];
}
}
//--- signal
start=InpDPeriod-1;
if(start+1<prev_calculated) start=prev_calculated-2;
else
{
for(i=0;i<start;i++) ExtSignalBuffer[i]=0.0;
}
for(i=start;i<rates_total && !IsStopped();i++)
{
double sum=0.0;
for(k=0;k<InpDPeriod;k++) sum+=ExtMainBuffer[i-k];
ExtSignalBuffer[i]=sum/InpDPeriod;
}
//--- OnCalculate done. Return new prev_calculated.return(rates_total);
}
//+------------------------------------------------------------------+
Bonsoir. J'ai essayé pendant longtemps et en vain. L'histogramme se dessine correctement, mais la coloration en différentes couleurs (au-dessus et au-dessous du niveau 50) n'a pas gagné. S'il te plaît, dis-moi où j'ai merdé. Texte ci-dessous, le fichier est lié.
En mode débogage, j'ai examiné les valeurs étape par étape :
ExtMainBuffer[i]
cl
ColorHistogram_2Buffer1[i]
ColorHistogram_2Buffer2[i]
ColorHistogram_2Colors[i]
Il semble que tout soit correct, mais les graphiques à barres ne sont que verts, ceux qui sont inférieurs à 50 ne sont pas colorés en rouge.
Индикатор Normalized Volume - индикатор нормализованного объёма. Отображает средний объём в диапазоне баров в виде цветной гистограммы с пороговым уровнем. Имеет два настраиваемых параметра:
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Il est nécessaire de cacher des objets en fonction d'un critère. Comment puis-je cacher des objets sur un graphique (principalement des lignes) ? Les objets peuvent être sélectionnés par préfixe.
OBJPROP_TIMEFRAMES aide à le faire. Mais pas tous en même temps, mais en boucle, un par un.
OBJPROP_TIMEFRAMES pourrait y contribuer. Mais pas tous en même temps, mais en boucle, un par un.
Je vais le faire, je veux une cartographie période par période et je vais expérimenter, merci pour le conseil.
Comment le programme s'exécutera-t-il plus rapidement ?
1. var.- si vous écrivez des fonctions universelles. Dans ce cas, le nombre de contrôles augmente, mais la quantité de code diminue, car au final il y a moins de fonctions, moins de variables initialisées, mais il y a un inconvénient mentionné plus haut.
La deuxième variante consiste à écrire plus de fonctions qui effectueront des calculs moins complexes. Dans ce cas, la quantité de code augmente, plus de variables sont initialisées et le compilateur devra exécuter le code à vide pour trouver la fonction désirée, mais il y a un plus, le nombre de contrôles diminue.
Qui y pense ?
Comment le programme s'exécutera-t-il plus rapidement ?
1. var.- si vous écrivez des fonctions universelles. Dans ce cas, le nombre de contrôles augmente, mais la quantité de code diminue, car au final il y a moins de fonctions, moins de variables initialisées, mais il y a un inconvénient mentionné plus haut.
La deuxième variante consiste à écrire plus de fonctions qui effectueront des calculs moins complexes. Dans ce cas, la quantité de code augmente, plus de variables sont initialisées et le compilateur devra souvent exécuter le code à vide pour trouver la bonne fonction, mais il y a un plus, le nombre de contrôles diminue.
Qui y pense ?
Option 2, beaucoup de petites fonctions, mais vous êtes 2 mois dans le noir sur la différence entre compilateur et interpréteur, le compilateur ne fait pas tourner le code à vide, il crée des tableaux de liens vers les fonctions, variables, constantes.... et utilise ensuite ces tables pour intervenir au moment de l'exécution.
ici lirehttps://habr.com/ru/company/intel/blog/143446/
les développeurs ont écrit la même chose ici quelque part, cherchez dans le filhttps://www.mql5.com/ru/forum/304239/page36#comment_11049194.
SZZ : voici comment fonctionne le compilateurhttps://habr.com/ru/sandbox/114988/
C'est juste incroyable. Comment peut-on lire la documentation pour voir DRAW_HISTOGRAM2 et ne pas voir DRAW_COLOR_HISTOGRAM2
Oh, et il y a des tampons supplémentaires déclarés.Bonsoir. J'ai essayé pendant longtemps et en vain. L'histogramme se dessine correctement, mais la coloration en différentes couleurs (au-dessus et au-dessous du niveau 50) n'a pas gagné. S'il te plaît, dis-moi où j'ai merdé. Texte ci-dessous, le fichier est lié.
Bonsoir. J'ai essayé pendant longtemps et en vain. L'histogramme se dessine correctement, mais la coloration en différentes couleurs (au-dessus et au-dessous du niveau 50) n'a pas gagné. S'il te plaît, dis-moi où j'ai merdé. Texte ci-dessous, le fichier est lié.
En mode débogage, j'ai examiné les valeurs étape par étape :
- ExtMainBuffer[i]
- cl
- ColorHistogram_2Buffer1[i]
- ColorHistogram_2Buffer2[i]
- ColorHistogram_2Colors[i]
Il semble que tout soit correct, mais les graphiques à barres ne sont que verts, ceux qui sont inférieurs à 50 ne sont pas colorés en rouge.En mode débogage, on a examiné les valeurs étape par étape :
- ExtMainBuffer[i]
- cl
- ColorHistogram_2Buffer1[i]
- ColorHistogram_2Buffer2[i]
- ColorHistogram_2Colors[i]
Il semble compter correctement, mais les histogrammes ne sont que verts, ceux inférieurs à 50 ne sont pas colorés en rouge.En mode débogage, on a examiné les valeurs étape par étape :
- ExtMainBuffer[i]
- cl
- ColorHistogram_2Buffer1[i]
- ColorHistogram_2Buffer2[i]
- ColorHistogram_2Colors[i]
Il semble que tout soit correct, mais l'histogramme n'est que vert, les valeurs inférieures à 50 ne sont pas colorées en rouge.mais vous êtes sur le coup...
C'est compréhensible, j'ai juste appelé le programme un compilateur au sens figuré, mais en général, dans quel cas serait-il meilleur ?