"New Neural" est un projet de moteur de réseau neuronal Open Source pour la plateforme MetaTrader 5. - page 32

 
Urain:
Vous vous méprenez un peu.
C'est vous qui êtes incompris :)
 
LeXpert:
C'est vous qui avez mal compris :)
Vas-y, explique-moi.
 
<?xml version="1.0"?>
<NET>

  <!-- Слой входных нейронов --> 

  <LAYER CLASS="INDICATOR" NAME="IND">
    <NEURON NAME="NEURON:01.IND"> 
      <INDICATOR> IN\MAD</INDICATOR> 
      <SYMBOL> EURUSD</SYMBOL> 
      <TIMEFRAME> M15</TIMEFRAME> 
      <BUFFER> 0</BUFFER> 
      <OFFSET> 1</OFFSET> 
      <PARAM NAME="BAR_COMPLETE" TYPE="INT"> 2</PARAM> 
      <PARAM NAME="FAST_PERIOD" TYPE="INT"> 12</PARAM> 
      <PARAM NAME="SLOW_PERIOD" TYPE="INT"> 26</PARAM> 
      <PARAM NAME="APPLIED_PRICE" TYPE="APPLIED_PRICE"> PRICE_CLOSE</PARAM> 
    </NEURON> 
    <NEURON NAME="NEURON:02.IND"> 
      <INDICATOR> IN\RSI</INDICATOR> 
      <SYMBOL> EURUSD</SYMBOL> 
      <TIMEFRAME> M15</TIMEFRAME> 
      <BUFFER> 0</BUFFER> 
      <OFFSET> 1</OFFSET> 
      <PARAM NAME="PERIOD" TYPE="INT"> 3</PARAM> 
      <PARAM NAME="APPLIED_PRICE" TYPE="APPLIED_PRICE"> PRICE_CLOSE</PARAM> 
    </NEURON> 
    <NEURON NAME="NEURON:03.IND"> 
      <INDICATOR> IN\MAD</INDICATOR> 
      <SYMBOL> EURUSD</SYMBOL> 
      <TIMEFRAME> M15</TIMEFRAME> 
      <BUFFER> 0</BUFFER> 
      <OFFSET> 1</OFFSET> 
      <PARAM NAME="BAR_COMPLETE" TYPE="INT"> 2</PARAM> 
      <PARAM NAME="FAST_PERIOD" TYPE="INT"> 54</PARAM> 
      <PARAM NAME="SLOW_PERIOD" TYPE="INT"> 100</PARAM> 
      <PARAM NAME="APPLIED_PRICE" TYPE="APPLIED_PRICE"> PRICE_CLOSE</PARAM> 
    </NEURON> 
  </LAYER>

  <!-- Слой #1 нейронов на гип.тангенсе --> 

  <LAYER CLASS="TANH" NAME="HID:0"> 
    <NEURON NAME="NEURON:01.HID:0" BIAS="-0.552589"> 
      <LINK WEIGHT="0.816961" TO="NEURON:01.IND"/> 
      <LINK WEIGHT="0.653045" TO="NEURON:02.IND"/> 
      <LINK WEIGHT="0.619305" TO="NEURON:03.IND"/> 
    </NEURON> 
    <NEURON NAME="NEURON:02.HID:0" BIAS="-0.443185"> 
      <LINK WEIGHT="0.478712" TO="NEURON:01.IND"/> 
      <LINK WEIGHT="0.147732" TO="NEURON:02.IND"/> 
      <LINK WEIGHT="-0.207846" TO="NEURON:03.IND"/> 
    </NEURON> 
  </LAYER> 

  <!-- Слой #2 нейронов на гип.тангенсе --> 

  <LAYER CLASS="TANH" NAME="HID:1"> 
    <NEURON NAME="NEURON:01.HID:1" BIAS="0.390295"> 
      <LINK WEIGHT="-0.683868" TO="NEURON:01.HID:0"/> 
      <LINK WEIGHT="-0.91081" TO="NEURON:02.HID:0"/> 
    </NEURON> 
    <NEURON NAME="NEURON:02.HID:1" BIAS="0.0347438"> 
      <LINK WEIGHT="-0.00688827" TO="NEURON:01.HID:0"/> 
      <LINK WEIGHT="-0.262435" TO="NEURON:02.HID:0"/> 
    </NEURON>
  </LAYER> 

  <!-- Выходной слой нейронов на гип.тангенсе --> 
  <LAYER CLASS="TANH" NAME="OUT"> 
    <NEURON NAME="EURUSD:LOT.OUT" BIAS="0.586392"> 
      <LINK WEIGHT="-0.812841" TO="NEURON:01.HID:1"/> 
      <LINK WEIGHT="0.0548534" TO="NEURON:02.HID:1"/> 
    </NEURON> 
  </LAYER> 

</NET>

//-----------------------------------------------------------------------------
//                                  CNeuron                                   !
//-----------------------------------------------------------------------------

class CNeuron {

public:
  
  // Constructor procedures 
  
  void          CNeuron ();
  virtual void ~CNeuron ();
  
  virtual bool Init (CXmlElement *aXmlElement, CNet *aNet);
  virtual void Upload ();
  
  // Main procedures 

  virtual bool Run ();
  virtual float GetValue ();
  
};


CNeuron* CreateNeuron(string aClass) {

  CNeuron *n=NULL;
  
  if (aClass=="")           n = new CNeuron;           else
  if (aClass=="BIAS")       n = new CNeuronBias;       else
  if (aClass=="INDICATOR")  n = new CNeuronIndicator;  else 
  if (aClass=="EXTERN")     n = new CNeuronService;    else 
  if (aClass=="MSE")        n = new CNeuronMSE;        else
  if (aClass=="PROFIT")     n = new CNeuronProfit;     else
  if (aClass=="LINEAR")     n = new CNeuronLinear;     else
  if (aClass=="SIGMOID")    n = new CNeuronSigmoid;    else
  if (aClass=="TANH")       n = new CNeuronTanh;       else
  if (aClass=="SIN")        n = new CNeuronSin;        else
  if (aClass=="COS")        n = new CNeuronCos;        else
  if (aClass=="DISTANCE")   n = new CNeuronDistance;   else
  if (aClass=="WINNER")     n = new CNeuronWinner; 

  return(n);
};
 
yu-sha:

La sauvegarde en XML est bonne. Existe-t-il un analyseur XML pour MQL5 ?

Tu ne peux pas faire le dllki.

 
LeXpert:

La sauvegarde en XML est bonne. Existe-t-il un analyseur XML pour MQL5 ?

Vous ne pouvez pas faire ça avec les dlls.

Je l'ai fait une fois - il y a des restes.

ça prendra 2 jours.

vous pouvez utiliser le parseur msxml de la dll standard, mais il est très gourmand en ressources.

P.S.

chaque entité doit pouvoir s'initialiser/se sauvegarder à partir de/vers XML

 
yu-sha:

XML est une bonne idée, je la soutiens. Vous pouvez analyser la grille à travers XSLT en code canvas et l'afficher sur le web. Par exemple, branchez-le sur le moteur de forum MQL5. Il suffit de télécharger le fichier vers les commentaires et toute la topologie de la grille est à portée de main.

Si MQL5 avait un support pour les expressions reg, le parseur serait écrit en une demi-heure.

 
Vigueur:
XML est une bonne idée, je la soutiens. Vous pouvez analyser la grille via XSLT pour obtenir du code canvas et l'afficher sur le web. Par exemple, dans le moteur de forum MQL5. Téléchargez le fichier vers les commentaires et toute la topologie de la grille est à portée de main.

Je ne suis pas venu à ce genre d'organisation tout de suite - c'était une douleur dans le cul.

C'est pourquoi je le recommande.

Avec le xml, vous pouvez utiliser des éditeurs visuels de toutes sortes, vous pouvez écrire vos propres visualisateurs/configurateurs.

 
Vigueur:
Le XML est une bonne chose, je le soutiens, ........

+10000.

J'aimerais que les développeurs facilitent le plus possible le travail avec eux, en le rendant aussi pratique que possible sans utiliser de DLL supplémentaire et d'API Win (ou plutôt, ils ont caché tout cela dans les profondeurs du langage, et nous ont donné le MQL le plus propre).

 
yu-sha:

Chaque entité doit pouvoir s'initialiser/se sauvegarder à partir de/vers le XML.

Il est probablement préférable d'utiliser une usine
Raison: