B BANDI VE B GENİŞLİĞİNE DAYALI BİR EA, BAZI ACİL YARDIM GEREKİYOR !! - sayfa 3

 

Sevgili angevoyager,

Bu dünyada hiçbir şeyin imkansız olmadığına inanıyorum, eğer ABD başkanı olmak istiyorsanız, yapabiliriz, bunun hayalini kurmalıyız ve denemeye başladık, uygun bir planla, yine inanıyorum "Hiçbir şey" imkansız"

Herhangi bir programlama geçmişim yok, sadece Ekonomi mezunuyum. Hurdalardan MQL çalışıyorum ve Bombay borsasından (BSE) Teknik analiz sertifikam var.

Daha önce de belirttiğim gibi, diğer bazı göstergelerle genişlik bazlı bir adet yapmaya çalışıyordum ve nural yöntemini takip etmek istemiyorum ama çalışmalarım için nural'da bir genişlik ölçüsü yapmaya çalıştım,

Eklediğim son bir aylık test, ancak buradaki sorun bu ea'nın Açığa satış yapmaması :-)

Strateji Test Kullanıcısı Raporu
MetaQuotes-Demo (Derleme 794)
Ayarlar
Uzman: Kundi5
Sembol: EURUSD
Dönem: H1 (2013.04.01 - 2013.04.10)
Girişler: StopLoss=30
Kâr Al=100
EA_Magic=12345
Parti=1.00000000
w0=0.5000000
w1=0.50000000
w2=0.5000000
w3=0.5000000
w4=0.50000000
w5=0.50000000
w6=0.50000000
w7=0.5000000
w8=0.5000000
w9=0.5000000
w10=0.50000000
w11=0.50000000
w12=0.5000000
w13=0.5000000
Komisyoncu: MetaQuotes Yazılım A.Ş.
Para birimi: Amerikan Doları
İlk Para Yatırma: 10 0000.00
Kaldıraç: 1:100
Sonuçlar
Tarih Kalitesi: 100%
Barlar: 167 Keneler: 39708 Semboller: 1
Toplam Net Kar: 2 283.40 Denge Düşüşü Mutlak: 603.50 Öz Sermaye Düşüşü Mutlak: 674.50
Brüt kazanç: 2 997,90 Bakiye Düşüşü Maksimal: 603,50 (%6,04) Özkaynak Düşüş Maksimal: 1 371,80 (%12,82)
Brüt Zarar: -714,50 Bakiye Düşüşü Bağıl: %6.04 (603.50) Öz Sermaye Düşüş Göreli: %12.82 (1 371.80)
Kar Faktörü: 4.20 Beklenen Ödeme: 380.57 Sınır seviyesi: 730,27%
Kurtarma Faktörü: 1.66 Sharpe oranı: 0.60 Z-Skoru: -0.46 (%35.45)
AHPR: 1,0367 (%3,67) LR Korelasyonu: 0.93 OnTester sonucu: 0
GHPR: 1,0349 (%3,49) LR Standart Hatası: 606.58
Toplam İşlemler: 6 Kısa İşlemler (kazanılan %): 0 (%0,00) Uzun İşlemler (kazanılan %): 6 (%50,00)
Toplam Fırsatlar: 12 Kâr İşlemleri (toplamın yüzdesi): 3 (%50,00) Zarar İşlemleri (toplamın yüzdesi): 3 (%50,00)
En büyük kâr ticareti: 1 000.00 En büyük kayıp ticareti: -303.50
Ortalama kâr ticareti: 999.30 Ortalama kayıp ticareti: -238.17
Maksimum ardışık kazanç ($): 3 (2 997.90) Maksimum ardışık kayıplar ($): 2 (-603,50)
Maksimum ardışık kar (sayım): 2 997,90 (3) Maksimum ardışık kayıp (sayım): -603.50 (2)
Ortalama ardışık galibiyetler: 3 Ortalama ardışık kayıplar: 2
Korelasyon (Karlar,MFE): 0.68 Korelasyon (Karlar, MAE): 0,72 Korelasyon (MFE,MAE): 0.3043
Minimum pozisyon tutma süresi: 1:03:40 Maksimum pozisyon tutma süresi: 82:45:40 Ortalama pozisyon tutma süresi: 27:28:23
Emirler
Açık Zaman Sipariş sembol Tip Ses Fiyat S / L T / P Zaman Belirtmek, bildirmek Yorum
2013.04.01 00:00 2 EURUSD satın almak 1.00 / 1.00 1.28140 1.27840 1.29140 2013.04.01 00:00 dolu
2013.04.01 03:15 3 EURUSD satmak 1.00 / 1.00 1.27840 2013.04.01 03:15 dolu sl 1.27840
2013.04.01 04:00 4 EURUSD satın almak 1.00 / 1.00 1.27777 1.27477 1.28777 2013.04.01 04:00 dolu
2013.04.04 14:45 5 EURUSD satmak 1.00 / 1.00 1.27477 2013.04.04 14:45 dolu sl 1.27477
2013.04.04 15:00 6 EURUSD satın almak 1.00 / 1.00 1.27734 1.27434 1.28734 2013.04.04 15:00 dolu
2013.04.04 16:03 7 EURUSD satmak 1.00 / 1.00 1.28734 2013.04.04 16:03 dolu tp 1.28734
2013.04.04 17:00 8 EURUSD satın almak 1.00 / 1.00 1.28541 1.28241 1.29541 2013.04.04 17:00 dolu
2013.04.05 14:19 9 EURUSD satmak 1.00 / 1.00 1.29541 2013.04.05 14:19 dolu tp 1.29541
2013.04.05 15:00 10 EURUSD satın almak 1.00 / 1.00 1.29901 1.29601 1.30901 2013.04.05 15:00 dolu
2013.04.09 17:25 11 EURUSD satmak 1.00 / 1.00 1.30901 2013.04.09 17:25 dolu tp 1.30901
2013.04.09 18:00 12 EURUSD satın almak 1.00 / 1.00 1.30923 1.30623 1.31923 2013.04.09 18:00 dolu
2013.04.09 23:59 13 EURUSD satmak 1.00 / 1.00 1.30812 2013.04.09 23:59 dolu testin sonu
Fırsatlar
Zaman Anlaştık mı sembol Tip Yön Ses Fiyat Sipariş komisyon Takas Kâr Denge Yorum
2013.04.01 00:00 1 denge 0,00 0,00 10 0000.00 10 0000.00
2013.04.01 00:00 2 EURUSD satın almak içinde 1.00 1.28140 2 0,00 0,00 0,00 10 0000.00
2013.04.01 03:15 3 EURUSD satmak dışarı 1.00 1.27840 3 0,00 0,00 -300,00 9 700,00 sl 1.27840
2013.04.01 04:00 4 EURUSD satın almak içinde 1.00 1.27777 4 0,00 0,00 0,00 9 700,00
2013.04.04 14:45 5 EURUSD satmak dışarı 1.00 1.27477 5 0,00 -3.50 -300,00 9 396,50 sl 1.27477
2013.04.04 15:00 6 EURUSD satın almak içinde 1.00 1.27734 6 0,00 0,00 0,00 9 396,50
2013.04.04 16:03 7 EURUSD satmak dışarı 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 satın almak içinde 1.00 1.28541 8 0,00 0,00 0,00 10 396,50
2013.04.05 14:19 9 EURUSD satmak dışarı 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 satın almak içinde 1.00 1.29901 10 0,00 0,00 0,00 11 395,80
2013.04.09 17:25 11 EURUSD satmak dışarı 1.00 1.30901 11 0,00 -1.40 1 000.00 12 394.40 tp 1.30901
2013.04.09 18:00 12 EURUSD satın almak içinde 1.00 1.30923 12 0,00 0,00 0,00 12 394.40
2013.04.09 23:59 13 EURUSD satmak dışarı 1.00 1.30812 13 0,00 0,00 -111.00 12 283.40 testin sonu
0,00 -5.60 2 289.00 12 283.40

 
angevoyageur :
"Genişliğiniz" ile hangi sinir ağının ilgisi var? Seni takip etmek zor.
Hocam yeni çalışmalarımı yayınlıyorum, nural ağlarda kodladığım genişlikte ama mesele şu ki, kısa şartlar almıyor, sorunu bulmama yardım eder misiniz?
 //+------------------------------------------------------------------+
//|                                                       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);
  }
//+------------------------------------------------------------------+
 
Yukarıda gönderdiğiniz EA Kundi3 olarak adlandırılmıştır, ancak Strateji Test Aracının sonucuyla önceki gönderi Kundi5'i gösterir veya bunun aynı olduğundan emin misiniz?
 
surubabs :

Sevgili angevoyager,

Bu dünyada hiçbir şeyin imkansız olmadığına inanıyorum, eğer ABD başkanı olmak istiyorsanız, yapabiliriz, bunun hayalini kurmalıyız ve denemeye başladık, uygun bir planla, yine inanıyorum "Hiçbir şey" imkansız"

Herhangi bir programlama geçmişim yok, sadece Ekonomi mezunuyum. Hurdalardan MQL çalışıyorum ve Bombay borsasından (BSE) Teknik analiz sertifikam var.

Daha önce de belirttiğim gibi, diğer bazı göstergelerle genişlik bazlı bir adet yapmaya çalışıyordum ve nural yöntemini takip etmek istemiyorum ama çalışmalarım için nural'da bir genişlik ölçüsü yapmaya çalıştım,

Eklediğim son bir aylık test, ancak buradaki sorun bu ea'nın Açığa satış yapmaması :-)


İyimserliğine saygı duyuyorum ama paylaşmıyorum. Neyse yardımcı olabildiysem ne mutlu bana ama sinir ağları hakkında henüz bir bilgim yok.
 
angevoyageur :
İyimserliğine saygı duyuyorum ama paylaşmıyorum. Neyse yardımcı olabildiysem ne mutlu bana ama sinir ağları hakkında henüz bir bilgim yok.
evet onun aynısı, önceki ea'nın tam bir kopyası geçmişinin bcoz'u oldu. tekrar test edebilirsiniz hocam
 

Açıkçası, satış durumunuz şu şekilde:

 bool Sell_Condition_1 = ( out > 0 );   // MA-8 decreasing downwards
ve çıktı:
   out=CalculateNeuron(inputs,weight);

CalculateNeuron() işleviniz asla pozitif bir sayı döndürmez, giriş parametrelerinizi (girişler ve ağırlık) ve işlevinizi kontrol etmeniz gerekir. Kodunuzda hata ayıklamak için Yazdır işlevini kullanın.

 
surubabs :
evet onun aynısı, önceki ea'nın tam bir kopyası geçmişinin bcoz'u oldu. tekrar test edebilirsiniz hocam

Birkaç soru:

1. Nöral ağı eğittiniz - strateji test cihazında ağırlık parametrelerinin optimizasyonu?
2. ağırlıkların -1 ila 1 aralığında olması gereken aktivasyon fonksiyonu "hiperbolik tanjant" olarak, optimizasyondan sonra negatif bir değer mi alıyorsunuz?

Son rapordaki bu noktada, tüm ağırlıkların pozitif olduğunu görebiliyorum, bu nedenle sinir ağının negatif sonucundan beklediğimiz mantıklı değil, burada hiperbolik tanjantın sadece bir dalından elde ediliyor ve sonuç olarak açılış sadece bir yönde ticaret yapar.

Benim testim


Dosyalar:
result.zip  69 kb
 
fyords :

Birkaç soru:

1. Nöral ağı eğittiniz - strateji test cihazında ağırlık parametrelerinin optimizasyonu?
2. ağırlıkların -1 ila 1 aralığında olması gereken aktivasyon fonksiyonu "hiperbolik tanjant" olarak, optimizasyondan sonra negatif bir değer mi alıyorsunuz?

Son rapordaki bu noktada, tüm ağırlıkların pozitif olduğunu görebiliyorum, bu nedenle sinir ağının negatif sonucundan beklediğimiz mantıklı değil, burada hiperbolik tanjantın sadece bir dalından elde ediliyor ve sonuç olarak açılış sadece bir yönde ticaret yapar.

Benim testim

Hocam ne yaptınız kodda böyle bir sonuç almak için yazınızda anlatmış olduğunuz parametre ayarı ile strateji testerını çalıştıramadım, tester'da parametreleri seçtikten sonra start butonuna bastım ama olmadı.

test yapmak .

Sinirsel hesaplama formülünü Hiperbolik'ten sigmoid'e değiştirmeli miyim?

veya sahip olduğunuz gibi bir sonuç elde etmek için başka bir işlev var mı?

veya ağırlıkları manuel olarak 0,5'ten diğerine değiştirmeli miyim?

ağırlık nasıl hesaplanır?

 
surubabs :

Düşündüğünden çok daha kolay.
Sinir ağları hakkındaki makalemi tekrar okuyun, özellikle "Hepsini Bir Araya Getirmek" bölümünün.
Şekil 7'deki koddan sonra, ağırlık parametrelerinin nasıl optimize edileceğine dair bir açıklama var.

Seçeneklere dikkat edin, önce optimizasyon parametrelerini seçin ve ardından optimizasyonu kapatın.

 
surubabs :

Sevgili angevoyager,

Bu dünyada hiçbir şeyin imkansız olmadığına inanıyorum,

Ay'a nasıl bir yürüyen merdiven inşa edersin? bazı şeyler kesinlikle imkansızdır.