EA НА ОСНОВЕ B BANDS И B WIDTH, НУЖНА СРОЧНАЯ ПОМОЩЬ !!! - страница 3

 

Уважаемый angevoyager,

Я верю, что в этом мире нет ничего невозможного, если вы хотите стать президентом США, мы можем, мы должны мечтать об этом и мы должны начать пробовать, с правильным планом, снова я говорю, что я верю в "Нет ничего невозможного".

У меня нет опыта программирования, только диплом экономиста. Я изучаю MQL по крупицам, и у меня есть сертификат технического анализа от Бомбейской фондовой биржи (BSE).

Как я уже говорил, я пытался сделать ea на основе ширины с некоторыми другими индикаторами, и я не хочу следовать методу nural, но для изучения я попытался сделать ea на основе ширины в nural,

Я приложил тест за последний месяц, но проблема в том, что эта еа не собирается продавать в короткие сроки :-)

Отчет тестера стратегий
MetaQuotes-Demo (Build 794)
Настройки
Эксперт: Kundi5
Символ: EURUSD
Период: H1 (2013.04.01 - 2013.04.10)
Входы: StopLoss=30
TakeProfit=100
EA_Magic=12345
Lot=1.00000000
w0=0.50000000
w1=0.50000000
w2=0.50000000
w3=0.50000000
w4=0.50000000
w5=0.50000000
w6=0.50000000
w7=0.50000000
w8=0.50000000
w9=0.50000000
w10=0.50000000
w11=0.50000000
w12=0.50000000
w13=0.50000000
Брокер: MetaQuotes Software Corp.
Валюта: USD
Начальный депозит: 10 000.00
Кредитное плечо: 1:100
Результаты
Качество истории: 100%
Бары: 167 Тики: 39708 Символы: 1
Общая чистая прибыль: 2 283.40 Абсолютная просадка баланса: 603.50 Абсолютная просадка капитала: 674.50
Валовая прибыль: 2 997.90 Максимальное снижение баланса: 603.50 (6.04%) Максимальное снижение капитала: 1 371.80 (12.82%)
Общий убыток: -714.50 Относительная просадка баланса: 6.04% (603.50) Относительная просадка капитала: 12.82% (1 371.80)
Коэффициент прибыли: 4.20 Ожидаемая выплата: 380.57 Уровень маржи: 730.27%
Фактор восстановления: 1.66 Коэффициент Шарпа: 0.60 Z-Score: -0.46 (35.45%)
AHPR: 1.0367 (3.67%) Корреляция LR: 0.93 Результат OnTester: 0
GHPR: 1.0349 (3.49%) Стандартная ошибка LR: 606.58
Всего сделок: 6 Короткие сделки (выигранные %): 0 (0.00%) Длинные сделки (выигранные %): 6 (50.00%)
Всего сделок: 12 Прибыльные сделки (% от общего числа): 3 (50.00%) Убыточные сделки (% от общего количества): 3 (50.00%)
Самая крупная сделка с прибылью: 1 000.00 Самая крупная убыточная сделка: -303.50
Средняя прибыльная сделка: 999.30 Средняя убыточная сделка: -238.17
Максимальный выигрыш подряд ($): 3 (2 997.90) Максимальные последовательные потери ($): 2 (-603.50)
Максимальная последовательная прибыль (в пересчете): 2 997.90 (3) Максимальный последовательный убыток (кол-во): -603.50 (2)
Средний выигрыш подряд: 3 Среднее количество поражений подряд: 2
Корреляция (прибыль, MFE): 0.68 Корреляция (Прибыль, MAE): 0.72 Корреляция (MFE, MAE): 0.3043
Минимальное время удержания позиции: 1:03:40 Максимальное время удержания позиции: 82:45:40 Среднее время удержания позиции: 27:28:23
Заказы
Время открытия Ордер Символ Тип Объем Цена S / L Т / П Время Состояние Комментарий
2013.04.01 00:00 2 EURUSD купить 1.00 / 1.00 1.28140 1.27840 1.29140 2013.04.01 00:00 заполнено
2013.04.01 03:15 3 EURUSD продавать 1.00 / 1.00 1.27840 2013.04.01 03:15 заполнено сл 1.27840
2013.04.01 04:00 4 EURUSD купить 1.00 / 1.00 1.27777 1.27477 1.28777 2013.04.01 04:00 заполнено
2013.04.04 14:45 5 EURUSD продавать 1.00 / 1.00 1.27477 2013.04.04 14:45 заполнено sl 1.27477
2013.04.04 15:00 6 EURUSD купить 1.00 / 1.00 1.27734 1.27434 1.28734 2013.04.04 15:00 заполнено
2013.04.04 16:03 7 EURUSD продавать 1.00 / 1.00 1.28734 2013.04.04 16:03 заполнено tp 1.28734
2013.04.04 17:00 8 EURUSD купить 1.00 / 1.00 1.28541 1.28241 1.29541 2013.04.04 17:00 заполнено
2013.04.05 14:19 9 EURUSD продавать 1.00 / 1.00 1.29541 2013.04.05 14:19 заполнено tp 1.29541
2013.04.05 15:00 10 EURUSD купить 1.00 / 1.00 1.29901 1.29601 1.30901 2013.04.05 15:00 заполнено
2013.04.09 17:25 11 EURUSD продавать 1.00 / 1.00 1.30901 2013.04.09 17:25 заполнено tp 1.30901
2013.04.09 18:00 12 EURUSD купить 1.00 / 1.00 1.30923 1.30623 1.31923 2013.04.09 18:00 заполнено
2013.04.09 23:59 13 EURUSD продавать 1.00 / 1.00 1.30812 2013.04.09 23:59 заполнено конец теста
Сделки
Время Сделка Символ Тип Направление Объем Цена Ордер Комиссия Своп Прибыль Баланс Комментарий
2013.04.01 00:00 1 баланс 0.00 0.00 10 000.00 10 000.00
2013.04.01 00:00 2 EURUSD купить в 1.00 1.28140 2 0.00 0.00 0.00 10 000.00
2013.04.01 03:15 3 EURUSD продать аут 1.00 1.27840 3 0.00 0.00 -300.00 9 700.00 сл 1.27840
2013.04.01 04:00 4 EURUSD купить в 1.00 1.27777 4 0.00 0.00 0.00 9 700.00
2013.04.04 14:45 5 EURUSD продать аут 1.00 1.27477 5 0.00 -3.50 -300.00 9 396.50 sl 1.27477
2013.04.04 15:00 6 EURUSD купить в 1.00 1.27734 6 0.00 0.00 0.00 9 396.50
2013.04.04 16:03 7 EURUSD продать аут 1.00 1.28734 7 0.00 0.00 1 000.00 10 396.50 tp 1.28734
2013.04.04 17:00 8 EURUSD купить в 1.00 1.28541 8 0.00 0.00 0.00 10 396.50
2013.04.05 14:19 9 EURUSD продавать аут 1.00 1.29541 9 0.00 -0.70 1 000.00 11 395.80 tp 1.29541
2013.04.05 15:00 10 EURUSD купить в 1.00 1.29901 10 0.00 0.00 0.00 11 395.80
2013.04.09 17:25 11 EURUSD продавать аут 1.00 1.30901 11 0.00 -1.40 1 000.00 12 394.40 тп 1.30901
2013.04.09 18:00 12 EURUSD купить в 1.00 1.30923 12 0.00 0.00 0.00 12 394.40
2013.04.09 23:59 13 EURUSD продавать аут 1.00 1.30812 13 0.00 0.00 -111.00 12 283.40 конец теста
0.00 -5.60 2 289.00 12 283.40

 
angevoyageur :
Какое отношение нейронная сеть имеет к вашей «ширине»? Трудно идти за тобой.
Сэр, я публикую свои новые исследования, это ширина, которую я закодировал в nural network, но дело в том, что она не принимает короткие условия, можете ли вы помочь мне выяснить проблему?
 //+------------------------------------------------------------------+
//|                                                       Kundi3.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"


//--- input parameters
input int       StopLoss= 30 ;       // Stop Loss
input int       TakeProfit= 100 ;   // Take Profit
input int       EA_Magic= 12345 ;   // EA Magic Number
input double    Lot= 1.0 ;           // Lots to Trade
//--- weight values                                                                   
input double w0= 0.5 ;
input double w1= 0.5 ;
input double w2= 0.5 ;
input double w3= 0.5 ;
input double w4= 0.5 ;
input double w5= 0.5 ;
input double w6= 0.5 ;
input double w7= 0.5 ;
input double w8= 0.5 ;
input double w9= 0.5 ;
input double w10= 0.5 ;
input double w11= 0.5 ;
input double w12= 0.5 ;
input double w13= 0.5 ;

//-------------------------

int                iBands_handle;     //  variable for storing the indicator handle
double             iBands_Basebuf[];   //  dynamic array for storing indicator values
double             iBands_Upperbuf[]; //  dynamic array for storing indicator values
double             iBands_Lowerbuf[]; //  dynamic array for storing indicator values

double             inputs[ 14 ];         // array for storing inputs
double             weight[ 14 ];         // array for storing weights

string             my_symbol;         // variable for storing the symbol
ENUM_TIMEFRAMES    my_timeframe;       // variable for storing the time frame
double             lot_size;           // variable for storing the minimum lot size of the transaction to be performed

double p_close; // Variable to store the close value of a bar
int STP, TKP;   // To be used for Stop Loss & Take Profit values
double             out;               // variable for storing the output neuron value


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Do we have sufficient bars to work
   if ( Bars ( _Symbol , _Period )< 60 ) // total number of bars is less than 60?
     {
       Alert ( "We have less than 60 bars on the chart, an Expert Advisor terminated!!" );
       return (- 1 );
     }

//--- save the current chart symbol for further operation of the EA on this very symbol
   my_symbol= Symbol ();
//--- save the current time frame of the chart for further operation of the EA on this very time frame
   my_timeframe= PERIOD_CURRENT ;
//--- save the minimum lot of the transaction to be performed
   lot_size= SymbolInfoDouble (my_symbol, SYMBOL_VOLUME_MIN );
//--- apply the indicator and get its handle
   iBands_handle= iBands (my_symbol,my_timeframe, 20 , 0 , 2.0 , PRICE_CLOSE );
//--- check the availability of the indicator handle
   if (iBands_handle== INVALID_HANDLE )
     {
       //--- no handle obtained, print the error message into the log file, complete handling the error
       Print ( "Failed to get the indicator handle" );
       return (- 1 );
     }
//--- add the indicator to the price chart
   ChartIndicatorAdd ( ChartID (), 0 ,iBands_handle);
//--- set the iBands_Basebuf array indexing as time series
   ArraySetAsSeries (iBands_Basebuf, true );
//--- set the iBands_upper indexing as time series
   ArraySetAsSeries (iBands_Upperbuf, true );
//--- set the iBands lower array indexing as time series
   ArraySetAsSeries (iBands_Lowerbuf, true );
   
//--- place weights into the array
   weight[ 0 ]=w0;
   weight[ 1 ]=w1;
   weight[ 2 ]=w2;
   weight[ 3 ]=w3;
   weight[ 4 ]=w4;
   weight[ 5 ]=w5;
   weight[ 6 ]=w6;
   weight[ 7 ]=w7;
   weight[ 8 ]=w8;
   weight[ 9 ]=w9;
   weight[ 10 ]=w10;
   weight[ 11 ]=w11;
   weight[ 12 ]=w12;
   weight[ 13 ]=w13;
   
   //--- Let us handle currency pairs with 5 or 3 digit prices instead of 4
   STP = StopLoss;
   TKP = TakeProfit;
   if ( _Digits == 5 || _Digits == 3 )
     {
      STP = STP* 10 ;
      TKP = TKP* 10 ;
     }
   return ( 0 );
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- delete the indicator handle and deallocate the memory space it occupies
   IndicatorRelease (iBands_handle);
//--- free the iBands Base dynamic array of data
   ArrayFree (iBands_Basebuf);
//--- free the iBand lower dynamic array of data
   ArrayFree (iBands_Lowerbuf);
//--- free the iBands upper dynamic array of data
   ArrayFree (iBands_Upperbuf);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//--- Do we have enough bars to work with
   if ( Bars ( _Symbol , _Period )< 60 ) // if total bars is less than 60 bars
     {
       Alert ( "We have less than 60 bars, EA will now exit!!" );
       return ;
     }  

// We will use the static Old_Time variable to serve the bar time.
// At each OnTick execution we will check the current bar time with the saved one.
// If the bar time isn't equal to the saved time, it indicates that we have a new tick.

   static datetime Old_Time;
   datetime New_Time[ 1 ];
   bool IsNewBar= false ;

// copying the last bar time to the element New_Time[0]
   int copied= CopyTime ( _Symbol , _Period , 0 , 1 ,New_Time);
   if (copied> 0 ) // ok, the data has been copied successfully
     {
       if (Old_Time!=New_Time[ 0 ]) // if old time isn't equal to new bar time
        {
         IsNewBar= true ;   // if it isn't a first call, the new bar has appeared
         if ( MQL5InfoInteger ( MQL5_DEBUGGING )) Print ( "We have new bar here " ,New_Time[ 0 ], " old time was " ,Old_Time);
         Old_Time=New_Time[ 0 ];             // saving bar time
        }
     }
   else
     {
       Alert ( "Error in copying historical times data, error =" , GetLastError ());
       ResetLastError ();
       return ;
     }

//--- EA should only check for new trade if we have a new bar
   if (IsNewBar== false )
     {
       return ;
     }

//--- Do we have enough bars to work with
   int Mybars= Bars ( _Symbol , _Period );
   if (Mybars< 60 ) // if total bars is less than 60 bars
     {
       Alert ( "We have less than 60 bars, EA will now exit!!" );
       return ;
     }

//--- Define some MQL5 Structures we will use for our trade
   MqlTick latest_price;       // To be used for getting recent/latest price quotes
   MqlTradeRequest mrequest;   // To be used for sending our trade requests
   MqlTradeResult mresult;     // To be used to get our trade results
   MqlRates mrate[];           // To be used to store the prices, volumes and spread of each bar
   ZeroMemory (mrequest);       // Initialization of mrequest structure
/*
     Let's make sure our arrays values for the Rates, ADX Values and MA values 
     is store serially similar to the timeseries array*/
//--- Get the last price quote using the MQL5 MqlTick Structure
   ArraySetAsSeries (mrate, true );
   if (! SymbolInfoTick ( _Symbol ,latest_price))
     {
       Alert ( "Error getting the latest price quote - error:" , GetLastError (), "!!" );
       return ;
     }

//--- Get the details of the latest 3 bars
   if ( CopyRates ( _Symbol , _Period , 0 , 3 ,mrate)< 0 )
     {
       Alert ( "Error copying rates/history data - error:" , GetLastError (), "!!" );
       ResetLastError ();
       return ;
     }
          
   int err1= 0 ; // variable for storing the results of working with the upper buffer of the Bollinger band indicator
   int err2= 0 ; // variable for storing the results of working with the lower buffer of the Bollinger band indicator
   int err3= 0 ;
//--- copy data from the indicator array to the iBands_upper dynamic array for further work with them
   err1= CopyBuffer (iBands_handle, 1 , 0 , ArraySize (inputs)/ 2 ,iBands_Upperbuf);
//--- copy data from the indicator array to the iBands_Lower dynamic array for further work with them
   err2= CopyBuffer (iBands_handle, 2 , 0 , ArraySize (inputs)/ 2 ,iBands_Lowerbuf);
//--- copy data from the indicator array to the iBands_Lower dynamic array for further work with them
   err3= CopyBuffer (iBands_handle, 2 , 0 , ArraySize (inputs)/ 2 ,iBands_Basebuf);
//--- in case of errors, print the relevant error message into the log file and exit the function
   if (err1< 0 || err2< 0 || err3< 0 )
     {
       Print ( "Failed to copy data from the indicator buffer" );
       return ;
     }
   
   double d1=- 1.0 ; //lower limit of the normalization range
   double d2= 1.0 ;   //upper limit of the normalization range
   
//--- minimum value over the range
   double x_min= MathMin (iBands_Lowerbuf[ ArrayMinimum (iBands_Lowerbuf)],iBands_Upperbuf[ ArrayMinimum (iBands_Upperbuf)]);
   double x_minn=iBands_Basebuf[ ArrayMinimum (iBands_Basebuf)];
//--- maximum value over the range
   double x_max= MathMax (iBands_Lowerbuf[ ArrayMaximum (iBands_Lowerbuf)],iBands_Upperbuf[ ArrayMaximum (iBands_Upperbuf)]);
   double x_maxx=iBands_Basebuf[ ArrayMaximum (iBands_Basebuf)];
//--- In the loop, fill in the array of inputs with the pre-normalized indicator values
   for ( int i= 0 ;i< ArraySize (inputs)/ 2 ;i++)
     {
      inputs[i* 2 ]=((((iBands_Upperbuf[i]-iBands_Lowerbuf[i])/iBands_Basebuf[i])-(x_min+x_minn)*(d2-d1))/((x_maxx+x_max)-(x_min+x_minn)))+d1;
            
     }
//--- store the neuron calculation result in the out variable
   out=CalculateNeuron(inputs,weight);
   
//--- we have no errors, so continue
//--- Do we have positions opened already?
   bool Buy_opened= false ;   // variable to hold the result of Buy opened position
   bool Sell_opened= false ; // variables to hold the result of Sell opened position

   if ( PositionSelect ( _Symbol )== true ) // we have an opened position
     {
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
        {
         Buy_opened= true ;   //It is a Buy
        }
       else if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
        {
         Sell_opened= true ; // It is a Sell
        }
     }

// Copy the bar close price for the previous bar prior to the current bar, that is Bar 1
   p_close=mrate[ 1 ].close;   // bar 1 close price
/*
    1. Check for a long/Buy Setup : MA-8 increasing upwards, 
    previous price close above it, ADX > 22, +DI > -DI
*/
//--- Declare bool type variables to hold our Buy Conditions
   bool Buy_Condition_1=(out< 0 ); // MA-8 Increasing upwards
   //--- Putting all together   
   if (Buy_Condition_1 )
     {
       // any opened Buy position?
         if (Buy_opened)
           {
             Alert ( "We already have a Buy Position!!!" );
             return ;     // Don't open a new Buy Position
           }
         ZeroMemory (mrequest);
         mrequest.action = TRADE_ACTION_DEAL ;                                   // immediate order execution
         mrequest.price = NormalizeDouble (latest_price.ask, _Digits );           // latest ask price
         mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss
         mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit
         mrequest.symbol = _Symbol ;                                             // currency pair
         mrequest.volume = Lot;                                                 // number of lots to trade
         mrequest.magic = EA_Magic;                                             // Order Magic Number
         mrequest.type = ORDER_TYPE_BUY ;                                         // Buy Order
         mrequest.type_filling = ORDER_FILLING_RETURN ;                             // Order execution type
         mrequest.deviation= 100 ;                                                 // Deviation from current price
         //--- send order
         OrderSend (mrequest,mresult);
         // get the result code
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //Request is completed or order placed
           {
             Alert ( "A Buy order has been successfully placed with Ticket#:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "The Buy order request could not be completed -error:" , GetLastError ());
             ResetLastError ();           
             return ;
           }
        
     }
/*
    2. Check for a Short/Sell Setup : MA-8 decreasing downwards, 
    previous price close below it, ADX > 22, -DI > +DI
*/
//--- Declare bool type variables to hold our Sell Conditions
   bool Sell_Condition_1 = (out> 0 );   // MA-8 decreasing downwards
   
//--- Putting all together
   if (Sell_Condition_1 )
     {
       // any opened Sell position?
         if (Sell_opened)
           {
             Alert ( "We already have a Sell position!!!" );
             return ;     // Don't open a new Sell Position
           }
         ZeroMemory (mrequest);
         mrequest.action= TRADE_ACTION_DEAL ;                                 // immediate order execution
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // latest Bid price
         mrequest.sl = NormalizeDouble (latest_price.bid + STP* _Point , _Digits ); // Stop Loss
         mrequest.tp = NormalizeDouble (latest_price.bid - TKP* _Point , _Digits ); // Take Profit
         mrequest.symbol = _Symbol ;                                           // currency pair
         mrequest.volume = Lot;                                               // number of lots to trade
         mrequest.magic = EA_Magic;                                           // Order Magic Number
         mrequest.type= ORDER_TYPE_SELL ;                                     // Sell Order
         mrequest.type_filling = ORDER_FILLING_RETURN ;                           // Order execution type
         mrequest.deviation= 100 ;                                             // Deviation from current price
         //--- send order
         OrderSend (mrequest,mresult);
         // get the result code
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //Request is completed or order placed
           {
             Alert ( "A Sell order has been successfully placed with Ticket#:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "The Sell order request could not be completed -error:" , GetLastError ());
             ResetLastError ();
             return ;
           }
        
     }
   return ;
  }
//+------------------------------------------------------------------+
//|   Neuron calculation function                                    |
//+------------------------------------------------------------------+
double CalculateNeuron( double &x[], double &w[])
  {
//--- variable for storing the weighted sum of inputs
   double NET= 0.0 ;
//--- Using a loop we obtain the weighted sum of inputs based on the number of inputs
   for ( int n= 0 ;n< ArraySize (x);n++)
     {
      NET+=x[n]*w[n];
     }
//--- multiply the weighted sum of inputs by the additional coefficient
   NET*= 2 ;
//--- send the weighted sum of inputs to the activation function and return its value
   return (ActivateNeuron(NET));
  }
//+------------------------------------------------------------------+
//|   Activation function                                            |
//+------------------------------------------------------------------+
double ActivateNeuron( double x)
  {
//--- variable for storing the activation function results
   double Out;
//--- hyperbolic tangent function
   Out=( exp (x)- exp (-x))/( exp (x)+ exp (-x));
//--- return the activation function value
   return (Out);
  }
//+------------------------------------------------------------------+
 
Советник, о котором вы написали выше, называется Kundi3, но предыдущее сообщение с результатом тестера стратегий показывает Kundi5, или вы уверены, что это одно и то же?
 
surubabs:

Уважаемый angevoyager,

Я верю, что в этом мире нет ничего невозможного, если вы хотите стать президентом США, мы можем, мы должны мечтать об этом и начать пробовать, с правильным планом, еще раз говорю, я верю в "Нет ничего невозможного".

У меня нет опыта программирования, только диплом экономиста. Я изучаю MQL по крупицам, и у меня есть сертификат технического анализа от Бомбейской фондовой биржи (BSE).

Как я уже говорил, я пытался сделать ea на основе ширины с некоторыми другими индикаторами, и я не хочу следовать методу nural, но для изучения я попытался сделать ea на основе ширины в nural,

Я приложил тест за последний месяц, но проблема в том, что эта еа не собирается продавать в короткие сроки :-)


Я уважаю ваш оптимизм, но не разделяю его. В любом случае я рад, если смогу вам помочь, но я пока ничего не знаю о нейронных сетях.
 
angevoyageur:
Я уважаю ваш оптимизм, но не разделяю его. В любом случае я рад, если смогу помочь вам, но я пока ничего не знаю о нейронных сетях.
Да, это тот же самый, это произошло из-за полного копирования предыдущей ea. Вы можете проверить это, сэр.
 

Очевидно, что поскольку ваше условие продажи :

 bool Sell_Condition_1 = (out>0);  // MA-8 decreasing downwards
и вывести :
   out=CalculateNeuron(inputs,weight);

Ваша функция CalculateNeuron() никогда не возвращает положительное число, вам необходимо проверить ваши входные параметры (входы и вес) и вашу функцию. Используйте функцию Print для отладки кода.

 
surubabs:
Да, это то же самое, это произошло из-за полного копирования прошлого предыдущего ea. Вы можете проверить это, сэр.

Несколько вопросов:

1. вы обучали нейронную сеть - оптимизация весовых параметров в тестере стратегий?
2. поскольку функция активации "гиперболический тангенс", то веса должны быть в диапазоне от -1 до 1, вы берете отрицательное значение после оптимизации?

На данный момент в последнем отчете я вижу, что все веса положительные, следовательно ожидать от нейросети отрицательного результата не имеет смысла, здесь получены только от одной ветви гиперболического тангенса и как следствие открытие торгует только в одном направлении.

Мой тест


Файлы:
result.zip  69 kb
 
fyords:

Несколько вопросов:

1. вы обучали нейронную сеть - оптимизация весовых параметров в тестере стратегий?
2. так как функция активации "гиперболический тангенс", то веса должны быть в диапазоне от -1 до 1, вы берете отрицательное значение после оптимизации?

На данный момент в последнем отчете я вижу, что все веса положительные, следовательно ожидать от нейросети отрицательного результата не имеет смысла, здесь получены только от одной ветви гиперболического тангенса и как следствие открытие торгует только в одном направлении.

Мой тест

Сэр, что вы сделали в коде, чтобы получить такой результат, я не смог запустить тестер стратегии с настройками parameater, которые вы объяснили в своей статье, после выбора параметров в тестере я нажал кнопку start butten, но он не тестирует.

тестирование .

Должен ли я изменить формулу нейронного расчета с гиперболической на сигмоидную?

или есть ли какая-нибудь другая функция, чтобы получить результат, как у вас?

Или я должен вручную изменить вес с 0.5 на какой-нибудь другой?

как рассчитать вес?

 
surubabs:

Это гораздо проще, чем вы думаете.
Прочитайте еще раз мою статью о нейронных сетях, в частности часть "Putting It All Together".
После кода с рисунка 7 есть описание того, как оптимизировать весовые параметры.

Обратите внимание на опции, сначала выберите параметры оптимизации, а затем отключите оптимизацию.

 
surubabs:

Уважаемый angevoyager,

Я верю, что в этом мире нет ничего невозможного,

Как бы вы построили эскалатор на Луну? Некоторые вещи, конечно, невозможны.
Причина обращения: