初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1236

 
Vladimir Karputov:

在调试中,通过并检查在哪些情况下你的条件会成立?


Rate_total - prev_calculates 是非常有效的。

  • 如果它等于零--这意味着计算将在当前条形图上按一个刻度进行。
  • 如果它等于1 - 这意味着有一个新的条形图 和两个条形图将被计算 - 前一个和当前一个。
  • 如果它大于1,意味着第一次运行或历史数据的变化
我们计算出极限。而在从极限到大于或等于零的循环中,我们计算出指标数据。而你自己在计算limit = rates_total - prev_calculates时,计算出limit等于什么。
 
Artyom Trishkin:

rates_total - prev_calculates 是一个非常有效的结构。

  • 如果它等于零,这意味着计算是在当前条形图上进行的,由tick
  • 如果等于1--意味着有一个新的条形图,将计算两个条形图--前一个和当前一个。
  • 如果它大于1,意味着第一次运行或历史数据的变化
我们计算出极限。而在从极限到大于或等于零的循环中,我们计算出指标数据。而你自己在计算limit = rates_total - prev_calculates时,计算出什么是极限。

看一下代码。

然后提出你的意见。

 
Vladimir Karputov:

看一下代码。

然后进行评论。

为什么如此无礼?我并不粗鲁。

我回答的是,你引用的这句话和它的条件何时能成立。

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2020.08.06 13:03

在调试中,通过检查,在哪些情况下你的条件会被满足?


我甚至对三种可能的情况以及在这种情况下的做法做了一个回答。

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Artyom Trishkin, 2020.08.06 15:17

rates_total - prev_calculates 是一种非常有效的算法。

  • 如果它等于零,它意味着在当前条形图上按刻度计算。
  • 如果它等于1,这意味着有一个新的条形图,将计算两个条形图--前一个和当前一个。
  • 如果它大于1,意味着第一次运行或历史数据的变化
我们计算出极限。而在从极限到大于或等于零的循环中,我们计算出指标数据。并计算出极限是什么,当计算极限= rates_total - prev_calculates。

你不需要做任何处理--这个非常的计算将从三个状态中的每个状态的所需值开始循环。

 
Artyom Trishkin:

为什么要粗鲁呢?我并不粗鲁。

我回答了你引用的这句话及其条件在哪些情况下会得到满足。

而且我甚至用三种可能的状态完成了回答,以及在这种情况下的做法。

你不需要自己做任何处理--这个精确的计算将从三个状态中的每个状态的期望值开始循环。

拿着代码,通过调试。接下来,你可以自己做--但现在要走到最后,至少要解释三个错误。

 
Vladimir Karputov:

拿着代码,通过调试。剩下的就自己做吧--但现在要坚持下去,至少要解释三个错误。

不,我没有时间。我只回答了你引用的那一行--那里没有错误。从这里开始(我从眼角瞥了一眼代码),让他自己试着弄清楚(有错误,而且是在表面)。

在论坛及其服务中,有很多这种构造的例子。

维克多-尼古拉耶夫总是使用它(如果他不偷懒的话,现在仍然使用),他在很久以前教过我。

Victor Nikolaev
Victor Nikolaev
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin:

不,我没有时间。我只回答了你引用的那句话--其中没有错误。再进一步(我用眼角的余光瞥了一眼代码),让他自己试着弄清楚(有错误,而且是在表面上)。

在论坛及其服务中,有很多这种构造的例子。

维克多-尼古拉耶夫一直在使用它(如果他不偷懒的话,现在还在使用),而且很早以前就教过我。

你最好不要用手机看论坛,而是用电脑看。并阅读所有的帖子,而不是最喜欢的。如果你不想帮忙,就根本不要加入对话。

 
Сергей Таболин:


这里有一个例子:基于DRAW_COLOR_CANDLES,如果蜡烛的尺寸小于设定值--蜡烛就不会被绘制。

注意:这是一个重新设计的指标--它最初是按高点和低点画出蜡烛图。而且,还没有出现过滴答声--只是一个与DRAW_COLOR_CANDLES合作的例子,如果蜡烛的尺寸小于设定--蜡烛就不会被绘制。

//+------------------------------------------------------------------+
//|                                             High Low Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   1
//--- plot HLC_
#property indicator_label1  "High Low Candles"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrLimeGreen,clrLavender
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input uint     InpMinSize     = 150;            // Candles: min size
//--- indicator buffers
double   OpenBuffer[];  // open
double   HighBuffer[];  // high
double   LowBuffer[];   // low
double   CloseBuffer[]; // close
double   Colors[];
//---
double   m_min_size           = 0.0;            // Candles: min size          -> double
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,HighBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,LowBuffer,INDICATOR_DATA);
   SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,Colors,INDICATOR_COLOR_INDEX);
//--- an empty value
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//--- set the display of the symbol
   string symbol=Symbol();
   PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");
   IndicatorSetString(INDICATOR_SHORTNAME,"HLC ("+symbol+")");
//---
   m_min_size=InpMinSize*Point();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 limit=prev_calculated-1;
   if(prev_calculated==0)
      limit=0;
   for(int i=limit; i<rates_total; i++)
     {
      HighBuffer[i]=high[i];
      LowBuffer[i]=low[i];
      if(open[i]<close[i])
        {
         if(close[i]-open[i]>m_min_size)
           {
            OpenBuffer[i]=low[i];
            CloseBuffer[i]=high[i];
            Colors[i]=1.0;
           }
         else
           {
            OpenBuffer[i]=0.0;
            HighBuffer[i]=0.0;
            LowBuffer[i]=0.0;
            CloseBuffer[i]=0.0;
            Colors[i]=0.0;
           }
        }
      else
        {
         if(open[i]-close[i]>m_min_size)
           {
            OpenBuffer[i]=high[i];
            CloseBuffer[i]=low[i];
            Colors[i]=0.0;
           }
         else
           {
            OpenBuffer[i]=0.0;
            HighBuffer[i]=0.0;
            LowBuffer[i]=0.0;
            CloseBuffer[i]=0.0;
            Colors[i]=0.0;
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


结果。


附加的文件:
 
Vladimir Karputov:

你应该从你的电脑而不是手机上阅读这个论坛。并阅读所有的帖子,而不是最喜欢的。如果你不想帮忙,就根本不要加入对话。

你病了吗?:)


 

伙计们,阿尔乔姆和弗拉基米尔,不要争吵,真的没有什么可争吵的......)))

现在说说错误。我开始写这个指标,只是为了将我在这篇文章 中读到的内容可视化。而我是在一个月前被送进浴场后开始写的。我的意思是,我有时间去寻找自己的错误。我找不到他们,所以我才来这里寻求帮助。

我要求你告诉我哪里错了(在代码中)。为什么呢?

我不能使用调试器。我不知道如何。没有变量被添加到 "可观看 "中(我很久之前在论坛上写过这个问题...)。

只要告诉我搭车的地方?

Дискретизация ценового ряда, случайная составляющая и "шумы"
Дискретизация ценового ряда, случайная составляющая и "шумы"
  • www.mql5.com
Классический способ представления ценовых движений в виде временных отрезков возник на заре становления финансовых рынков, когда еще не было компьютеров и вся торговля шла на реальных рынках, реальными товарами. Хранить каждое изменение цены в течении дня было трудно, да и не имело смысла, цены менялись не так быстро. Поэтому представлялось...
 
Сергей Таболин:

只要告诉我搭车的地方?

困难在于代码的组织。我试着看了一下,但它的写法让我的大脑无法理解。我不知道如何解释什么是错的。

我只能建议你从头开始,按部就班。

  1. 开始时,把每一个N个蜡烛都挑出来。
  2. 然后设置一个条件来选择突出哪个蜡烛。
最后学习如何使用调试器。