MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1095

削除済み  
MakarFX:
インジケーターを表示する

ティックインジケーター

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

ティックインジケーター です。

もう1つは何を示しているのでしょうか?なぜ乖離しているのか?

アライメントはどのくらいの頻度で必要ですか?

削除済み  
MakarFX:

2枚目には何が写っているのでしょうか?なぜ乖離するのか?

アライメントはどのくらいの頻度で必要ですか?

第2弾はまだないんです。原理は同じで、フィルターがあるだけで、カチカチと音がします。アライメントは、投稿したものにパターンが表示されたらすぐに。波動工学のようなもの(底が現れた、そこに合わせる、ピークが現れた、そこに合わせる)。

 
Oleg Bondarev:

第2弾は未定です。原理はカチカチと同じで、フィルターがあるだけです。アライメントは、私が投稿したものに表示されているパターンの通りになります。波動のようなもの(下が現れる、そこに合わせる、ピークが現れる、そこに合わせる)。

ひとつにまとめると、偏差値をつけることができます。

   x[0]=b+"отклонение";
で、合わせたい場所によって、たわみ量が(+)か(-)になります。
削除済み  
MakarFX:

を1つにまとめると、偏差値が加算されることがあります。

で、合わせたい場所によって、たわみ量が(+)か(-)になります。

偏差値が一定になることはありません。マウスで線を動かそうと思ったのですが、どうやら無理のようです。悲しい(.

 
Oleg Bondarev:

偏差値が一定になることはありません。マウスで線を動かそうかと思ったが、どうやらそれはできないようだ。悲しい(

マウスでまさか...フリーランスならマウスのたわみ調整も可能ですが、有料 です(
Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
Добрый день. Нужен советник на основе индикаторов МА. Вход/выход по пересечению линий. В настройках задаются периоды, сдвиги и методы расчета, метод управления капиталлом, мартнгейл. Код для МТ4/Мт5 Должен работать в тестере. Срок выполнение 2-3 дня Здравствуйте. У меня есть утилита! Она сама выставляет TP и SL мне нужно доработать её что...
 

呼ば れたときにインジケータが削除されない理由を教えてください。

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Если некоторое имя, которое не было описано ранее, появляется в выражении и за ним следует левая круглая скобка, то оно по контексту считается именем некоторой функции. Аргументы (формальные параметры) передаются по значению, т. е. каждое выражение x1, . . . , xn вычисляется и значение передается функции. Порядок вычисления выражений и порядок...
削除済み  
MakarFX:
マウスがない...フリーランスはマウスのたわみ調整をしてくれるけど有料(

このシステムなら大丈夫という確信があれば、すぐにでも注文していたでしょう。

 
Oleg Bondarev:

偏差値が一定になることはありません。マウスで線を動かそうと思ったのですが、どうやら無理なようです。悲しい(

私はやっていません、というかサブウィンドウで検索していません。 KBでは、メインウィンドウのバーをクリックして、そのバーの情報を出力する例を並べましたので、見てみてください

ボタンで実験するためのインジケータを作りました - ボタンでインジケータの線が動くかどうか確認しました

#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);
}
インジケータが動いていることを確認するために、インジケータサブウィンドウに水平線をドロップします ...かなりクールなこと ))))
 
Igor Makanu:

マウスクリック座標が必要です。

もっと簡単な方法は、トレンドラインを正しい位置に移動させ、その後ろで

みたいなもの

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