Popularni Postovi

Izbor Urednika - 2019

MQL4: Izračun statističkih koeficijenata i njihova upotreba za optimizaciju savjetnika

Pozdrav prijatelji!

Postoji prilično nekoliko različitih statističkih koeficijenata koji odražavaju jedan ili drugi aspekt kvalitete trgovinskog sustava. A što će se dogoditi ako optimiziramo TS na temelju vrijednosti bilo kojeg od tih koeficijenata? Danas ćemo se pozabaviti tim pitanjem u novoj lekciji programiranja.

Kriterij prilagođene optimizacije

Srećom, MetaTrader pruža mogućnost testiranja savjetnika koristeći prilagođene kriterije optimizacije. Ovu funkciju možete pronaći u "Svojstva stručnog savjetnika" na kartici "Ispitivanje":

Sam parametar u vezi s kojim dolazi do optimizacije izračunava se u tijelu stručnjaka pomoću posebne metode onTester ().

Omjer lignje

Evo izračuna klasičnog koeficijenta lignje:

dvostruki OnTester () {double AvProfit = 0; dvostruki Kalmar = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) {AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_TRADES), znamenke); Kalmar = NormalizeDouble (AvProfit / TesterStatistics (STAT_BALANCE_DD), znamenke); } povratak (Kalmar); }

Taj je koeficijent posebno izmišljen za procjenu učinkovitosti određene trgovačke strategije trgovca. Prema mišljenju mnogih investitora, to rješava prilično složene probleme pri odabiru investicijskog objekta.

Prvi put koeficijent lignje autor jednog od najpoznatijih časopisa o razmjeni terminskog poslovanja predstavio je autor kolumne zaklade i ulaganja u hedge fondove, Terry Young. Ovaj se pokazatelj temelji na konceptu koji je trgovcima dobro poznat kao povlačenje.

Glavni nedostatak ovog pokazatelja je taj što se rizik određuje samo jednim događajem (maksimalno povlačenje), čime se umanjuje njegova statistička značajnost i reprezentativnost. Korištenje maksimalnog odstupanja kao jedinstvene procjene rizika može dovesti do pristranosti u procjeni rezultata zbog emisija. Stoga možete malo izmijeniti formulu unosom dodatnih podataka:

dvostruki OnTester () {double AvProfit = 0; dvostruki Kalmar = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) {AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_TRADES), znamenke); } Kalmar = NormalizeDouble (-AvProfit * (TesterStatistics (STAT_CONPROFITMAX_TRADES) / TesterStatistics (STAT_TRADES)) / (TesterStatistics (STAT_MAX_LOSSTRADE) * (TesterStatistics (STAT_CONLOSSMAX_TRADES) povratak (Kalmar); }

Sortino koeficijent

Za ocjenu sustava trgovanja koriste se različite metrike. Svaki od njih usmjeren je na prepoznavanje jednog ili drugog faktora, a jedan od takvih pokazatelja je Sortino koeficijent.

Sortino koeficijent uobičajeno je koristiti u slučajevima kada nas zanima širenje negativnih vrijednosti prinosa. Metoda izračuna vrlo je slična izračunu omjera Sharpe. Ako se za omjer Sharpe koriste i pozitivni i negativni prinosi, tada se za Sortino koeficijent koriste samo negativne vrijednosti.

Vrijedno je napomenuti da je Harry Markowitz, koji je razvio modernu teoriju portfelja, napomenuo važnost korištenja negativnih odstupanja kao mjere rizika. Pozitivan povrat uvijek ima pozitivan učinak za investitora, ali negativan predstavlja negativan utjecaj i treba ga proučiti.

Napišemo kod koji će izračunati i vratiti vrijednost Sortino koeficijenta:

dvostruki OnTester () {double AvProfit = 0; dvostruki Sortino = 0; dvostruki AvLoss = 0; dvostruki MaxLoss = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_PROFIT_TRADES), znamenke); AvLoss = NormalizeDouble (TesterStatistics (STAT_GROSS_LOSS) / TesterStatistics (STAT_LOSS_TRADES), znamenke); MaxLoss = NormalizeDouble (TesterStatistika (STAT_MAX_LOSSTRADE), znamenke); Sortino = NormalizeDouble ((((AvProfit-MaxLoss) / - AvLoss), znamenke); povratak (Sortino); }

Trenerski koeficijent

Trenerski koeficijent (Treynor 1965.) se također naziva omjer nagrade i volatilnosti i predstavlja omjer viška prinosa tržišnom riziku. Za razliku od Sharpe-ovog omjera, profitabilnost u ovom pokazatelju nije u korelaciji s općim rizikom, već samo sa sustavnim (nediverzibilnim).

Što su veće vrijednosti pokazatelja Trainor, to će se učinkovitije upravljati investicijskim portfeljem, pa su odabrane strategije koje imaju najviše vrijednosti Trainor indikatora. Ovaj se pokazatelj obično koristi za izgradnju ocjena portfelja.

Pogledajmo kod:

dvostruki OnTester () {double AvProfit = 0; dvostruki Treynor = 0; dvostruki AvLoss = 0; dvostruki MaxProfit = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_PROFIT_TRADES), znamenke); AvLoss = NormalizeDouble (TesterStatistics (STAT_GROSS_LOSS) / TesterStatistics (STAT_LOSS_TRADES), znamenke); MaxProfit = NormalizeDouble (TesterStatistika (STAT_MAX_PROFITTRADE), znamenke); Treynor = NormalizeDouble ((((AvProfit-MaxProfit) / - AvLoss), znamenke); povratak (Treynor); }

Oštri omjer

Oštri omjer smislio poznati američki ekonomist - William Sharp. Danas je to jedan od najčešće korištenih pokazatelja omjera rizika i povrata. Više o oštrinu omjera možete pročitati u zasebnom članku. Pa, pogledamo kod:

dvostruki OnTester () {double AvProfit = 0; dvostruko oštar = 0; dvostruki ObLoss = 0; dvostruki MaxProfit = 0; if (TesterStatistics (STAT_PROFIT_TRADES)> 0) AvProfit = NormalizeDouble (TesterStatistics (STAT_GROSS_PROFIT) / TesterStatistics (STAT_PROFIT_TRADES), znamenke); MaxProfit = NormalizeDouble (TesterStatistika (STAT_MAX_PROFITTRADE), znamenke); ObLoss = NormalizeDouble (TesterStatistika (STAT_GROSS_LOSS), znamenke); Oštar = NormalizeDouble (((AvProfit-MaxProfit) / - ObLoss), znamenke); povratak (Oštar); }

Zaključak

Dakle, možete optimizirati bilo koju statistiku svojih trgovačkih stručnjaka, koristeći formule različitih općeprihvaćenih statističkih koeficijenata, kao i pisanje vlastitih.

Pogledajte video: Robot Building Tutorials #6 - Intro to MQL4 (Listopad 2019).

Ostavite Komentar