Здравствуйте, гость ( Вход | Регистрация )

> Neuroshell2
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
NoName   Вот нашёл у себя советник klot'а! Тут дост...   29.4.2007, 16:09
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