Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1095

 
MakarFX:
Dé su indicador

Indicador de garrapatas.

#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:

El indicador de tic.

¿Qué muestra el otro? ¿Por qué son divergentes?

¿Con qué frecuencia deben alinearse?

 
MakarFX:

¿Qué muestra el segundo? ¿Por qué divergen?

¿Con qué frecuencia deben alinearse?

Todavía no hay una segunda. El principio es el mismo, el tic-tac, sólo que con un filtro. La alineación será en cuanto aparezca el patrón en el que he publicado. Algo así como el trabajo de las ondas (apareció el fondo, nos alineamos con él, apareció el pico, nos alineamos con él).

 
Oleg Bondarev:

El segundo aún no está disponible. El principio es el mismo, en cuanto a las garrapatas, sólo que con un filtro. La alineación será como aparece el patrón en el que he publicado. Algo así como el trabajo de las ondas (aparece el fondo, se alinea con él, aparece el pico, se alinea con él).

si los combinas en uno, puedes añadir una desviación

   x[0]=b+"отклонение";
y dependiendo de dónde se quiera alinear, la desviación será (+) o (-).
 
MakarFX:

si se combinan en una sola, se puede añadir una desviación

y dependiendo de dónde se quiera alinear, la desviación será (+) o (-).

La desviación no será constante. Pensé en mover la línea con el ratón, pero aparentemente no es posible. Triste(.

 
Oleg Bondarev:

La desviación no será constante. Pensé en mover la línea con el ratón, pero aparentemente no se puede hacer eso. Triste(

No hay manera con un ratón... aunque los autónomos pueden hacer un ajuste de la desviación del ratón, pero por una tarifa(
Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
Добрый день. Нужен советник на основе индикаторов МА. Вход/выход по пересечению линий. В настройках задаются периоды, сдвиги и методы расчета, метод управления капиталлом, мартнгейл. Код для МТ4/Мт5 Должен работать в тестере. Срок выполнение 2-3 дня Здравствуйте. У меня есть утилита! Она сама выставляет TP и SL мне нужно доработать её что...
 

llama a OnDeinit (-1)?

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
 
MakarFX:
No hay ratones... aunque los autónomos pueden hacer un ajuste de la desviación del ratón, pero por una tarifa(

Si estuviera seguro de que el sistema iba a funcionar, lo habría pedido enseguida.

 
Oleg Bondarev:

La desviación no será constante. Pensé en mover la línea con el ratón, pero aparentemente es imposible. Triste(

No lo he hecho, o mejor dicho, no lo he buscado en la subventana. En la KB he puesto un ejemplo de cómo hacer clic en las barras de la ventana principal y mostrar información sobre la barra - puedes buscarlo

He hecho un indicador para experimentar con los botones - He comprobado si los botones mueven la línea del indicador

#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);
}
para ver que el indicador se está moviendo deje caer una línea horizontal en la subventana del indicador... Es una cosa muy buena para hacer ))))
 
Igor Makanu:

necesita coordenadas de clic del ratón

Hay una forma más fácil, mueves la Línea de Tendencia al lugar correcto y detrás de ella la

algo así como

        // получаем точки
        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;
                }
        }