Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 874

 
Artyom Trishkin:
Dies ist eine einfache Softwarebeschränkung, die nichts mit den Standardeinstellungen des EA-Einstellungsfensters zu tun hat - diese Einstellungen gehören zu den EA-Einstellungen und werden im EA selbst gesteuert.

Danke) Jetzt verstehe ich, wie es umgesetzt wird

 
Alexandr Sokolov:
Wie erhält man Gewinn- und Verlustwerte, wenn TP oder SL im Code erreicht werden?

Zum Beispiel gibt es die Funktion AccountFreeMarginCheck(), mit der Sie die Marge ermitteln können. Und es gibt keine Funktionen, um den Punktwert zumindest für das angegebene Symbol, Volumen und die Auftragsart zu ermitteln

MQL4

https://www.mql5.com/ru/forum/131859/page3

Hier finden Sie viele Funktionen. Vielleicht können Sie etwas für sich selbst reparieren und es wird Ihnen gut gehen.

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

und wie stelle ich die Neuberechnungsfunktion ein, wenn ich das TF-Diagramm schätze?

 
Lomonosov1991:

und wie stelle ich die Neuberechnungsfunktion ein, wenn ich das TF-Diagramm schätze?

Es gibt eine Dokumentation. Es ist möglich, manchmal hindurchzusehen. Es gibt eine Funktion: UninitializeReason(), sie gibt den Code des Deinitialisierungsgrundes zurück. Und es gibt sogar Beispiele.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
//| get text description                                             | //| Expert deinitialization function                                 |
 

Guten Abend. Auf Anfrage eines Freundes habe ich eine modifizierte Version des Standard MT5Stochastik Indikators Stoch_HISTOGRAM_MQL5_3 erstellt

In dieser Version wird der Indikator als Balkendiagramm angezeigt. Mein Freund wollte, dass die Balken über 50 grün und die unter 50 rot angezeigt werden.

Ich habe es geschafft, mit Bargraphen umzugehen, aber ich weiß nicht, wie ich die Farbe ändern kann, das hat mich einfach umgehauen. Hilfe Beratung plz.

Ich werde den Code unten einfügen und die Datei anhängen.

//+------------------------------------------------------------------+
//|                                       Stoch_HISTOGRAM_MQL5_3.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_buffers 6
#property indicator_plots   3
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_type3   DRAW_HISTOGRAM2
#property indicator_type4   DRAW_HISTOGRAM2
#property indicator_color1  LightSeaGreen
#property indicator_color2  Blue
#property indicator_color3  Green
#property indicator_style2  STYLE_DOT
#property indicator_style3  STYLE_SOLID
//--- input parameters
input int InpKPeriod=5;  // K period
input int InpDPeriod=3;  // D period
input int InpSlowing=3;  // Slowing
//--- indicator buffers
double    ExtMainBuffer[];
double    ExtSignalBuffer[];
double    HISTOGRAM2_1[];
double    HISTOGRAM2_2[];
double    ExtHighesBuffer[];
double    ExtLowesBuffer[];
color     colors[]={clrRed,clrGreen};
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HISTOGRAM2_1,INDICATOR_DATA);
   SetIndexBuffer(3,HISTOGRAM2_2,INDICATOR_DATA);
   SetIndexBuffer(4,ExtHighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,ExtLowesBuffer,INDICATOR_CALCULATIONS);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- set levels
   IndicatorSetInteger(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 label
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch_HISTOGRAM("+(string)InpKPeriod+","+(string)InpDPeriod+","+(string)InpSlowing+")");
   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 drawn
   PlotIndexSetInteger(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                                            |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,k,start;
//--- check for bars count
   if(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 cycle
   for(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){
         HISTOGRAM2_1[i]=50; 
         HISTOGRAM2_2[i]=ExtMainBuffer[i]; 
         //colors[i]=clrGreen;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrGreen);
         } 
      if(ExtMainBuffer[i]<50){
         HISTOGRAM2_1[i]=ExtMainBuffer[i]; 
         HISTOGRAM2_2[i]=50; 
         //colors[i]=clrRed;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrRed);
         } 
      //PlotIndexSetInteger(2,PLOT_LINE_COLOR,colors[i]);
     }
//--- 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);
  }
//+------------------------------------------------------------------+
Dateien:
 
Sergey Voytsekhovsky:

Guten Abend. Auf Anfrage eines Freundes habe ich eine modifizierte Version des Standard MT5Stochastik Indikators Stoch_HISTOGRAM_MQL5_3 erstellt

In dieser Version wird der Indikator als Balkendiagramm angezeigt. Mein Freund wollte, dass die Balken über 50 grün und die unter 50 rot angezeigt werden.

Ich habe es geschafft, mit Bargraphen umzugehen, aber ich weiß nicht, wie ich die Farbe ändern kann, das hat mich einfach umgehauen. Hilfe Beratung plz.

Ich werde den Code unten einfügen und die Datei anhängen.

Es ist einfach erstaunlich. Wie kann man die Dokumentation lesen und DRAW_HISTOGRAM2 sehen und nicht DRAW_COLOR_HISTOGRAM2

Oh, und es werden zusätzliche Puffer angegeben.
 
Alexey Viktorov:

Es ist einfach erstaunlich. Wie kann man die Dokumentation lesen und DRAW_HISTOGRAM2 sehen und nicht DRAW_COLOR_HISTOGRAM2

Oh, und die Puffer sind überflüssig.

Vielen Dank für Ihren Kommentar. Sie können sich gar nicht vorstellen, wie viel man beim Lesen von Unterlagen NICHT mitbekommt, wenn man wie im Nebel nach Wegen und Lösungen sucht, wenn es keinen Lehrer, Mentor, erfahreneren Kameraden usw. gibt. Vielen Dank, ich habe bereits DRAW_COLOR_HISTOGRAM2 gefunden, ich verstehe die Bedeutung davon, ich werde es jetzt neu machen.

Können Sie mir mehr über zusätzliche Puffer sagen? Man kann nicht zu viel Erfahrung haben, aber man kann zu viele Puffer haben. :-0

 
Sergey Voytsekhovsky:

Vielen Dank für Ihren Kommentar. Sie können sich gar nicht vorstellen, wie viel man beim Lesen von Unterlagen NICHT mitbekommt, wenn man wie im Nebel nach Gefühl nach Wegen und Lösungen sucht, wenn es keinen Lehrer, Mentor, erfahreneren Kameraden usw. gibt. Vielen Dank, ich habe bereits DRAW_COLOR_HISTOGRAM2 gefunden, ich verstehe die Bedeutung davon, ich werde es jetzt neu machen.

Können Sie mir mehr über zusätzliche Puffer sagen? Man kann nicht zu viel Erfahrung haben, aber man kann zu viele Puffer haben. :-0

Na ja... Wenn die Stochastik 2 Puffer hat, wenn ich nicht alle Speicherchips durchgebrannt habe. Um genau zu sein, sind es 2 von ihnen. Dementsprechend sollten nur sie gespeichert und durch eine Histogrammanzeige ersetzt werden. Tatsächlich benötigt DRAW_COLOR_HISTOGRAM2 für zwei Plots 6 Puffer. Aber auch wenn ich Zahl sagte, meinte ich diese Zeilen

#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_type3   DRAW_HISTOGRAM2
#property indicator_type4   DRAW_HISTOGRAM2

Meiner Meinung nach sollte es folgendermaßen aussehen

#property indicator_buffers 5
#property indicator_plots   2
#property indicator_type1   DRAW_COLOR_HISTOGRAM2 // основная 
#property indicator_type2   DRAW_LINE             // сигнальная
#property indicator_color1  clrGreen,clrRed       // цвет гистограмм
#property indicator_color2  clrBlue               // цвет линии
 

Grüße an alle!
Ein Hinweis, falls Sie es wissen.

Wie Sie sehen, hat die grüne (Vigor=0,1154) die rote (Signal=0,1133) nicht einmal in der Nähe überschritten, sondern wurde verkauft. Und es handelt sich nicht um einen Einzelfall.

Hier ist eine weitere.

Hier sind sie "verschmolzen", aber immer noch Vigor=0,0543 und Signal=0,0525.

Alles wird überall "pronormalisiert".

Code dieser Bedingung: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S (Signal-rot), bzw. RVI_S_M (Vigor-grün).

Wenn jemand etwas Sinnvolles zu sagen hat, wäre ich sehr dankbar.

 
KrasAleks:

Grüße an alle!
Ein Hinweis, falls Sie es wissen.

Wie Sie sehen, hat die grüne (Vigor=0,1154) die rote (Signal=0,1133) nicht einmal in der Nähe gekreuzt, aber sie hat verkauft. Und es handelt sich nicht um einen Einzelfall.

Hier ist eine weitere.

Hier sind sie "verschmolzen", aber immer noch Vigor=0,0543 und Signal=0,0525.

Alles wird überall "pronormalisiert".

Code dieser Bedingung: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S (Signal-rot), bzw. RVI_S_M (Vigor-grün).

Wenn jemand etwas Sinnvolles zu sagen hat, wäre ich sehr dankbar.

Wahrscheinlich gab es eine Kreuzung, aber sie wurde neu gezeichnet.
Überprüfen Sie das Signal, nachdem die Kerze geschlossen wurde.

Grund der Beschwerde: