"Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5. - страница 32

 
Urain:
Ты немного недопонял
Это ты недопонял :)
 
TheXpert:
Это ты недопонял :)
Продолжай, растолкуй. с учётом ЗЫ
 
<?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:

Сохранение в XML это хорошо. А есть XML парсер для MQL5?

Дллки то нельзя.

 
TheXpert:

Сохранение в XML это хорошо. А есть XML парсер для MQL5?

Дллки то нельзя.

я делал когда-то - что-то осталось

там "делов" на 2 дня 

при особой ленивости можно использовать msxml-парсер из стандартной dll, но это очень ресурсоемко 

P.S. 

каждая сущность должна уметь инициализировать/сохранять себя из/в XML  

 
yu-sha:

XML это дело, поддерживаю, сетку можно распарсить через XSLT в код для canvas и показывать в вебе. К примеру засунуть в движок форума MQL5. Загрузил файлик в комментарии и вся топология сети как на ладони.

Если бы была поддержка рег. выражений в MQL5, парсер написался бы за полчаса.

 
Vigor:
XML это дело, поддерживаю, сетку можно распарсить через XSLT в код для canvas и показывать в вебе. К примеру засунуть в движок форума MQL5. Загрузил файлик в комментарии и вся топология сети как на ладони.

пришел к такой организации не сразу - намучился основательно

потому и рекомендую 

имея xml, можно всякие визуальные редакторы использовать, можно свои визуализаторы/конфигураторы писать 

 
Vigor:
XML это дело, поддерживаю, ......

+10000.

Еще бы разработчики максимально облегчили работу с ними, сделав максимально удобный функционал без использования дополнительных DLL и Win API (верней все это скрыли в недрах языка, а нам ставили максимально чистый MQL).

 
yu-sha:

каждая сущность должна уметь инициализировать/сохранять себя из/в XML  

Лучше таки наверное через фабрику
Причина обращения: