English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
preview
Klasik zararı durdur veya RSI'a dayalı zararı durdur (akıllı zararı durdur)

Klasik zararı durdur veya RSI'a dayalı zararı durdur (akıllı zararı durdur)

MetaTrader 5Örnekler | 30 Mayıs 2022, 14:14
536 0
vwegba
vwegba

Giriş

Ticarette kutsal kaseyi bulma arayışı beni bu araştırmaya yönelttiğini söylemeliyim. Zararı durdur, para yönetimi söz konusu olduğunda ticaretteki en önemli araçlardan biridir. Para yönetimi ise yatırımcının piyasada para kazanmasının ve uzun vadede istikrarlı olmasının ana yollarındandır. Daha önce belirtildiği gibi, para yönetimi, zararı durdur ve risk:getiri oranı ile yakından ilişkilidir. 1:1.5 risk:getiri oranı, diğer risk:getiri oranlarıyla karşılaştırıldığında daha yüksek başarı oranına sahip olma eğilimindedir, ancak 1:>1.9 risk:getiri oranıysa çoğu zaman daha kârlı olma eğilimindedir ve yatırımcıyı uzun süre boyunca istikrarlı şekilde kârda tutar (kutsal kase). Ancak bu kutsal kase ticaret stratejisini etkileyen bir dezavantaj vardır. İdeal durumda, 1:>1.9 risk:getiri oranıyla gerçekleştirilen ticaret, örneğin benzer 10 işlemden (her birinin riski 1 pip olsun) 6'sı kaybediliyor (6 pip) ve 4'ü kazanılıyorsa (8 pip) (yani, %40 başarı oranıyla) sınırda olacak şekilde kârlı olacaktır. Bu, 2 pip kârda olacağımız anlamına gelir. Gerçek hayattaysa, genellikle bu farklı olur. Bunun ana nedenlerinden biri, zararı durdur avı olarak bilinen faktördür. Zararı durdur avı, fiyatın önce zararı durdur seviyesine ulaştığı ve ardından tahmin edilen yönde hareket ettiği durumdur. Bu, ticaret ve para yönetiminde ciddi bir sorun teşkil eder. Ayrıca yatırımcılar (çoğunlukla yeni başlayanlar) üzerinde psikolojik olarak etkiye de sahiptir. 

Zararı durdur avı

Şekil 1.1. Zararı durdur avı

Zararı durdur avı, çoğunlukla fiyat grafiğine yerleştirilen sabit zararı durdur veya takip eden zarar durdurucu ile ilişkilidir. Fiyat grafiğinde zararı durdur olmazsa, zararı durdur avı da olmayacaktır. Ancak zararı durdurun olmaması, işlem hesabınızın yok olma olasılığına eşittir.


RSI'a dayalı zararı durdur

RSI osilatörü, fiyat grafiğinin 0 ila 100 aralığındaki pencerede çizilen bir kopyasıdır.

RSI


Şekil 1.2. RSI ve çizgi grafik

RSI göstergesi ve çizgi grafik çok benzerse, RSI göstergesini akıllı zararı durdur olarak kullanmak, zararı durdur avı riskini azaltabilir.

Amaç:

Buradaki amacım, RSI'a dayalı zararı durdur kullanımının, zararı durdur avını azaltıp azaltamayacağını ve en önemlisi uzun vadede daha kârlı olup olmayacağını belirlemektir.

Yöntem:

Bu amaçla iki strateji karşılaştırılacak: fiyat grafiğinde ayarlanan zararı durdur ve RSI göstergesinde ayarlanan zararı durdur.




Strateji ve kod

Fiyat grafiğinde klasik zararı durdur

Bu Uzman Danışman, fiyat grafiğinde ayarlanan sabit zarar durdura yönelik olacaktır. Strateji için gereklilikler aşağıda verilmiştir:

Parametreler

Açıklama

Kullanılan gösterge

MACD (12,26,9)

Kullanılan gösterge

Moving Average (200)

Kullanılan gösterge

Moving Average (50)

Kullanılan gösterge

ATR (5)

Zaman dilimi

1 dakika

Alış girişi

Moving Average (50) Moving Average (200)'ün üzerinde ve MACD çizgisi de, hem MACD çizgisi hem de sinyal çizgisi sıfırın altındayken, sinyal çizgisinin üzerindeyse.

Satış girişi

Moving Average (50) Moving Average (200)'ün altında ve MACD çizgisi de, hem MACD çizgisi hem de sinyal çizgisi sıfırın üzerindeyken, sinyal çizgisinin altındaysa.

Çıkış

Zararı durdur ve kârı al (1:2).

Alış için zararı durdur, 'girişten önceki yirmi (20) mumum en düşük değeri' eksi 'ATR (5) değeri'dir.

Satış için zararı durdur ise, 'girişten önceki yirmi (20) mumum en yüksek değeri' artı 'ATR (5) değeri'dir.

 


Stratejinin grafiksel gösterimi aşağıda verilmiştir:

Alış (klasik zararı durdur)


Şekil 2.1. Alış

Satış (klasik zararı durdur)


Şekil 2.2. Satış

Kod

Kodun ilk kısmı esas olarak değişken bildirimi ve girdi verileri içindir. Tüm gösterge işleyici değişkenleri burada bildirilir.

#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
CTrade trade;
int MATrend;
int MADirection;
int MACD;
int ATR;
input int afi;// ----------RiskAmount------------
input double risk = 0.02; //% Amount to risk
input int atrValue = 20; // ATR VAlue
input int ai;// ----------Moving Average inputs------------
input int movAvgTrend = 200;// Moving Average Trend
input int movAvgDirection = 50;//moving Average for trend Direction;
input int i;// -----------MACD inputs-----------------------
input int fast = 12;// Macd Fast
input int slow = 26; //Macd Slow
input int signal = 9; //Signal Line

Diğer değişkenler de bildirilir.

double pipValue  = 0.0;// 

double Balance; // For the Current Balance

Değişkenler, init() fonksiyonundaki her bir işleyiciye atanır.

int OnInit()
  {
//---
      //Moving Averages Indicators''
      MATrend = iMA(_Symbol,_Period,movAvgTrend,0,MODE_SMA,PRICE_CLOSE); //Moving Average 200
      MADirection = iMA(_Symbol,_Period,movAvgDirection,0,MODE_EMA,PRICE_CLOSE); //Moving Average 50
      //MACD
      MACD = iMACD(_Symbol,_Period,fast,slow,signal,PRICE_CLOSE);//MACD 
      //ATR
      ATR = iATR(_Symbol,_Period,atrValue);
      //---
      point=_Point;
      double Digits=_Digits;
      
      if((_Digits==3) || (_Digits==5))
      {
         point*=10;
      }
      return(INIT_SUCCEEDED);
  }


Stratejinin nasıl çalıştığına ilişkin kod aşağıdadır:

void Strategy() {
   MqlRates priceAction[];
   ArraySetAsSeries(priceAction,true);
   int priceData = CopyRates(_Symbol,_Period,0,200,priceAction); 
   
   double maTrend[]; ArraySetAsSeries(maTrend,true);
   CopyBuffer(MATrend,0,0,200,maTrend); //200 MA
     
   double madirection[]; ArraySetAsSeries(madirection,true);
   CopyBuffer(MADirection,0,0,200,madirection);  //50 MA
   
   double macd[]; ArraySetAsSeries(macd,true);
   CopyBuffer(MACD,0,0,200,macd);  //MACD
   
   double macds[]; ArraySetAsSeries(macds,true);
   CopyBuffer(MACD,1,0,200,macds);  //MACD_Signal Line   
      
   double Bid  = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);  
   
   
   if (madirection[1]>maTrend[1]) {
      //Buy ; Uptrend
     
     
      
      bool macd_bZero = macds[1]<0&&macd[1]<0; //MacD Signal Line is less than Zero
      bool macd_cross = macd[1]>macds[1];// Macd Crosses the signal line
      
      if (macd_bZero && macd_cross) {
         buyTrade = true;
      }
      
      
   } else if (madirection[1]<maTrend[1]) {
      //Sell; DownTrend
      
     
      bool macd_bZero = macds[1]>0&&macd[1]>0;; //MacD Signal Line is less than Zero
      bool macd_cross = macd[1]<macds[1];// Macd Crosses the signal line
      
      if (macd_bZero && macd_cross) {
         sellTrade = true;
      }      
      
    }  
    
   if (buyTrade && sellTrade) {
      buyTrade = false;
      sellTrade = false;
   return;
   }
      
      
   if (buyTrade) {
      buyTrade = false;
      sellTrade = false;
      
      Buy(Ask);
   } else if (sellTrade) {
      buyTrade = false;
      sellTrade = false;
      
      Sell(Bid);   
   }
   
}

Giriş (Alış ve Satış)

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   trade.Buy(theLotsize,_Symbol,Ask,(stoplossforBuy(20)-atr[1]),Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL); //Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle
    

}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   trade.Sell(theLotsize,_Symbol,Bid,(stoplossforSell(20)+atr[1]),Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL); //Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle

}

Yukarıdaki kodlardan stoplossforSell(int num) ve stoplossforBuy(int num) olmak üzere iki metot çağrılır. Bu iki metot, işlem girişi tetiklendikten sonra sırasıyla atanan numaranın en yüksek ve en düşük mumunu belirlemek içindir. Örneğin stoplossforSell(20), girişten önceki 20 mumun en yüksek değerini geri döndürür.

double stoplossforBuy(int numcandle) {
         int LowestCandle;
         
         //Create array for candle lows
         double low[];
         
         //Sort Candle from current downward
         ArraySetAsSeries(low,true);
         
         //Copy all lows for 100 candle
         CopyLow(_Symbol,_Period,0,numcandle,low);
         
         //Calculate the lowest candle
         LowestCandle = ArrayMinimum(low,0,numcandle);
         
         //Create array of price
         MqlRates PriceInfo[];
         
         ArraySetAsSeries(PriceInfo,true);
         
         //Copy price data to array
         
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInfo);
      
         return PriceInfo[LowestCandle].low;
                  
      
         

}
double stoplossforSell(int numcandle) {
         int HighestCandle;
         double High[];
       
       //Sort array downward from current candle
         ArraySetAsSeries(High,true);
       
       //Fill array with data for 100 candle
         CopyHigh(_Symbol,_Period,0,numcandle,High);
         
         //calculate highest candle
         HighestCandle = ArrayMaximum(High,0,numcandle);
         
         //Create array for price
         MqlRates PriceInformation[];
         ArraySetAsSeries(PriceInformation,true);
         
         
         //Copy price data to array
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInformation);
         
         return PriceInformation[HighestCandle].high;
           
 
 }

Uzman Danışman, açık bir ticaret işlemi olup olmadığını kontrol eder. Açık bir ticaret işlemi yoksa, strateji metodu çağrılarak işlemlere teker teker olacak şekilde girilir.

void OnTick()
  {
//---
   pipValue  = ((((SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE))*point)/(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE))));

   Balance = AccountInfoDouble(ACCOUNT_BALANCE);
   
   if (PositionsTotal()==0) {
      Strategy();
   }
  }

RSI göstergesinde RSI'a dayalı zararı durdur


Bu Uzman Danışman ise, RSI göstergesinde ayarlanan sabit zarar durdura yönelik olacaktır. Strateji için gereklilikler aşağıda verilmiştir:

Parametreler

Açıklama

Kullanılan gösterge

MACD (12,26,9)

Kullanılan gösterge

Moving Average (200)

Kullanılan gösterge

Moving Average (50)

Kullanılan gösterge

ATR (5)

Zaman dilimi

1 dakika

Alış girişi

Moving Average (50) Moving Average (200)'ün üzerinde ve MACD çizgisi de, hem MACD çizgisi hem de sinyal çizgisi sıfırın altındayken, sinyal çizgisinin üzerindeyse.

Satış girişi

Moving Average (50) Moving Average (200)'ün altında ve MACD çizgisi de, hem MACD çizgisi hem de sinyal çizgisi sıfırın üzerindeyken, sinyal çizgisinin altındaysa.

Çıkış

Kârı Al.

Alış için zararı durdur, girişten önceki on (10) RSI değerinin en düşüğüdür.

Satış için zararı durdur, girişten önceki on (10) RSI değerinin en yükseğidir.

 

Eğer mevcut RSI, yukarıdaki koşula göre elde edilen en yüksek veya en düşük RSI değerini çaprazlarsa, ticaret işlemi kapanır.

 


Algılama kolaylığı için RSI göstergesi üzerine RSI'a dayalı zararı durdur seviyesi çizilir.

Alış (RSI'a dayalı zararı durdur)


Şekil 2.3. RSI'a dayalı zararı durdura sahip alış işlemi

Mevcut RSI değeri, RSI penceresindeki zarar durdur seviyesini aşağı doğru çaprazladığında ticaret işlemi kapanır.

Satış (RSI'a dayalı zararı durdur)


Şekil 2.4. RSI'a dayalı zararı durdura sahip satış işlemi

Mevcut RSI değeri, RSI penceresindeki zarar durdur seviyesini yukarı doğru çaprazladığında ticaret işlemi kapanır.

Kod

Kodun ilk kısmı esas olarak değişken bildirimi ve girdi verileri içindir. Bu Uzman Danışmanı öncekinden ayıran eklemeler aşağıda verilmiştir:

int RSI;
input int rsi = 5; // RSI VAlue
double lowestrsiValue = 100;
double highestrsiValue = 0.0;

onint() metoduna da şu ekleme yapılmıştır:

int OnInit()
  {
              //RSI
      RSI = iRSI(_Symbol,_Period,rsi,PRICE_CLOSE);
}


Stratejinin nasıl çalıştığına ilişkin kod yukarıdakiyle aynıdır. Ancak hem alış hem de satış girişinde zararı durdur yoktur çünkü zararı durdur olarak RSI seviyesi kullanılır. Piyasaya giriş kodu aşağıdadır:

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,lowestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window
   trade.Buy(theLotsize,_Symbol,Ask,0,Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL);//Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle
    Print("SL",lowestRSI(10));
}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)
   
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2);  // This Calculate the lotsize using the % to risk
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,highestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window
   trade.Sell(theLotsize,_Symbol,Bid,0,Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL);//Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle
   Print("SL",highestRSI(10));
}


Kodun yukarıdaki Uzman Danışmandan farklı olan son kısmı, RSI'ın en düşük ve en yüksek değerlerini elde eden metotlardır. Bu metotlar, yukarıdaki piyasaya giriş metodundan çağrılır ve RSI'ın en düşük veya en yüksek seviyesinde çizgi çizmek için verileri kullanır.

Not: Strateji metodunda açık pozisyon olmadığında çizilen çizgi silinir.

 double lowestRSI(int count) {     
      double thersi[]; ArraySetAsSeries(thersi,true);
      CopyBuffer(RSI,0,0,200,thersi);
      
      for (int i = 0; i<count;i++) {
      
         if (thersi[i]<lowestrsiValue) {
            lowestrsiValue = thersi[i];
         }
      }
   return lowestrsiValue;
}
//This method get the Highest RSI afer ENtry to set the smart Stoploss
double highestRSI(int count) {

      
      double thersi[]; ArraySetAsSeries(thersi,true);
      CopyBuffer(RSI,0,0,200,thersi);
      
      for (int i = 0; i<count;i++) {
      
         if (thersi[i]>highestrsiValue) {
            highestrsiValue = thersi[i];
         }
      }
   return highestrsiValue;
}

####

Uzman Danışmanları yukarıdaki gibi hazırladık ve devamında derledik, şimdi sonuçlar için her iki Uzman Danışmanı test etmeye başlayabiliriz.


Test ve sonuç

Zararı durdur avı testi

Bu bölümde testlerden elde edilen sonuçlar sunulacaktır. Gerçekleştirilecek ilk test, RSI'a dayalı zararı durdur kullanan Uzman Danışmanın ticaret sırasında zararı durdur avı sorununu azaltıp azaltamayacağını belirlemektir. Bunun için, klasik zararı durdur kullanan Uzman Danışman ile karşılaştırılacaktır.

Testler M1 zaman diliminde yapılmıştır.

RSI'a dayalı zararı durdur kullanan Uzman Danışman

Uzman Danışman: MACD_Smart_Stoploss
Sembol: Volatility 10 Index
Zaman dilimi: M1 (2021.07.01 - 2021.07.15)
Girdiler: afi=0
risk=0.05
atrValue=20
rsi=14
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9
Broker: Deriv Limited
Para birimi: USD
Başlangıç bakiyesi: 500.00
Kaldıraç: 1:500



Klasik zararı durdur kullanan Uzman Danışman

Uzman Danışman: MACD_Cross_Stoploss
Sembol: Volatility 10 Index
Zaman dilimi: M1 (2021.07.01 - 2021.07.15)
Girdiler: afi=0
risk=0.05
atrValue=5
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9

risk reward=1:2
Broker: Deriv Limited
Para birimi: USD
Başlangıç bakiyesi: 500.00
Kaldıraç: 1:50


Sonuçlar

Aşağıda, her iki Uzman Danışman tarafından gerçekleştirilen işlemlerin grafiksel gösterimi bulunmaktadır. Her bir Uzman Danışman için toplamda üç işlem örneği sunulmuştur.

RSI'a dayalı zararı durdur 1


Şekil 3.1. RSI'a dayalı zararı durdur kullanan Uzman Danışmanın 1. örneği

Klasik zararı durdur 1


Şekil 3.1a. Klasik zararı durdur kullanan Uzman Danışmanın 1. örneği

RSI'a dayalı zararı durdur 2

Şekil 3.2. RSI'a dayalı zararı durdur kullanan Uzman Danışmanın 2. örneği

Klasik zararı durdur 2

Şekil 3.2a. Klasik zararı durdur kullanan Uzman Danışmanın 2. örneği

RSI'a dayalı zararı durdur 3
Şekil 3.3. RSI'a dayalı zararı durdur kullanan Uzman Danışmanın 3. örneği

Klasik zararı durdur 3

Şekil 3.3a. Klasik zararı durdur kullanan Uzman Danışmanın 3. örneği


Yukarıdaki karşılaştırmadan, RSI'a dayalı zararı durdur kullanan Uzman Danışmanın, fiyat grafiğinde ayarlanan klasik zararı durdur kullanan Uzman Danışmana göre, zararı durdur avından kaçınma konusunda çok daha iyi bir iş çıkardığı görülebilir.


Karlılık testi

Şimdi en önemli konuyu ele alma zamanı - avdan kaçınmak için tasarladığımız Uzman Danışman daha kârlı mı? RSI'a dayalı zararı durdur kullanan Uzman Danışman, zararı durdur avından kaçınma konusunda daha iyi bir iş çıkardığından, dolayısıyla daha az sayıda zararı durduru tetiklemiş olacağından klasik zararı durdur kullanan Uzman Danışmana kıyasla daha kârlı olmalı ve daha yüksek başarı oranına sahip olmalıdır. Mantıksal olarak bu doğru olabilir. Ancak bu teoriyi kanıtlamak için test yapılmalıdır.

Yukarıdaki test için belirtilen veriler buradaki her iki test için de kullanılacaktır. Her iki Uzman Danışmana M1 zaman diliminde 100'den fazla ticaret işlemi üzerinde geriye dönük test yapılacaktır. Sonuçlar aşağıda verilmiştir.


RSI'a dayalı zararı durdur kullanan Uzman Danışmanın sonuçları

Sonuçlar
Geçmiş kalitesi: 100%
Çubuklar: 20160 Tikler: 603385 Semboller: 1
Total net kâr: 327.71 Mutlak bakiye drawdownı: 288.96 Mutlak varlık drawdownı: 367.85
Brüt kâr: 3 525.74 Maksimum bakiye drawdownı: 483.90 (69.63%) Maksimum varlık drawdownı: 523.24 (71.95%)
Brüt zarar: -3 198.03 Relatif bakiye drawdownı: 69.63% (483.90) Relatif varlık drawdownı: 73.65% (369.45)
Kâr faktörü: 1.10 Beklenen getiri: 1.76 Marjin seviyesi: 317.21%
Düzelme faktörü: 0.63 Sharpe oranı: 0.08 Z skoru: 1.68 (90.70%)
AHPR: 1.0070 (0.70%) LR korelasyonu: 0.51 OnTester sonucu: 0
GHPR: 1.0027 (0.27%) LR standart hatası: 134.83
Toplam işlem: 186 Satış işlemleri (kârla kapanan %): 94 (42.55%) Alış işlemleri (kârla kapanan %): 92 (38.04%)
Toplam işlem parçası (giriş ve çıkış): 372 Kârla kapanan işlemler (toplamın % kaçı): 75 (40.32%) Zararla kapanan işlemler (toplamın % kaçı): 111 (59.68%)
En büyük kârla kapanan işlem: 85.26 En büyük zararla kapanan işlem: -264.99
Kârla kapanan işlemlerin ortalama kârı: 47.01 Zararla kapanan işlemlerin ortalama zararı: -28.81
En fazla işleme sahip ardışık kâr serisi ($): 5 (350.60) En fazla işleme sahip ardışık zarar serisi ($): 6 (-255.81)
En fazla kâra sahip ardışık kâr serisi (işlem sayısı): 350.60 (5) En fazla zarar sahip ardışık zarar serisi (işlem sayısı): -413.34 (5)
Ardışık kâr serilerinin ortalama işlem sayısı: 2 Ardışık zarar serilerinin ortalama işlem sayısı: 2

RSI'a dayalı zararı durdur kullanan Uzman Danışmanın bakiye eğrisi

Şekil 3.4. RSI'a dayalı zararı durdur kullanan Uzman Danışmanın bakiye eğrisi

Klasik zararı durdur kullanan Uzman Danışmanın sonuçları


Sonuçlar
Geçmiş kalitesi: 100%
Çubuklar: 20160 Tikler: 603385 Semboller: 1
Total net kâr: 3 672.06 Mutlak bakiye drawdownı: 215.45 Mutlak varlık drawdownı: 217.30
Brüt kâr: 10 635.21 Maksimum bakiye drawdownı: 829.54 (19.27%) Maksimum varlık drawdownı: 1 159.20 (25.59%)
Brüt zarar: -6 963.15 Relatif bakiye drawdownı: 48.76% (270.82) Relatif varlık drawdownı: 51.81% (303.90)
Kâr faktörü: 1.53 Beklenen getiri: 15.97 Marjin seviyesi: 274.21%
Düzelme faktörü: 3.17 Sharpe oranı: 0.16 Z skoru: -0.14 (11.13%)
AHPR: 1.0120 (1.20%) LR korelasyonu: 0.80 OnTester sonucu: 0
GHPR: 1.0093 (0.93%) LR standart hatası: 545.00
Toplam işlem: 230 Satış işlemleri (kârla kapanan %): 107 (44.86%) Alış işlemleri (kârla kapanan %): 123 (38.21%)
Toplam işlem parçası (giriş ve çıkış): 460 Kârla kapanan işlemler (toplamın % kaçı): 95 (41.30%) Zararla kapanan işlemler (toplamın % kaçı): 135 (58.70%)
En büyük kârla kapanan işlem: 392.11 En büyük zararla kapanan işlem: -219.95
Kârla kapanan işlemlerin ortalama kârı: 111.95 Zararla kapanan işlemlerin ortalama zararı: -51.58
En fazla işleme sahip ardışık kâr serisi ($): 6 (1 134.53) En fazla işleme sahip ardışık zarar serisi ($): 9 (-211.43)
En fazla kâra sahip ardışık kâr serisi (işlem sayısı): 1 134.53 (6) En fazla zarar sahip ardışık zarar serisi (işlem sayısı): -809.21 (4)
Ardışık kâr serilerinin ortalama işlem sayısı: 2 Ardışık zarar serilerinin ortalama işlem sayısı: 2


Klasik zararı durdur kullanan Uzman Danışmanın bakiye eğrisi

Şekil 3.5. Klasik zararı durdur kullanan Uzman Danışmanın bakiye eğrisi


Değerlendirme

Sonuçlara bakıldığında, her iki Uzman Danışmanın da işlem döneminin sonunda kârlı olmasına rağmen, ilk Uzman Danışmanın (RSI'a dayalı zararı durdur kullanan) bazıları büyük olmak üzere daha az sayıda zarara sahip olduğu gözlemlenebilir.

RSI'a dayalı zararı durdur kullanan Uzman Danışmanın varlık eğrisi

Şekil 3.6. RSI'a dayalı zararı durdur kullanan Uzman Danışmanın varlık eğrisi

Bu zararlar, Uzman Danışmanın genel karlılığını ve ayrıca uygun para yönetimini etkileyebilir. Öte yandan, klasik zararı durdur kullanan Uzman Danışman, daha fazla sayıda zarara sahip olmasına rağmen işlem döneminin sonunda daha fazla para kazanmış oldu.


Sonuç

Para yönetimi gerçekten de ticaretin kutsal kasesidir. Yukarıdaki deney, tam olarak uygulanan para yönetiminin, daha fazla sayıda zarara rağmen daha büyük miktarda kâr getirdiğini göstermiştir. Bunun nedeni ticaret istikrarıdır. Ancak, zararı durdurun RSI'a dayalı olması, risk miktarı değiştiğinden, ilk Uzman Danışman (RSI'a dayalı zararı durdur kullanan) için tam olarak aynı istikrarı sağlamamıştır.

Öneri

İlk Uzman Danışmandaki (RSI'a dayalı zararı durdur kullanan) zararları azaltmanın bir yolu hedging olabilir. Bu, daha istikrarlı bir risk miktarı sağlayabilir ve uzun vadede kârı artırabilir.


Okuduğunuz için teşekkürler!

MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/9827

Ekli dosyalar |
Linux'ta MetaTrader 4 Linux'ta MetaTrader 4
Bu makalede, MetaTrader 4'i popüler Linux sürümleri olan Ubuntu ve Debian'a kolay bir şekilde nasıl kurabileceğinizi göstereceğiz. Bu sistemler yalnızca sunucularda değil, aynı zamanda yatırımcılar tarafından kişisel bilgisayarlarda da yaygın olarak kullanılmaktadır.
Hareketli ortalamalara dayalı sistemler nasıl geliştirilir? Hareketli ortalamalara dayalı sistemler nasıl geliştirilir?
Herhangi bir ticaret sistemi tarafından üretilen sinyalleri filtrelemenin birçok farklı stratejisi vardır. Muhtemelen bunların en basiti hareketli ortalama kullanmaktır. Bu makalede, bazı hareketli ortalama stratejilerinin nasıl kullanılacağını ve onlar için algoritmik ticaret sistemlerini nasıl tasarlayacağımızı öğreneceğiz.
Bir grafikte birden fazla gösterge (Bölüm 01): Kavramları anlama Bir grafikte birden fazla gösterge (Bölüm 01): Kavramları anlama
Bugün, ayrı bir alan işgal etmeyecek şekilde grafiğe nasıl birkaç gösterge ekleyebileceğinizi inceleyeceğiz. Ticaret işlemi gerçekleştirirken, birçok yatırımcı aynı anda birden fazla göstergeyi (örneğin, RSI, STOCHASTIC, MACD, ADX vb.) ve hatta bazı durumlarda endeksi oluşturan farklı varlıkları takip ettiklerinde kendilerini daha güvende hissederler.
Sıfırdan bir ticaret Uzman Danışmanı geliştirme Sıfırdan bir ticaret Uzman Danışmanı geliştirme
Bu makalede minimum derecede programlamayla bir ticaret robotunun nasıl geliştirileceğini ele alacağız. MetaTrader 5 elbette ticaret işlemleri üzerinde yüksek düzeyde kontrol sağlamaktadır. Ancak, yalnızca manuel olarak emir verme yeteneğinin kullanılması, daha az deneyimli kullanıcılar için oldukça zor ve riskli olabilir.