Descargar MetaTrader 5

CZ_ShapedMembershipFunction

Clase para la implementación de una función de pertenencia en forma de Z con los parámetros A y B.  

Descripción

La función crea una función de pertenencia en forma de Z de dos parámetros.  Se trata de una función no creciente de pertenencia que adopta valores de 1 a 0. Los parámetros de la función definen un intervalo dentro del cual la función decrece de forma no lineal de 0 a 1.

Con la ayuda de la función se pueden presentar conjuntos difusos del tipo "muy bajo". Es decir, crea funciones no crecientes de pertenencia con saturación.

fuzzy_z_function

Un ejemplo de código para construir este gráfico se muestra más abajo.

Declaración

   class CZ_ShapedMembershipFuncion : public IMembershipFunction

Encabezamiento

   #include <Math\Fuzzy\membershipfunction.mqh>

Jerarquía de herencia

  CObject

      IMembershipFunction

          CZ_ShapedMembershipFunction

Métodos de clase

Método de clase  

Descripción

A

Retorna y establece el parámetro del comienzo del intervalo de decrecimiento.

B

Retorna y establece el parámetro de la finalización del intervalo de decrecimiento.

GetValue

Calcula el valor de la función de pertenenecia según el argumento indicado.

Métodos heredados de la clase CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

Ejemplo

//+------------------------------------------------------------------+
//|                                   Z_ShapedMembershipFunction.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Create membership functions
CZ_ShapedMembershipFunction func1(2,1);
CZ_ShapedMembershipFunction func2(2,5);
CZ_ShapedMembershipFunction func3(2,9);
//--- Create wrappers for membership functions
double Z_ShapedMembershipFunction1(double x) { return(func1.GetValue(x)); }
double Z_ShapedMembershipFunction2(double x) { return(func2.GetValue(x)); }
double Z_ShapedMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- create graphic
   CGraphic graphic;
   if(!graphic.Create(0,"Z_ShapedMembershipFunction",0,30,30,780,380))
     {
      graphic.Attach(0,"Z_ShapedMembershipFunction");
     }
   graphic.HistoryNameWidth(70);
   graphic.BackgroundMain("Z_ShapedMembershipFunction");
   graphic.BackgroundMainSize(16);
//--- create curve
   graphic.CurveAdd(Z_ShapedMembershipFunction1,0.0,10.0,0.1,CURVE_LINES,"[2, 1]");
   graphic.CurveAdd(Z_ShapedMembershipFunction2,0.0,10.0,0.1,CURVE_LINES,"[2, 5]");
   graphic.CurveAdd(Z_ShapedMembershipFunction3,0.0,10.0,0.1,CURVE_LINES,"[2, 9]");
//--- sets the X-axis properties
   graphic.XAxis().AutoScale(false);
   graphic.XAxis().Min(0.0);
   graphic.XAxis().Max(10.0);
   graphic.XAxis().DefaultStep(1.0);
//--- sets the Y-axis properties
   graphic.YAxis().AutoScale(false);
   graphic.YAxis().Min(0.0);
   graphic.YAxis().Max(1.1);
   graphic.YAxis().DefaultStep(0.2);
//--- plot
   graphic.CurvePlotAll();
   graphic.Update();
  }