MetaTrader 5 herunterladen

CProductTwoSigmoidalMembershipFunction

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

Beschreibung

Das Produkt zweier Sigmoidfunktion wird für die Setzung glatter asymmetrischer Funktionen verwendet.  Mit dem Produkt 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_prodsigmoidal_function

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

Deklaration

   class CProductTwoSigmoidalMembershipFuncion : public IMembershipFunction

Überschrift

   #include <Math\Fuzzy\membershipfunction.mqh>

Vererbungshierarchie

  CObject

      IMembershipFunction

          CProductTwoSigmoidalMembershipFunctions

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.

C1

Gibt den Parameter der Koordinate des Wendepunktes der ersten Zugehörigkeitsfunktion zurück.

C2

Gibt den Parameter der Koordinate des Wendepunktes der zweiten Zugehörigkeitsfunktion zurück.

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

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