//Test_dlnn.mq4 #include <dlnn.mqh> #define LayerCount 3 //êîëè÷åñòâî ñëî¸â (âêëþ÷àÿ âõîäíîé è âûõîäíîé ñëîè) #define InputCount 2 //êîëè÷åñòâî íåéðîíîâ âî âõîäíîì ñëîå #define OutputCount 1 //êîëè÷åñòâî íåéðîíîâ â âûõîäíîì ñëîå #define PatternCount 4 //êîëè÷åñòâî ïðèìåðîâ // Ñåòü äîëæíà íàó÷èòüñÿ âû÷èñëÿòü çíà÷åíèå // ôóíêöèè XOR // ----------------------------------- // âõîä 1 | âõîä 2 | âûõîä // ----------------------------------- // 1 1 0 // 1 0 1 // 0 1 1 // 0 0 0 // ----------------------------------- //Ìàññèâ âõîäíûõ äàííûõ double InMatrix[PatternCount][InputCount]={1, 1, 1, 0, 0, 1, 0, 0}; //Ìàññèâ âûõîäíûõ äàííûõ double OutMatrix[PatternCount] = {0, 1, 1, 0}; //Êîëè÷åñòâî íåéðîíîâ â êàæäîì èç ñëî¸â int LayersStruct[LayerCount] = {InputCount, 2, OutputCount}; int start() { //---- int r, nn, e, l, ns; string sn1="\n", sn="\n"; string sf="net_for_example"; double q; double Alpha = 1; double Moment = 0.9; double StartSpeed = 0.5; double FinishSpeed = 0.1; int EpohCount=100000; double Kerror = 0.005; //---- nn=-1; nn=CreateNN(LayerCount, LayersStruct, Alpha, Moment, StartSpeed, FinishSpeed); if(nn<0){Comment("Îøèáêà "+nn+" ïðè ñîçäàíèè ñåòè"); return(0);} sn=sn+"Ñîçäàíà ñåòü ñ íîìåðîì "+nn+"\n"; r=TrainNN(nn, PatternCount, InMatrix, OutMatrix, EpohCount, Kerror); if(r<0){Comment(sn,"Îøèáêà "+r+" ïðè îáó÷åíèè ñåòè"); return(0);} sn=sn+"Ñåòü îáó÷åíà (ýïîõ="+GetEpohNN(nn)+"; îøèáêà="+DoubleToStr(GetErrorNN(nn),3)+")\nÐåçóëüòàò: "; double OutputM[1]; double InputM[InputCount]; InputM[0] = 1; InputM[1] = 1;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM);//Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn=sn+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2); InputM[0] = 0; InputM[1] = 1;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM);//Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn=sn+" // "+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2); InputM[0] = 1; InputM[1] = 0;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM);//Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn=sn+" // "+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2); InputM[0] = 0; InputM[1] = 0;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM);//Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn=sn+" // "+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2)+"\n"; //---- r=SaveNN(nn,sf); if(r<0) {Comment(sn,"Îøèáêà "+r+" ïðè ñîõðàíåíèè ñåòè"); return(0);} sn=sn+"Ñåòü ñîõðàíåíà â ôàéë "+sf+"\n"; r=DestroyNN(nn); if(r<0) {Comment(sn,"Îøèáêà "+r+" ïðè óíè÷òîæåíèè ñåòè"); return(0);} sn=sn+"Ñåòü óäàëåíà\n"; //---- nn=LoadNN(sf); if(nn<0) {Comment(sn,"Îøèáêà "+nn+" ïðè çàãðóçêå ñåòè èç ôàéëà"); return(0);} sn1=sn1+"Ñåòü çàãðóæåíà èç ôàéëà "+sf+". Íîìåð ñåòè "+nn+"\n"; l=GetLayersNN(nn); sn1=sn1+"Ïàðàìåòðû ñåòè: Ñëîåâ= "+l+"; Íåéðîíîâ ïî ñëîÿì="; for(int i=0; i<l; i++) sn1=sn1+" "+GetNeuronsNN(nn,i); sn1=sn1+"\nÐåçóëüòàò: "; InputM[0] = 1; InputM[1] = 1;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM);//Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn1=sn1+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2); InputM[0] = 0; InputM[1] = 1;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM); //Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn1=sn1+" // "+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2); InputM[0] = 1; InputM[1] = 0;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM); //Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn1=sn1+" // "+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2); InputM[0] = 0; InputM[1] = 0;// âõîäíûå äàííûå RunNN(nn, InputM, OutputM);//Ðàññ÷¸ò //Âûâîä ðåçóëüòàòà sn1=sn1+" // "+DoubleToStr(InputM[0],0)+" "+DoubleToStr(InputM[1],0)+" = "+DoubleToStr(OutputM[0],2)+"\n"; //---- r=DestroyNN(nn); Comment(sn, sn1, "\nFinish..."); return(0); }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: