Здравствуйте, гость ( Вход | Регистрация )
| NoName |
25.4.2007, 17:02
Сообщение
#1
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) |
NeuroShell2
http://www.tradersforum.net.ru/modules/fil...file.php?lid=31 (возможно, понадобиться зарегистрироваться) там же есть русский help к ней. В этой программе заложено множество архитектур нейронных сетей. Принцип работы совершенно другой, нежели в NS DT4. Для этой программы нужно подготовить файл с данными для тренировки сети и выходами, затем выделяются тестовый и экзаменационный наборы, выбирается архитектура и параметры сети, и осуществляется тренировка. Дальше можно получить исходник сети на С++ или в виде *.def файла (это будут самодостаточные нейронные сети). Лично я делал *.def файл, а за тем использовал его в советнике. Таким образом решается проблема интрадея. Не уверен, но вроде бы есть возможность совмесного использования NS2 и NS DT4. |
![]() ![]() |
| NoName |
29.4.2007, 16:09
Сообщение
#2
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) |
Вот нашёл у себя советник klot'а! Тут достаточно вставить свою начинку в нужные места. К сожалению самой сети я не нашёл.
Код #import "NS2-32.dll" int OpenNet(string defpath, int& netnumber[1], int& n_input[1], int& n_out[1]); int FireNet(int& netnumber[1], double& inarray[], double& outarray[]); int CloseNet(int& netnumber[1]); #import // StopLoss level extern double sl = 85; extern double tp = 252; extern double Lots = 1; extern int MAGICEXP = 888; //--- static int prevtime = 0; //---- int ret_O,ret_F; int M=64; string defpath="E:\Program Files\NeuroShell2\NewFolder\MACD\macd1.def"; int netnumber[1], N_in[1], N_out[1]; double inarray[],outarray[],aa[64]; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- ret_O=OpenNet(defpath, netnumber, N_in, N_out); Print("netnumber[1]= ",netnumber[0], " N_in[1]= ",N_in[0], " N_out[1]= ",N_out[0]); ArrayResize(inarray,N_in[0]); ArrayResize(outarray,N_out[0]); //---- return(0); } //-------------------------------------------------------------------+ void innet() { int shift=0; inarray[0]=High[shift+4]-High[shift+3]; inarray[1]=Low[shift+4]-Low[shift+3]; inarray[2]=Close[shift+4]-Close[shift+3]; inarray[3]=High[shift+3]-High[shift+2]; inarray[4]=Low[shift+3]-Low[shift+2]; inarray[5]=Close[shift+3]-Close[shift+2]; inarray[6]=High[shift+2]-High[shift+1]; inarray[7]=Low[shift+2]-Low[shift+1]; inarray[8]=Close[shift+2]-Close[shift+1]; inarray[9]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift+1); inarray[10]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift+2); inarray[11]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift+1); inarray[12]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift+2); inarray[13]=iOsMA(NULL,0,12,26,9,PRICE_CLOSE,shift+1); inarray[14]=iOsMA(NULL,0,12,26,9,PRICE_CLOSE,shift+2); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(Time[0] == prevtime) return(0); prevtime = Time[0]; //--- int poz=Check_for_open_pos(); innet(); ret_F=FireNet(netnumber, inarray, outarray); double sum=outarray[0]+outarray[1]+outarray[2]; Comment (outarray[0], " ", outarray[1], " ", outarray[2]); outarray[0]=outarray[0]/sum; outarray[1]=outarray[1]/sum; outarray[2]=outarray[2]/sum; Comment("ret_F= ",ret_F, " outarray[0]= ",DoubleToStr(outarray[0],8), " outarray[1]= ",DoubleToStr(outarray[1],8)," outarray[2]= ", DoubleToStr(outarray[2],8)); if( outarray[0]>outarray[2] && outarray[0]>outarray[1] && poz!=1) { buy_open( Bid-sl*Point,Bid+tp*Point); close_order(-1); } if( outarray[2]>outarray[0] && outarray[2]>outarray[1] && poz!=-1) { sell_open( Ask+sl*Point,Ask-tp*Point); close_order(1); } if( outarray[1]>outarray[2] && outarray[1]>outarray[0] && poz==1 ) close_order(1); if( outarray[1]>outarray[2] && outarray[1]>outarray[0] && poz==-1 ) close_order(-1); //--- exit return(0); } //===================================================================+ // Торговые функции | //===================================================================+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void buy_open(double SL, double TP) { int ticket, lasterror; RefreshRates(); ticket = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits),5, SL,TP,0,MAGICEXP,0,Aqua); if(ticket > 0) { if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ", OrderOpenPrice()); //--- } else Print("Error opening BUY order : ", ErrorDescription(GetLastError())); return; } //===================================================================+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void sell_open(double SL, double TP) { int ticket, lasterror; RefreshRates(); ticket = OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits),5, SL,TP,0,MAGICEXP,0,Red); if(ticket > 0) { if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("Sell order opened : ", OrderOpenPrice()); //--- } else Print("Error opening Sell order : ", ErrorDescription(GetLastError())); return; } //===================================================================+ //+------------------------------------------------------------------+ //| Закрытие ордеров n=1 - закрыть Buy, n=-1 - закрыть Sell | //+------------------------------------------------------------------+ void close_order(int n = 0) { int nGetLastError; int nOrdersTotal =OrdersTotal(); int i; //---- if(nOrdersTotal>0) { for( i=nOrdersTotal-1; i>=0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); //nGetLastError = GetLastError(); //---- if(nGetLastError != 0) { Print("1_Error selecting order : ", ErrorDescription(nGetLastError)," i= ", i," OrdersTotal()= ",OrdersTotal()); continue; } //---- if(OrderMagicNumber() != MAGICEXP || OrderSymbol() != Symbol()) continue; //---- check order type if(OrderType() == OP_BUY && n == 1) { //---- RefreshRates(); OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits), 3, Aqua); nGetLastError = GetLastError(); if(nGetLastError != 0) Print("2_Error closing BUY order : ", ErrorDescription(nGetLastError)); } //---- if(OrderType() == OP_SELL && n==-1 ) { //---- RefreshRates(); OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits), 3, Yellow); nGetLastError = GetLastError(); if(nGetLastError != 0) Print("3_Error closing SELL order : ", ErrorDescription(nGetLastError)); } } } return; } //===================================================================+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int Check_for_open_pos() { int ticket,cnt,pos; int nGetLastError; //--- pos=0; if (OrdersTotal()>0) { for(cnt=OrdersTotal()-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); //nGetLastError = GetLastError(); //---- if(nGetLastError != 0) { Print("5_Check_for_open_pos : ", ErrorDescription(nGetLastError)," i= ", cnt," OrdersTotal()= ",OrdersTotal()); continue; } //--- if(OrderMagicNumber()!=MAGICEXP || OrderSymbol()!=Symbol() || OrderCloseTime()!=0 ) continue; //--- if(OrderType()==OP_SELL ) pos=-1; //--- if(OrderType()==OP_BUY ) pos=1; } } return(pos); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //--- CloseNet(netnumber); // close the network //---- return(0); } P.S. Если ты планируешь и дальше копать по этой теме, то предлагаю открыть отдельную ветку по Нейрошелу2. Мне эта программа тоже интересна. |
NoName Neuroshell2 25.4.2007, 17:02
helena пример прогноза индикатора на основе предикшена 25.4.2007, 17:20
Mick Jagger
NeuroShell2
http://www.tradersforum.net.ru/modul... 25.4.2007, 18:48
NoName Значит умерла ссылка, жаль.
Знаю что точно есть н... 25.4.2007, 18:52
Mick Jagger Вот нашёл ссылку NeuroShell2 : http://a.myneuro.ne... 25.4.2007, 19:26
Mick Jagger
NeuroShell2
http://www.tradersforum.net.ru/modul... 29.4.2007, 13:49
NoName Привет!
Да, в MQL нет адресной арифметики, но ... 29.4.2007, 15:29
Mick Jagger
Вот нашёл у себя советник klot'а! Тут дос... 29.4.2007, 20:40
NoName Что-то не понял, где это русский интерфейс ??? У... 29.4.2007, 21:36
Mick Jagger
Что-то не понял, где это русский интерфейс ??? ... 29.4.2007, 22:21
NoName В этой теме предлагаю обсуждать работу с программо... 30.4.2007, 8:58
Mick Jagger Андрей, у тебя были какие-либо удачные решения с и... 30.4.2007, 10:34
NoName Увы, нет.
На выборке, которая не участвовала в ... 30.4.2007, 11:15
Mick Jagger У тебя когда наступит время разобрать с NS2?:)
Пре... 1.5.2007, 11:39
NoName
В скором времени я пропаду и появлюсь аж в конце... 1.5.2007, 12:29
Mick Jagger
Ну как будешь готов пропась сообщи пожалуйста.
... 1.5.2007, 15:56
NoName Ну я не совсем точно выразился, пропадать совсем я... 1.5.2007, 16:23
Mick Jagger Ну про приличные рузультаты я может это сильно ска... 5.5.2007, 10:35![]() ![]() |
|
Текстовая версия | Сейчас: 18.3.2026, 14:13 |