Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1095

 
MakarFX:
Dê seu indicador

Indicador de carrapato.

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

O indicador de carrapato.

O que o outro mostra? Por que eles estão divergindo?

Com que freqüência eles precisam ser alinhados?

 
MakarFX:

O que mostra o segundo? Por que eles divergem?

Com que freqüência eles precisam ser alinhados?

Ainda não há um segundo. O princípio é o mesmo, ticking, apenas com um filtro. O alinhamento será assim que o padrão aparecer no que eu afixei. Algo como trabalho em ondas (o fundo apareceu, nós nos alinhamos a ele, o pico apareceu, nós nos alinhamos a ele).

 
Oleg Bondarev:

A segunda ainda não está disponível. O princípio é o mesmo, no sentido das cócegas, apenas com um filtro. O alinhamento será como o padrão aparece no que eu afixei. Algo como trabalho ondulatório (aparece o fundo, alinha-se a ele, aparece o pico, alinha-se a ele).

se você combiná-los em um só, você pode adicionar um desvio

   x[0]=b+"отклонение";
e dependendo de onde você quiser alinhar, o desvio será (+) ou (-).
 
MakarFX:

se forem combinados em um só, um desvio pode ser adicionado

e dependendo de onde você quiser alinhar, o desvio será (+) ou (-).

O desvio não será constante. Pensei em mover a linha com o mouse, mas aparentemente isso não é possível. Triste(.

 
Oleg Bondarev:

O desvio não será constante. Pensei em mover a linha com o mouse, mas aparentemente você não pode fazer isso. Triste(

De jeito nenhum com um mouse...embora os freelancers possam fazer um ajuste de desvio do mouse, mas por uma taxa(
Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
Добрый день. Нужен советник на основе индикаторов МА. Вход/выход по пересечению линий. В настройках задаются периоды, сдвиги и методы расчета, метод управления капиталлом, мартнгейл. Код для МТ4/Мт5 Должен работать в тестере. Срок выполнение 2-3 дня Здравствуйте. У меня есть утилита! Она сама выставляет TP и SL мне нужно доработать её что...
 

é chamado?

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
 
MakarFX:
Nenhum rato...embora os freelancers possam fazer um ajuste de desvio do rato, mas por uma taxa(

Se eu estivesse certo de que o sistema funcionaria, eu o teria encomendado imediatamente.

 
Oleg Bondarev:

O desvio não será constante. Eu pensei em mover a linha com o mouse, mas aparentemente é impossível. Triste(

Não o fiz, ou melhor, não o procurei na sub-janela. No KB, dei um exemplo de como clicar nas barras da janela principal e exibir informações sobre a barra - você pode procurá-la

Fiz um indicador para experimentar com botões - verifiquei se os botões movem a linha do 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 se o indicador está se movendo deixe cair uma linha horizontal na sub janela do indicador ... Uma coisa muito legal de se fazer ))))
 
Igor Makanu:

você precisa de coordenadas de clique do mouse

Há uma maneira mais fácil, você move a linha de tendência para o lugar certo e atrás dela a

algo 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;
                }
        }
Razão: