MetaTrader 5 herunterladen

CDifferencTwoSigmoidalMembershipFunction

Klasse für die Implementierung der Zugehörigkeitsfunktion als Differenz zwischen zwei Sigmoidfunktionen mit den Parametern А1, А2, С1 und С2.

Beschreibung

Die Funktion basiert auf einer Sigmoidkurve. Mit der Funktion kann man Zugehörigkeitsfunktionen mit den Werten erstellen, die gleich 1 sind, beginnend mit einem bestimmten Wert des Arguments. Solche Funktionen passen sehr gut, wenn man linguistische Begriffe wie "Short" oder "Long" angeben muss.

fuzzy_diffsigmoidal_function

Ein Beispielcode für das Zeichnen dieser Grafik ist unten angeführt.

Deklaration

   class CDifferencTwoSigmoidalMembershipFuncion : public IMembershipFunction

Überschrift

   #include <Math\Fuzzy\membershipfunction.mqh>

Vererbungshierarchie

  CObject

      IMembershipFunction

          CDifferencTwoSigmoidalMembershipFunction

Methoden der Klasse

Methode der Klasse  

Beschreibung

A1

Liefert und setzt den Steigungskoeffizienten der ersten Zugehörigkeitsfunktion.

A2

Liefert und setzt den Steigungskoeffizienten der zweiten Zugehörigkeitsfunktion.

С1

Liefert und setzt den Parameter des Wendepunktes der ersten Zugehörigkeitsfunktion.

С2

Liefert und setzt den Parameter des Wendepunktes der zweiten Zugehörigkeitsfunktion.

GetValue

Berechnet den Wert der Funktion nach dem angegebenen Argument.

Methoden geerbt von der Klasse CObject

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

Beispiel

//+------------------------------------------------------------------+
//|                      DifferencTwoSigmoidalMembershipFunction.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Create membership functions
CDifferencTwoSigmoidalMembershipFunction func1(5,1,8,7);
CDifferencTwoSigmoidalMembershipFunction func2(5,4,5,7);
CDifferencTwoSigmoidalMembershipFunction func3(5,6,2,7);
//--- Create wrappers for membership functions
double DifferencTwoSigmoidalMembershipFunction1(double x) { return(func1.GetValue(x)); }
double DifferencTwoSigmoidalMembershipFunction2(double x) { return(func2.GetValue(x)); }
double DifferencTwoSigmoidalMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- create graphic
   CGraphic graphic;
   if(!graphic.Create(0,"DifferencTwoSigmoidalMembershipFunction",0,30,30,780,380))
     {
      graphic.Attach(0,"DifferencTwoSigmoidalMembershipFunction");
     }
   graphic.HistoryNameWidth(70);
   graphic.BackgroundMain("DifferencTwoSigmoidalMembershipFunction");
   graphic.BackgroundMainSize(16);
//--- create curve
   graphic.CurveAdd(DifferencTwoSigmoidalMembershipFunction1,0.0,10.0,0.1,CURVE_LINES,"[5, 1, 8, 7]");
   graphic.CurveAdd(DifferencTwoSigmoidalMembershipFunction2,0.0,10.0,0.1,CURVE_LINES,"[5, 4, 5, 7]");
   graphic.CurveAdd(DifferencTwoSigmoidalMembershipFunction3,0.0,10.0,0.1,CURVE_LINES,"[5, 6, 2, 7]");
//--- 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();
  }