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

 
User_mt5:


一般来说,有一个概念叫做 "梯度"。它是一个描述(图形)"陡峭度 "的指标。对于这个行业,这个指标可以用点/时间 来表示。它本质上是一种比率。这个指标将不取决于规模,因为它没有附在图表上。使用梯度,不要使用角度。


你是如何计算这个梯度的?

你有没有办法详细说明你的想法?请注意我在哪个论坛上写了我的问题。

 
igorbel:

你是如何计算这个梯度的?

你有没有办法详细说明你的想法?请注意我在哪个论坛上写了我的问题。

我没有什么想法。

我说的是简单的数学。梯度就是速度。速度本身就是当时间在分母中。在熟悉的用法中,它是指汽车的速度,以公里/小时表示。但一般来说,速度可以是不同的。例如,编写软件 代码的速度是以每天的行数来衡量的。在价格图表的情况下,速度是以每分钟的点数来衡量的。按照惯例,我们可以认为,如果图表的某个部分的梯度(斜率,上升率)高于,例如,100点/分钟,那么这部分可以被认为是一个趋势,如果低于,则是一个平坦的。

 

你好 2017.07.07_15:55 GMT+3.我不明白。似乎应该有一个信号,但在策略测试器中 却没有。那么你所称赞的MT5测试器与MT4测试器有什么不同?我几乎是像在标准移动平均线.mq5中那样写的。但我成功地在我的模拟账户上测试了专家顾问。它打开了一个交易,但不得不自己关闭它。我修复了关闭。但我写了些别的东西,EA又停止了开仓交易。零错误和零警告并不代表专家顾问的良好状况。我被困在这里了。我怎么知道它说的是专家顾问不工作?我必须再次打扰卡尔普托夫。如果我收到了全部的禁令清单,我就会自己动手了。我正在张贴这些文件,虽然不是全部的。16:06 GMT+3。

附加的文件:
 

请帮助我们!

要在MQL4中获得指标值,只需使用以下函数即可

double CMAf(int index)
  {
   return NormalizeDouble(iMA(Symbol(),0,period_CMA,0,0,0,index),Digits);
  }
如何获得MQL5的模拟物?
 
-Aleks-:

请帮助我们!

要在MQL4中获得一个指标的名称,一个简单的函数就可以了

如何获得MQL5的模拟物?

你看了iMA 的帮助吗?

第一步:在 "头 "中,声明一个变量,用于存储iMA指标手柄。

第二步:在OnInit()中创建指标句柄。

//+------------------------------------------------------------------+
//|                                                       iMAGet.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input int                  ma_period=10;                 // period of ma 
input int                  ma_shift=0;                   // shift 
input ENUM_MA_METHOD       ma_method=MODE_SMA;           // type of smoothing 
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;    // type of price 
input ENUM_TIMEFRAMES      period=PERIOD_CURRENT;        // timeframe 
//---
int                        handle_iMA;                   // variable for storing the handle of the iMA indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iMA
   handle_iMA=iMA(Symbol(),period,ma_period,ma_shift,ma_method,applied_price);
//--- if the handle is not created 
   if(handle_iMA==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double ma_0=iMAGet(0);
   double ma_1=iMAGet(1);

   Comment("MA #0: ",DoubleToString(ma_0,Digits()+1),"\n",
           "MA #1: ",DoubleToString(ma_1,Digits()+1));
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iMA                                 |
//+------------------------------------------------------------------+
double iMAGet(const int index)
  {
   double MA[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iMA,0,index,1,MA)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(MA[0]);
  }
//+------------------------------------------------------------------+


而结果是(截图上的十字准线被设置在1号栏)。

淘宝网

附加的文件:
iMAGet.mq5  7 kb
 
Vladimir Karputov:

你看过iMA 的帮助吗?

第一步:在 "头 "中声明一个变量,以存储iMA指标手柄。

第二步:在OnInit()中创建指标句柄。

而结果是(截图中的十字准线被设置为1号栏)。

谢谢你的答复。

在MQL4中,一切都在一个函数中声明 - 所以有一组函数,根据EA的设置被激活。如果我没有弄错的话,在你的情况下,内存将被分配给TS允许使用的几十个不同的指标,这是不合理的,还是内存不会被分配?

 

是否有可能在没有该类的具体对象的情况下调用该类函数?因此,它将是这样的。

class test
  {
public:
                     test(void);
                    ~test(void);
  public: void PrintInfo (){Print ("Class test");}
  };
//---
void OnStart()
  {
      test.PrintInfo() ;
  }

还是有必要创建一个对象?即使这个函数指的是类本身的定义,而不是它的一个实例。

 

如果该函数不需要访问 类的变量,就把它变成静态的。

class test
{
public:
   test();
   ~test();

   static void PrintInfo()
   {
      Print( "Class test" );
   }
};

void OnStart()
{
   test::PrintInfo();
}
 
Koldun Zloy:

如果该函数不需要访问 类的变量,就把它变成静态的。

谢谢你,这正是我们需要的。
 

出现错误--什么是错的?在MQL4中,它是有效的...


   double arrFibo[17]=
     {
      0,
      0.236,
      0.382,
      0.5,
      0.618,
      0.764,
      1,
      1.236,
      1.382,
      1.5,
      1.618,
      2.0,
      2.236,
      2.382,
      2.5,
      2.618,
      2.764,
      3        //Всего уровней 17 + 0
     };
'{' - 太多的初始化器 TZ_Sky_and_Ground_V_04.mq5 2484 6