Es besteht die Notwendigkeit, Objekte nach einem bestimmten Kriterium zu verstecken. Wie kann ich Objekte in einem Diagramm ausblenden (hauptsächlich Linien)? Objekte können durch Präfixe ausgewählt werden.
Seric29: Es besteht die Notwendigkeit, Objekte nach einem bestimmten Kriterium zu verstecken. Wie kann ich Objekte in einem Diagramm ausblenden (hauptsächlich Linien)? Die Objekte können durch ein Präfix ausgewählt werden.
OBJPROP_TIMEFRAMES hilft dabei. Aber nicht alle auf einmal, sondern in einer Schleife, einer nach dem anderen.
1. var.- wenn Sie universelle Funktionen schreiben. In diesem Fall erhöht sich die Anzahl der Überprüfungen, aber der Umfang des Codes nimmt ab, da es weniger Funktionen und weniger initialisierte Variablen gibt, aber es gibt einen bereits erwähnten Nachteil.
Die zweite Variante ist, dass wir mehr Funktionen schreiben, die weniger komplexe Berechnungen durchführen. In diesem Fall erhöht sich der Umfang des Codes, es werden mehr Variablen initialisiert, und der Compiler muss den Code öfters im Leerlauf ausführen, um die richtige Funktion zu finden, aber es gibt auch einen Vorteil: die Anzahl der Überprüfungen nimmt ab.
1. var.- wenn Sie universelle Funktionen schreiben. In diesem Fall erhöht sich die Anzahl der Überprüfungen, aber der Umfang des Codes verringert sich, da es weniger Funktionen und weniger initialisierte Variablen gibt, aber es gibt einen bereits erwähnten Nachteil.
Die zweite Variante ist, dass wir mehr Funktionen schreiben, die weniger komplexe Berechnungen durchführen. In diesem Fall erhöht sich der Umfang des Codes, es werden mehr Variablen initialisiert, und der Compiler muss den Code öfters im Leerlauf ausführen, um die richtige Funktion zu finden, aber es gibt auch einen Vorteil: die Anzahl der Überprüfungen nimmt ab.
Wer denkt darüber nach?
Option 2, viele kleine Funktionen, aber Sie sind 2 Monate im Unklaren über den Unterschied zwischen Compiler und Interpreter, der Compiler führt den Code nicht untätig aus, er erstellt Tabellen mit Verknüpfungen zu Funktionen, Variablen, Konstanten... und verwendet dann diese Tabellen, um zur Laufzeit einzuspringen
Делиться с ближним своим для нас, божьих тварей, это очень характерно, считается добродетелью, и вообще, как утверждает первоисточник, положительно отражается на карме. Однако в мире, созданном архитекторами микропроцессоров, такое поведение не всегда приводит к хорошим результатам, особенно если это касается разделения памяти между потоками...
Es ist einfach erstaunlich. Wie kann man die Dokumentation lesen, um DRAW_HISTOGRAM2 zu sehen und DRAW_COLOR_HISTOGRAM2 nicht zu sehen?
Oh, und es werden zusätzliche Puffer angegeben.
Guten Abend. Ich habe es lange und vergeblich versucht. Das Histogramm wird korrekt gezeichnet, aber die Einfärbung in verschiedenen Farben (über und unter Stufe 50) hat sich nicht durchgesetzt. Bitte sagen Sie mir, was ich falsch gemacht habe. Text unten, Datei ist verlinkt.
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Guten Abend. Ich habe es lange und vergeblich versucht. Das Histogramm wird korrekt gezeichnet, aber die Einfärbung in verschiedenen Farben (über und unter Stufe 50) hat sich nicht durchgesetzt. Bitte sagen Sie mir, was ich falsch gemacht habe. Text unten, Datei ist verlinkt.
Im Debug-Modus bin ich die Werte Schritt für Schritt durchgegangen:
ExtMainBuffer[i]
cl
Farbhistogramm_2Puffer1[i]
Farbhistogramm_2Puffer2[i]
Farbhistogramm_2CFarben[i]
Es scheint alles richtig zu sein, aber die Balkendiagramme sind nur grün, die unter 50 sind nicht rot gefärbt.
Индикатор Normalized Volume - индикатор нормализованного объёма. Отображает средний объём в диапазоне баров в виде цветной гистограммы с пороговым уровнем. Имеет два настраиваемых параметра:
Es besteht die Notwendigkeit, Objekte nach einem bestimmten Kriterium zu verstecken. Wie kann ich Objekte in einem Diagramm ausblenden (hauptsächlich Linien)? Die Objekte können durch ein Präfix ausgewählt werden.
OBJPROP_TIMEFRAMES hilft dabei. Aber nicht alle auf einmal, sondern in einer Schleife, einer nach dem anderen.
OBJPROP_TIMEFRAMES würde dabei helfen. Aber nicht alle auf einmal, sondern in einer Schleife, einer nach dem anderen.
Ich werde das tun, ich möchte eine periodenweise Zuordnung und werde experimentieren, danke für den Rat.
Wie wird das Programm schneller laufen?
1. var.- wenn Sie universelle Funktionen schreiben. In diesem Fall erhöht sich die Anzahl der Überprüfungen, aber der Umfang des Codes nimmt ab, da es weniger Funktionen und weniger initialisierte Variablen gibt, aber es gibt einen bereits erwähnten Nachteil.
Die zweite Variante ist, dass wir mehr Funktionen schreiben, die weniger komplexe Berechnungen durchführen. In diesem Fall erhöht sich der Umfang des Codes, es werden mehr Variablen initialisiert, und der Compiler muss den Code öfters im Leerlauf ausführen, um die richtige Funktion zu finden, aber es gibt auch einen Vorteil: die Anzahl der Überprüfungen nimmt ab.
Wer denkt darüber nach?
Wie wird das Programm schneller laufen?
1. var.- wenn Sie universelle Funktionen schreiben. In diesem Fall erhöht sich die Anzahl der Überprüfungen, aber der Umfang des Codes verringert sich, da es weniger Funktionen und weniger initialisierte Variablen gibt, aber es gibt einen bereits erwähnten Nachteil.
Die zweite Variante ist, dass wir mehr Funktionen schreiben, die weniger komplexe Berechnungen durchführen. In diesem Fall erhöht sich der Umfang des Codes, es werden mehr Variablen initialisiert, und der Compiler muss den Code öfters im Leerlauf ausführen, um die richtige Funktion zu finden, aber es gibt auch einen Vorteil: die Anzahl der Überprüfungen nimmt ab.
Wer denkt darüber nach?
Option 2, viele kleine Funktionen, aber Sie sind 2 Monate im Unklaren über den Unterschied zwischen Compiler und Interpreter, der Compiler führt den Code nicht untätig aus, er erstellt Tabellen mit Verknüpfungen zu Funktionen, Variablen, Konstanten... und verwendet dann diese Tabellen, um zur Laufzeit einzuspringen
hier lesenhttps://habr.com/ru/company/intel/blog/143446/
Die Entwickler haben das Gleiche hier irgendwo geschrieben. Suchen Sie im Threadhttps://www.mql5.com/ru/forum/304239/page36#comment_11049194
SZZ: So funktioniert der Compilerhttps://habr.com/ru/sandbox/114988/
Es ist einfach erstaunlich. Wie kann man die Dokumentation lesen, um DRAW_HISTOGRAM2 zu sehen und DRAW_COLOR_HISTOGRAM2 nicht zu sehen?
Oh, und es werden zusätzliche Puffer angegeben.Guten Abend. Ich habe es lange und vergeblich versucht. Das Histogramm wird korrekt gezeichnet, aber die Einfärbung in verschiedenen Farben (über und unter Stufe 50) hat sich nicht durchgesetzt. Bitte sagen Sie mir, was ich falsch gemacht habe. Text unten, Datei ist verlinkt.
Guten Abend. Ich habe es lange und vergeblich versucht. Das Histogramm wird korrekt gezeichnet, aber die Einfärbung in verschiedenen Farben (über und unter Stufe 50) hat sich nicht durchgesetzt. Bitte sagen Sie mir, was ich falsch gemacht habe. Text unten, Datei ist verlinkt.
Im Debug-Modus bin ich die Werte Schritt für Schritt durchgegangen:
- ExtMainBuffer[i]
- cl
- Farbhistogramm_2Puffer1[i]
- Farbhistogramm_2Puffer2[i]
- Farbhistogramm_2CFarben[i]
Es scheint alles richtig zu sein, aber die Balkendiagramme sind nur grün, die unter 50 sind nicht rot gefärbt.Gehen Sie im Debug-Modus die Werte Schritt für Schritt durch:
- ExtMainBuffer[i]
- cl
- Farbhistogramm_2Puffer1[i]
- Farbhistogramm_2Puffer2[i]
- Farbhistogramm_2CFarben[i]
Die Zählung scheint korrekt zu sein, aber die Histogramme sind nur grün, die unter 50 sind nicht rot gefärbt.Gehen Sie im Debug-Modus die Werte Schritt für Schritt durch:
- ExtMainBuffer[i]
- cl
- Farbhistogramm_2Puffer1[i]
- Farbhistogramm_2Puffer2[i]
- Farbhistogramm_2CFarben[i]
Es scheint alles richtig zu machen, aber die Histogramme sind nur grün, diejenigen unter 50 sind nicht rot gefärbt.aber du bist auf dem Abzug ...
Nun, das ist verständlich, ich habe das Programm gerade bildlich als Compiler bezeichnet, aber in welchem Fall wäre es besser?