Ein wenig Nachbesserung ist nötig - Seite 9

 
Сергей Дыбленко:

Es war mir egal!!!!!!!!!!! ok..... Ich habe mich entschuldigt und es liegt an dir, ob du verzeihst oder nicht!

Nochmals vielen Dank für den Ratschlag!!!!!!!!!!

und es tut mir leid, dass ich Ihre Zeit mit mir verschwendet habe!!!!!!!!!!!

Sergei, ich (entschuldige, Arschloch) es ist OK. Ich sagte nur, dass ich ein paar Drinks hatte - (Leute werden manisch, wenn sie trinken) Es tut mir leid, Arschloch. Ich wollte dich nicht beleidigen.

 
Alexsandr San:

Sergei! Ich bin (verzeih mir Arschloch) es ist ok. Ich habe geschrieben, ich hatte ein paar Drinks - (Menschen haben Manie, wenn sie trinken) verzeih mir Arschloch. Ich wollte nicht beleidigen.

Ich hab's! ))))

Frieden, Arbeit, Mai!

 
Сергей Дыбленко:

Verstanden! ))))

Frieden, Arbeit, Mai!

Sergei, ich habe dort ein paar Anpassungen vorgenommen. Die Funktion dient der Reflexion und sollte in Ruhe und mit Bedacht genutzt werden.

Hier ist die neueste Versionhttps://c.mql5.com/3/323/Grid_small_revision__3.mq4

Tut mir leid wegen gestern - besoffen wie ein Schwein.

 
Alexsandr San:

Sergei, ich habe es ein bisschen verändert. Die Funktion dient der Reflexion und sollte in Ruhe und mit Bedacht genutzt werden.

Hier ist die neueste Versionhttps://c.mql5.com/3/323/Grid_small_revision__3.mq4

Tut mir leid wegen gestern - besoffen wie ein Schwein.

ok, vergiss es)))
 

vor etwa einem halben Jahr habe ich einen Füllstandsanzeiger gefunden.......... mein Hirn reichte nie aus, um ihn richtig zum Laufen zu bringen

Schauen Sie es sich doch in aller Ruhe an. .....

Die Ebenen sind korrekt, aber die Pfeile sind falsch......... Ich konnte sie nicht so einstellen, dass sie wie ein Uhrwerk funktionieren.


// Original indicator by KurlFX 23/6/09
//+------------------------------------------------------------------+
//|                                            Easy Trend Visualizer |
//|                                 Copyright © 2009-2017, EarnForex |
//|                                       https://www.earnforex.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009-2018, EarnForex"
#property link      "https://www.earnforex.com/metatrader-indicators/EasyTrendVisualizer/"
#property version   "1.09"

#property description "Easy Trend Visualizer - displays trend strength, direction, and support and resistance levels."
#property description "Alerts:"
#property description " * ERV-HL - Horizontal line"
#property description " * ERV-AU - Arrow up"
#property description " * ERV-AD - Arrow down"
#property description " * ERV-HLPC - Price crosses and closes above/below previous horizontal line."
#property strict

#define  Alvl 35.0
#define  Alvl2 30.0

#property indicator_chart_window
#property indicator_buffers 5
//#property indicator_color1 clrMagenta
//#property indicator_color2 clrDeepSkyBlue
#property indicator_width1 8
#property indicator_width2 8
#property indicator_color3 clrYellow
#property indicator_color4 clrYellow
#property indicator_color5 clrYellow
#property indicator_width3 2
#property indicator_width4 2

input int ADXperiod1 = 10;
input int ADXperiod2 = 14;
input int ADXperiod3 = 20;
input bool UseAlertHorizontalLine = false;
input bool UseAlertUpDownArrows = false;
input int NumberPHLtoTrack = 0; // How many previous horizontal lines to track for alert purposes?
input int IgnorePHLShorterThan = 2; // Ignore previous horizontal lines short than
input color PHLC_Arrow_Color = clrChocolate;
input bool SendEmails = false; // Send alerts via email?
input bool SendNotifications = false; // Send alerts via push notifications?

int MxP, MnP, MdP;

double was_alert_hl = EMPTY_VALUE; // Horizontal line
double was_alert_au = EMPTY_VALUE; // Arrow up
double was_alert_ad = EMPTY_VALUE; // Arrow down

double To[];
double Tc[];
double ADX1[];
double ADX2[];
double ADX3[];
double Up[];
double Dn[];
double Ex[];

double Last_Ex[]; // Buffer to hold previous "last line levels". Required for price/line alert because imaginary line cross also count.
datetime was_alert_phlc[]; // Price crosses and closes above/below previous horizontal line.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
        MxP = MathMax(MathMax(ADXperiod1, ADXperiod2), ADXperiod3);
        MnP = MathMin(MathMin(ADXperiod1, ADXperiod2), ADXperiod3);
        if (MxP == ADXperiod1) MdP = MathMax(ADXperiod2, ADXperiod3);
        else if (MxP == ADXperiod2) MdP = MathMax(ADXperiod1, ADXperiod3);      
        else MdP = MathMax(ADXperiod2, ADXperiod1);
        
        IndicatorShortName("ETV(" + IntegerToString(MnP) + "/" + IntegerToString(MdP) + "/" + IntegerToString(MxP) + ")");

        IndicatorBuffers(8);
        SetIndexBuffer(0, To);
        SetIndexBuffer(1, Tc);
        SetIndexBuffer(2, Up);
        SetIndexBuffer(3, Dn);
        SetIndexBuffer(4, Ex);
        SetIndexBuffer(5, ADX1);
        SetIndexBuffer(6, ADX2);
        SetIndexBuffer(7, ADX3);
        SetIndexLabel(0, NULL);
        SetIndexLabel(1, NULL);
        SetIndexStyle(0, DRAW_HISTOGRAM);
        SetIndexStyle(1, DRAW_HISTOGRAM);       
        SetIndexLabel(2, "Up");
        SetIndexLabel(3, "Dn");
        SetIndexLabel(4, "End");
        SetIndexStyle(2, DRAW_ARROW);
        SetIndexStyle(3, DRAW_ARROW);
        SetIndexStyle(4, DRAW_LINE);
        SetIndexArrow(2, 225);
        SetIndexArrow(3, 226);

   ArrayResize(Last_Ex, PHLC_Arrow_Color);
   ArrayInitialize(Last_Ex, EMPTY_VALUE);

   ArrayResize(was_alert_phlc, PHLC_Arrow_Color);
   ArrayInitialize(was_alert_phlc, 0);

        return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit()
{
   // Delete all alert arrows.
   ObjectsDeleteAll(0, "PHLCArrow_", -1, OBJ_ARROW);
}

//+------------------------------------------------------------------+
//| Custom Easy Trend Visualization indicator                        |
//+------------------------------------------------------------------+
int start()
{
        int cntbar = IndicatorCounted();
        int limit = Bars - cntbar;
        if (cntbar == 0) limit -= MxP;
        // Need to update at least the most recent two values for use in the main cycle.
        for (int i = MathMax(limit - 1, 2); i >= 0; i--)
        {
      ADX1[i] = iADX(NULL, 0, MnP, PRICE_CLOSE, MODE_MAIN, i);
      ADX2[i] = iADX(NULL, 0, MdP, PRICE_CLOSE, MODE_MAIN, i);
      ADX3[i] = iADX(NULL, 0, MxP, PRICE_CLOSE, MODE_MAIN, i);
        }
        
        if (cntbar == 0) limit--;

        for (int i = limit - 1; i >= 0; i--)
        {
                bool f1 = false, f2 = false, f3 = false;
                To[i] = EMPTY_VALUE; Tc[i] = EMPTY_VALUE;
                Up[i] = EMPTY_VALUE; Dn[i] = EMPTY_VALUE; Ex[i] = EMPTY_VALUE;
                
                // Remember last lines for imaginary crosses.
                if ((NumberPHLtoTrack > 0) && (i + 2 < Bars)) // Check if we fit into arrays.
                {
                   // New line found and it has not yet been included.
                   if ((Ex[i + 1] == EMPTY_VALUE) && (Ex[i + 2] != EMPTY_VALUE) && (Last_Ex[0] != Ex[i + 2]))
                   {
                      // Count the length of the added line.
                      int length = 1;
                      for (int j = i + 3; j < Bars; j++)
                      {
                         if (Ex[j] == EMPTY_VALUE) break;
                         length++;
                      }

                      if (length >= IgnorePHLShorterThan)
                      // Shift arrays (FIFO, 0 - newest):
                      for (int j = NumberPHLtoTrack - 1; j >= 0; j--)
                      {
                      // This check is needed for a very special case of chart data not being fully loaded.
                      // When it is being loaded the indicator is recalculated, but new bars appear from left, not from right as usually.
                      // This keeps rewriting the Last_Ex array with basically the same values, which can lead to lots of unnecessary alerts.
                         if (Time[i + 2] < was_alert_phlc[j]) break;
                         if (j == 0) // Insert new value.
                         {
                            Last_Ex[j] = Ex[i + 2]; 
                            was_alert_phlc[j] = 0;
                         }
                         else // Shift.
                         {
                            Last_Ex[j] = Last_Ex[j - 1];
                            was_alert_phlc[j] = was_alert_phlc[j - 1];
                         }
                      }
                   }
                }

                if (ADX1[i + 1] < ADX1[i]) f1 = true;
                if (ADX2[i + 1] < ADX2[i]) f2 = true;
                if (ADX3[i + 1] < ADX3[i]) f3 = true;
                
                if ((f1) && (f2) && (f3) && (ADX1[i] > Alvl) && (ADX2[i] > Alvl2))
                {
                        double di = iADX(NULL, 0, MnP, PRICE_CLOSE, MODE_PLUSDI,  i)
                                                  -iADX(NULL, 0, MnP, PRICE_CLOSE, MODE_MINUSDI, i);
                        double hi = MathMax(Open[i], Close[i]);
                        double lo = MathMin(Open[i], Close[i]);
                        double op = Open[i];
                        if (di > 0)
                        {
                                To[i] = lo; Tc[i] = hi;
                                if (To[i + 1] == EMPTY_VALUE) Up[i] = op;
                        }
                        else
                        {
                                To[i] = hi; Tc[i] = lo;
                                if (To[i + 1] == EMPTY_VALUE) Dn[i] = op;
                        }
                }
                else
                {
                        if (To[i + 1] != EMPTY_VALUE) Ex[i] = Close[i + 1];
                        else Ex[i] = Ex[i + 1];
                }
        }

   string DateTime = IntegerToString(TimeYear(Time[0])) + "-" + FormatDateTimeDigit(TimeMonth(Time[0])) + "-" + FormatDateTimeDigit(TimeDay(Time[0])) + " " + FormatDateTimeDigit(TimeHour(Time[0])) + ":" + FormatDateTimeDigit(TimeMinute(Time[0]));
   string PerStr = PeriodToString(Period());
   if (UseAlertHorizontalLine)
   {
      if ((Ex[1] != EMPTY_VALUE) && (Ex[1] != was_alert_hl) && (Ex[1] != Ex[2]))
      {
         string text = "ETV-HL " + DateTime;
         Alert(text);
         text += " " + Symbol() + " @ " + PerStr;
         if (SendEmails) SendMail(text, text);
         if (SendNotifications) SendNotification(text);
         was_alert_hl = Ex[1];
      }
   }
   if (UseAlertUpDownArrows)
   {
      if ((Up[0] != EMPTY_VALUE) && (Up[0] != was_alert_au))
      {
         string text = "ETV-AU " + DateTime;
         Alert(text);
         text += " " + Symbol() + " @ " + PerStr;
         if (SendEmails) SendMail(text, text);
         if (SendNotifications) SendNotification(text);
         was_alert_au = Up[0];
      }
      if ((Dn[0] != EMPTY_VALUE) && (Dn[0] != was_alert_ad))
      {
         string text = "ETV-AD " + DateTime;
         Alert(text);
         text += " " + Symbol() + " @ " + PerStr;
         if (SendEmails) SendMail(text, text);
         if (SendNotifications) SendNotification(text);
         was_alert_ad = Dn[0];
      }
   }
   // Alerts for the previous HL crosses.
   if (NumberPHLtoTrack > 0)
   {
      DateTime = TimeToString(Time[1]);
      CheckImaginaryLinesCrosses(DateTime, PerStr);
   }
   
        return(0);
}

string FormatDateTimeDigit(int Input)
{
   if (Input < 10) return("0" + IntegerToString(Input));
   else return(IntegerToString(Input));
}

string PeriodToString(int per)
{
   switch (per)
   {
      case 60:
         return("H1");
      case 240:
         return("H4");
      case 1440:
         return("D1");
      case 10080:
         return("W1");
      case 43200:
         return("MN1");
      case 30:
         return("M30");
      case 15:
         return("M15");
      case 5:
         return("M5");
      case 1:
         return("M1");
   }
   return("");
}

void CheckImaginaryLinesCrosses(string DateTime, string PerStr)
{
   for (int i = 0; i < NumberPHLtoTrack; i++)
   {
      if ((Last_Ex[i] != EMPTY_VALUE) && (was_alert_phlc[i] != Time[0]) && (((Close[1] > Last_Ex[i]) && (Open[1] <= Last_Ex[i])) || ((Close[1] <= Last_Ex[i]) && (Open[1] > Last_Ex[i]))))
      {
         string text = "ETV-PHLC " + DateTime;
         Alert(text);
         string obj_name = "PHLCArrow_" + DateTime + IntegerToString(i);
         ObjectCreate(0, obj_name, OBJ_ARROW, 0, Time[1], Last_Ex[i]);
         ObjectSetInteger(0, obj_name, OBJPROP_ARROWCODE, 200); 
         ObjectSetInteger(0, obj_name, OBJPROP_COLOR, PHLC_Arrow_Color);
         string desc = "Price crossed: " + DoubleToString(Last_Ex[i], Digits()) + " @ " + PerStr;
         ObjectSetString(0, obj_name, OBJPROP_TOOLTIP, desc);
         ObjectSetString(0, obj_name, OBJPROP_TEXT, desc);
         ObjectSetInteger(0, obj_name, OBJPROP_SELECTABLE, false);
         ObjectSetInteger(0, obj_name, OBJPROP_HIDDEN, false);
         text += " " + Symbol() + " @ " + PerStr;
         if (SendEmails) SendMail(text, text);
         if (SendNotifications) SendNotification(text);
         was_alert_phlc[i] = Time[0];
      }
   }
}
//+------------------------------------------------------------------+
 
Сергей Дыбленко:

vor etwa einem halben Jahr habe ich einen Füllstandsanzeiger gefunden.......... mein Hirn reichte nicht aus, um ihn richtig zu bedienen

Schauen Sie es sich doch in aller Ruhe an. .....

Die Ebenen sind korrekt, aber die Pfeile sind falsch......... Ich konnte sie nicht so einstellen, dass sie wie ein Uhrwerk funktionieren.


über diesen Indikator?https://www.mql5.com/ru/code/13182

USDCHFM30

Easy Trend Visualizer
Easy Trend Visualizer
  • www.mql5.com
Easy Trend Visualizer — простой визуализатор трендов. Этот индикатор делает именно то, на что указывает его название. Он показывает, где начинается и кончается тренд и где тренд отсутствует вовсе. Индикатор основан на стандартных индикаторах ADX (Average Direction Movement Index) и работает довольно быстро. Easy Trend Visualizer отображается в...
Dateien:
TADX.mq4  8 kb
 
Ich glaube, es ist.......... Ich kann mich nicht mehr an den Link oder den Namen....... erinnern, aber es sieht so aus
 
Сергей Дыбленко:
Ich glaube, es ist.......... Ich erinnere mich nicht an den Link oder den Namen......., aber es sieht so aus

es scheint - wie es hier gezeigt werden soll - die Warnungen ein wenig zu korrigieren

USDCHFM5

Dateien:
 
Soweit ich weiß, hat er die Quellen hier https://www.mql5.com/ru/code/10304
 
Ich versuche, die Pfeile mit den Gleislinien in Übereinstimmung zu bringen, zumindest grob, aber es klappt nicht!
Grund der Beschwerde: