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

 
MakarFX:
Geben Sie Ihren Indikator

Tick-Indikator.

#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,x);
   SetIndexDrawBegin(0,0);
   IndicatorDigits(5);
   SetIndexLabel(0,"x");
   SetIndexShift(0,0);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double b=MarketInfo(Symbol(),MODE_BID);
   x[0]=b;
   for(int j=ArraySize(x)-1;j>=1;j--){x[j]=x[j-1];}
   return(0);
  }
//+------------------------------------------------------------------+
 
Oleg Bondarev:

Der Tick-Indikator.

Was zeigt die andere? Warum weichen sie voneinander ab?

Wie oft müssen sie abgeglichen werden?

 
MakarFX:

Was zeigt das zweite Bild? Warum weichen sie voneinander ab?

Wie oft müssen sie abgeglichen werden?

Eine zweite gibt es noch nicht. Das Prinzip ist das gleiche, nur mit einem Filter. Die Ausrichtung wird erfolgen, sobald das Muster auf dem von mir geposteten Muster erscheint. So etwas wie Wellenarbeit (der Boden erscheint, wir richten uns danach aus, der Gipfel erscheint, wir richten uns danach aus).

 
Oleg Bondarev:

Die zweite ist noch nicht verfügbar. Das Prinzip ist dasselbe, nur mit einem Filter. Die Ausrichtung wird so sein, wie das Muster auf dem von mir geposteten Bild erscheint. So etwas wie Wellenarbeit (Boden erscheint, darauf ausrichten, Spitze erscheint, darauf ausrichten).

wenn Sie sie zu einem einzigen zusammenfassen, können Sie eine Abweichung hinzufügen

   x[0]=b+"отклонение";
und je nachdem, wo Sie ausrichten wollen, wird die Ablenkung (+) oder (-) sein.
 
MakarFX:

wenn sie zu einem einzigen zusammengefasst werden, kann eine Abweichung hinzugefügt werden

und je nachdem, wo Sie ausrichten wollen, wird die Ablenkung (+) oder (-) sein.

Die Abweichung wird nicht konstant sein. Ich dachte daran, die Linie mit der Maus zu verschieben, aber anscheinend ist das nicht möglich. Traurig(.

 
Oleg Bondarev:

Die Abweichung wird nicht konstant sein. Ich dachte daran, die Linie mit der Maus zu verschieben, aber anscheinend geht das nicht. Traurig(

Mit einer Maus ist das nicht möglich... obwohl Freiberufler eine Anpassung der Mausablenkung vornehmen können, allerdings gegen eine Gebühr(
Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
Добрый день. Нужен советник на основе индикаторов МА. Вход/выход по пересечению линий. В настройках задаются периоды, сдвиги и методы расчета, метод управления капиталлом, мартнгейл. Код для МТ4/Мт5 Должен работать в тестере. Срок выполнение 2-3 дня Здравствуйте. У меня есть утилита! Она сама выставляет TP и SL мне нужно доработать её что...
 

aufgerufen wird?

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
 
MakarFX:
Keine Mäuse... obwohl Freiberufler eine Mausablenkungseinstellung vornehmen können, aber gegen eine Gebühr(

Wenn ich sicher gewesen wäre, dass das System funktioniert, hätte ich es sofort bestellt.

 
Oleg Bondarev:

Die Abweichung wird nicht konstant sein. Ich wollte die Linie mit der Maus verschieben, aber anscheinend ist das nicht möglich. Traurig(

Ich habe es nicht getan, oder besser gesagt, ich habe nicht im Unterfenster danach gesucht. In der KB habe ich ein Beispiel für das Anklicken der Hauptfensterleisten und die Ausgabe von Informationen über die Leiste aufgeführt - Sie können es nachlesen

Ich habe einen Indikator zum Experimentieren mit Schaltflächen erstellt - ich habe überprüft, ob die Schaltflächen die Indikatorlinie bewegen

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot line1
#property indicator_label1  "line1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
input int shift   = 100;
input int XButton   = 20;
#include <Controls\Button.mqh>
//--- indicator buffers
double         line1Buffer[];
double         Yshift;
CButton button1, button2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   SetIndexBuffer(0, line1Buffer);
   SetIndexEmptyValue(0, 0.0);
   IndicatorDigits(Digits);
   Yshift = 0.0;
   button1.Create(0, "Mybutton1" + (string)rand(), ChartWindowFind(), XButton, 20, 50, 50);
   button1.Text("+");
   button2.Create(0, "Mybutton2" + (string)rand(), ChartWindowFind(), XButton, 70, 50, 100);
   button2.Text("-");
//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam
                 )
{
   if(id == CHARTEVENT_OBJECT_CLICK)
   {
      bool isRedraw = false;
      if(sparam == button1.Name())
      {
         Yshift += _Point * (double)shift;
         isRedraw = true;
         button1.Pressed(false);
      }
      if(sparam == button2.Name())
      {
         Yshift -= _Point * (double)shift;
         isRedraw = true;
         button2.Pressed(false);
      }
      if(isRedraw)
      {
         for(int i = ArraySize(line1Buffer) - 1; i >= 0; i--)
            line1Buffer[i] = Close[i] + Yshift;
      }
   }
}
//+------------------------------------------------------------------+
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, limit = prev_calculated == 0 ? rates_total - 1 : rates_total - prev_calculated + 1;
   for(i = limit; i >= 0; i--)
   {
      line1Buffer[i] = close[i] + Yshift;
   }
   return(rates_total);
}
um zu sehen, dass sich der Indikator bewegt, ziehen Sie eine horizontale Linie in das Unterfenster des Indikators ... Ziemlich coole Sache, die man da machen kann ))))
 
Igor Makanu:

Sie benötigen Mausklick-Koordinaten

Es gibt einen einfacheren Weg: Sie verschieben die Trendlinie an die richtige Stelle und dahinter die

etwas wie

        // получаем точки
        string name; double b;
        int i, j=0, n = ObjectsTotal();
        for (i = 0; i<=n; i++)
        {
                name = ObjectName(i);
                if ((ObjectType(name)==OBJ_TREND)&&name==ID)
                {
                        tX[0]=ObjectGet(name, OBJPROP_TIME1); pY[0]=ObjectGet(name, OBJPROP_PRICE1);
                        tX[1]=ObjectGet(name, OBJPROP_TIME2); pY[1]=ObjectGet(name, OBJPROP_PRICE2);
                        break;
                }
        }
Grund der Beschwerde: