0 beğenilme 0 beğenilmeme
81 kez görüntülendi
sizden ricam tradingView de olan bu kod indikatör olrak yapmak indikator olmuyorsa bu kodlar ile expoler taramasını yapabilirmisiniz

indicator("Dynamic Risk-Adjusted Performance Ratios with Table", "DRPRT | [DeV]", overlay=false)

method calc(float src, int len) =>
    array<float> a_prtr = array.new<float>()
    array<float> a_nrtr = array.new<float>()
    array<float> a_rtr  = array.new<float>()
    float rtr = src / src[1] - 1

    for i = 0 to len - 1
        if rtr[i] < 0.
            a_nrtr.push(rtr[i])
        else    
            a_prtr.push(rtr[i])

        a_rtr.push(rtr[i])

    // Sharpe Ratio
    var float srp = na
    if array.size(a_rtr) > 0
        srp := array.avg(a_rtr) / array.stdev(a_rtr) * math.sqrt(len)
        srp := math.round(srp, 2)

    // Sortino Ratio
    var float srt = na
    if array.size(a_nrtr) > 0
        srt := array.avg(a_rtr) / array.stdev(a_nrtr) * math.sqrt(len)
        srt := math.round(srt, 2)

    // Omega Ratio
    var float omg = na
    if array.size(a_nrtr) > 0
        omg := array.sum(a_prtr) / math.abs(array.sum(a_nrtr))
        omg := math.round(omg, 2)

    [srp, srt, omg]

var string gc = "Calculation", var string gp = "Display"
src   = input.source(close, "Source", group=gc)
len   = input.int(30, "Period", group=gc)
blsrp = input.bool  (true , "Sharpe"   , group = gp)
blstn = input.bool  (true , "Sortino"  , group = gp)
blomg = input.bool  (true , "Omega"    , group = gp)
blmid = input.bool  (true , "Zero Line", group = gp)
var ratiosTable = table.new(position.middle_right, 4, 16, bgcolor=color.new(color.silver, 90))

if bar_index == 0
    table.cell(ratiosTable, 0, 0, "Asset", text_color=color.white, bgcolor=color.new(color.blue, 80), text_formatting=text.format_bold)
    table.cell(ratiosTable, 1, 0, "Sharpe", text_color=color.white, bgcolor=color.new(color.blue, 80), text_formatting=text.format_bold)
    table.cell(ratiosTable, 2, 0, "Sortino", text_color=color.white, bgcolor=color.new(color.blue, 80), text_formatting=text.format_bold)
    table.cell(ratiosTable, 3, 0, "Omega", text_color=color.white, bgcolor=color.new(color.blue, 80), text_formatting=text.format_bold)

[asset1_srp, asset1_srt, asset1_omg] = calc(request.security(asset1, timeframe.period, src), len)
[asset2_srp, asset2_srt, asset2_omg] = calc(request.security(asset2, timeframe.period, src), len)
[asset3_srp, asset3_srt, asset3_omg] = calc(request.security(asset3, timeframe.period, src), len)
[asset4_srp, asset4_srt, asset4_omg] = calc(request.security(asset4, timeframe.period, src), len)
[asset5_srp, asset5_srt, asset5_omg] = calc(request.security(asset5, timeframe.period, src), len)
[asset6_srp, asset6_srt, asset6_omg] = calc(request.security(asset6, timeframe.period, src), len)
[asset7_srp, asset7_srt, asset7_omg] = calc(request.security(asset7, timeframe.period, src), len)
[asset8_srp, asset8_srt, asset8_omg] = calc(request.security(asset8, timeframe.period, src), len)
[asset9_srp, asset9_srt, asset9_omg] = calc(request.security(asset9, timeframe.period, src), len)
[asset10_srp, asset10_srt, asset10_omg] = calc(request.security(asset10, timeframe.period, src), len)
[asset11_srp, asset11_srt, asset11_omg] = calc(request.security(asset11, timeframe.period, src), len)
[asset12_srp, asset12_srt, asset12_omg] = calc(request.security(asset12, timeframe.period, src), len)
[asset13_srp, asset13_srt, asset13_omg] = calc(request.security(asset13, timeframe.period, src), len)
[asset14_srp, asset14_srt, asset14_omg] = calc(request.security(asset14, timeframe.period, src), len)
[asset15_srp, asset15_srt, asset15_omg] = calc(request.security(asset15, timeframe.period, src), len)

getAssetName(asset) =>
    array.get(str.split(asset, ":"), 1)

for i = 1 to 15
    var float srp = na
    var float srt = na
    var float omg = na
    asset = ""

    if i == 1
        srp := asset1_srp
        srt := asset1_srt
        omg := asset1_omg
        asset := getAssetName(asset1)
    else if i == 2
        srp := asset2_srp
        srt := asset2_srt
        omg := asset2_omg
        asset := getAssetName(asset2)
    else if i == 3
        srp := asset3_srp
        srt := asset3_srt
        omg := asset3_omg
        asset := getAssetName(asset3)
    else if i == 4
        srp := asset4_srp
        srt := asset4_srt
        omg := asset4_omg
        asset := getAssetName(asset4)
    else if i == 5
        srp := asset5_srp
        srt := asset5_srt
        omg := asset5_omg
        asset := getAssetName(asset5)
    else if i == 6
        srp := asset6_srp
        srt := asset6_srt
        omg := asset6_omg
        asset := getAssetName(asset6)
    else if i == 7
        srp := asset7_srp
        srt := asset7_srt
        omg := asset7_omg
        asset := getAssetName(asset7)
    else if i == 8
        srp := asset8_srp
        srt := asset8_srt
        omg := asset8_omg
        asset := getAssetName(asset8)
    else if i == 9
        srp := asset9_srp
        srt := asset9_srt
        omg := asset9_omg
        asset := getAssetName(asset9)
    else if i == 10
        srp := asset10_srp
        srt := asset10_srt
        omg := asset10_omg
        asset := getAssetName(asset10)
    else if i == 11
        srp := asset11_srp
        srt := asset11_srt
        omg := asset11_omg
        asset := getAssetName(asset11)
    else if i == 12
        srp := asset12_srp
        srt := asset12_srt
        omg := asset12_omg
        asset := getAssetName(asset12)
    else if i == 13
        srp := asset13_srp
        srt := asset13_srt
        omg := asset13_omg
        asset := getAssetName(asset13)
    else if i == 14
        srp := asset14_srp
        srt := asset14_srt
        omg := asset14_omg
        asset := getAssetName(asset14)
    else if i == 15
        srp := asset15_srp
        srt := asset15_srt
        omg := asset15_omg
        asset := getAssetName(asset15)

    table.cell(ratiosTable, 0, i, asset, text_color=color.white, bgcolor=color.new(color.blue, 80), text_formatting=text.format_italic)
    table.cell(ratiosTable, 1, i, str.tostring(srp), text_color=#228833)
    table.cell(ratiosTable, 2, i, str.tostring(srt), text_color=#cf5151)
    table.cell(ratiosTable, 3, i, str.tostring(omg), text_color=#c09b20)

[srp, srt, omg] = src.calc(len)
hline(blmid ? 0 : na, "Zero Line", color=color.new(color.gray, 0))
plot(blsrp ? math.round(srp, 2) : na, "Sharpe Ratio", color=#228833, precision = 2)
plot(blstn ? math.round(srt, 2) : na, "Sortino Ratio", color=#cf5151, precision = 2)
plot(blomg ? math.round(omg, 2) : na, "Omega Ratio", color=#c09b20, precision = 2)
Dashboard kategorisinde (46 puan) tarafından | 81 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
Merhaba

Döngü içeren formüller maalesef metastock dilinde çevrilememektedir.

Bilgilerinize.
(5,910 puan) tarafından
9,524 soru
9,479 cevap
5,127 yorum
40,902 kullanıcı