B 밴드와 B 너비를 기반으로 하는 EA, 긴급 도움이 필요합니다!! - 페이지 3

 

친애하는 항해사님,

나는 이 세상에 불가능한 것은 없다고 믿습니다. 만약 당신이 미국의 대통령이 되고 싶다면 우리는 할 수 있습니다. 우리는 그것을 꿈꿔야 하고 우리는 그것을 시도하기 시작해야 합니다. 적절한 계획을 가지고 다시 말하지만 저는 "아무것도 믿지 않습니다. 불가능하다"

저는 프로그래밍 배경이 없고 경제학을 졸업했을 뿐입니다. 스크랩에서 MQL을 공부하고 있으며 봄베이 증권 거래소(BSE)에서 기술 분석 인증을 받았습니다.

전에 다른 지표를 사용하여 너비 기반 ea를 만들려고 했고 nural 방법을 따르고 싶지 않지만 내 연구를 위해 nural에서 너비 ea를 만들려고 했습니다.

지난 한 달 동안 테스트를 첨부했지만 여기에서 문제는 이것이 공매도가 되지 않는다는 것입니다 :-)

전략 테스터 보고서
MetaQuotes-데모(빌드 794)
설정
전문가: 쿤디5
상징: EURUSD
기간: H1 (2013.04.01 - 2013.04.10)
입력: 손절매=30
테이크프로핏=100
EA_Magic=12345
부지=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-점수: -0.46 (35.45%)
AHPR: 1.0367 (3.67%) LR 상관관계: 0.93 온테스터 결과: 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)
평균 연속 승리: 평균 연속 손실: 2
상관관계(이익, MFE): 0.68 상관관계(이익,MAE): 0.72 상관관계(MFE,MAE): 0.3043
최소 위치 유지 시간: 1:03:40 최대 위치 유지 시간: 82:45:40 평균 포지션 유지 시간: 27:28:23
명령
오픈 시간 주문하다 상징 유형 용량 가격 에스 / 패 티/피 시간 상태 논평
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 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 채우는 최고 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 채우는 최고 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 채우는 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 EURUSD 팔다 밖으로 1.00 1.27840 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 최고 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 최고 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 네트워크에서 코딩했지만 문제는 짧은 조건을 취하지 않는다는 것입니다. 문제를 찾는 데 도움을 줄 수 있습니까?
 //+------------------------------------------------------------------+
//|                                                       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);
  }
//+------------------------------------------------------------------+
 
위에 게시한 EA의 이름은 Kundi3이지만 전략 테스터 의 결과가 포함된 이전 게시물은 Kundi5를 표시합니까, 아니면 이것이 동일한가요?
 
surubabs :

친애하는 항해사님,

나는 이 세상에 불가능한 것은 없다고 믿습니다. 만약 당신이 미국의 대통령이 되고 싶다면 우리는 할 수 있습니다. 우리는 그것을 꿈꿔야 하고 우리는 그것을 시도하기 시작해야 합니다. 적절한 계획을 가지고 다시 말하지만 저는 "아무것도 믿지 않습니다. 불가능하다"

저는 프로그래밍 배경이 없고 경제학을 졸업했을 뿐입니다. 스크랩에서 MQL을 공부하고 있으며 봄베이 증권 거래소(BSE)에서 기술 분석 인증을 받았습니다.

전에 다른 지표를 사용하여 너비 기반 ea를 만들려고 했고 nural 방법을 따르고 싶지 않지만 내 연구를 위해 nural에서 너비 ea를 만들려고 했습니다.

지난 한 달 동안 테스트를 첨부했지만 여기에서 문제는 이것이 공매도가 되지 않는다는 것입니다 :-)


나는 당신의 낙관주의를 존중하지만 그것을 공유하지는 않습니다. 어쨌든 도움이 된다면 기쁘지만 신경망 에 대해서는 아직 아무것도 모릅니다.
 
angevoyageur :
나는 당신의 낙관주의를 존중하지만 그것을 공유하지는 않습니다. 어쨌든 도움이 된다면 기쁘지만 신경망에 대해서는 아직 아무것도 모릅니다.
예, 동일한 것입니다. 이전 EA의 전체 공동 부담금이 발생한 것입니다. 다시 테스트할 수 있습니다.
 

분명히 귀하의 판매 조건은 다음과 같습니다.

 bool Sell_Condition_1 = ( out > 0 );   // MA-8 decreasing downwards
그리고 출력은 다음과 같습니다.
   out=CalculateNeuron(inputs,weight);

CalculateNeuron()은 절대 양수를 반환하지 않으므로 입력 매개변수(입력 및 가중치)와 함수를 확인해야 합니다. 인쇄 기능 을 사용하여 코드를 디버그하십시오.

 
surubabs :
예, 동일한 것입니다. 이전 EA의 전체 공동 부담금이 발생한 것입니다. 다시 테스트할 수 있습니다.

몇 가지 질문:

1. 신경망 훈련 - 전략 테스터에서 가중치 매개변수 최적화?
2. 가중치가 -1에서 1 사이여야 하는 활성화 함수 "쌍곡선 탄젠트"로 최적화 후 음수 값을 취하고 있습니까?

마지막 보고서의 이 시점에서 나는 모든 가중치가 양수임을 알 수 있습니다. 따라서 신경망의 음수 결과에서 예상하는 것은 말이 되지 않습니다. 여기에서는 쌍곡선 탄젠트의 한 분기에서만 얻어지며 결과적으로 열림 한 방향으로만 거래합니다.

내 테스트


파일:
result.zip  69 kb
 
fyords :

몇 가지 질문:

1. 신경망 훈련 - 전략 테스터에서 가중치 매개변수 최적화?
2. 가중치가 -1에서 1 사이여야 하는 활성화 함수 "쌍곡선 탄젠트"로 최적화 후 음수 값을 취하고 있습니까?

마지막 보고서의 이 시점에서 나는 모든 가중치가 양수임을 알 수 있습니다. 따라서 신경망의 음수 결과에서 예상하는 것은 말이 되지 않습니다. 여기에서는 쌍곡선 탄젠트의 한 분기에서만 얻어지며 결과적으로 열림 한 방향으로만 거래합니다.

내 테스트

선생님, 무엇을 했는지 대구에서 이와 같은 결과를 얻으려면 당신이 기사에서 설명한 매개변수 설정으로 전략 테스터를 실행할 수 없었습니다. 테스터에서 매개변수를 선택한 후 시작 버튼을 클릭했지만 실행되지 않았습니다.

테스트 .

신경 계산 공식을 쌍곡선에서 시그모이드로 변경해야 합니까?

또는 u have와 같은 결과를 얻는 다른 기능이 있습니까?

아니면 수동으로 가중치를 0.5에서 다른 것으로 변경해야 합니까?

무게를 계산하는 방법?

 
surubabs :

생각보다 훨씬 쉽습니다.
신경망에 대한 내 기사, 특히 "Putting It All Together" 부분을 다시 읽으십시오.
그림 7의 코드 다음에 가중치 매개변수를 최적화하는 방법에 대한 설명이 있습니다.

옵션에 주의하고 먼저 최적화 매개변수 를 선택한 다음 최적화를 끕니다.

 
surubabs :

친애하는 항해사님,

이 세상에 불가능은 없다고 믿습니다.

달로 가는 에스컬레이터를 어떻게 만들까요? 어떤 것들은 가장 확실히 불가능합니다.