lcenovsky

COT Index by cendalc

צפיות ‎2807‎
531
2807 19
Legacy and disaggregated COT index for several commodities I trade:
ZC , ZW, ZS, ZL, ZM, HG, GC , SI, CC , KC, CT , OJ, SB , CL , HO, NG

Available indexes:
  • Commercials Index
  • Large traders Index
  • Producers Index
  • Managed Money Index

Data is taken from Quandl: https://www.quandl.com/data/CFTC

Default week period is 26 except for CC , KC, CT , OJ, SB , CL , HO and NG where it is 13. You can set your own period.

Works correctly on weekly and daily data. Daily length is correctly computed from trade days in weeks.

Displays the previous cot index for the current week if COT report has not yet been published.

הסר מסקריפטים מועדפים הוסף לסקריפטים מועדפים
//@version=2
study("COT Index by cendalc", shorttitle="COT Index", precision=1)

qticker =
     syminfo.root == "ZC" ? "C"  :
     syminfo.root == "ZW" ? "W"  :
     syminfo.root == "ZS" ? "S"  :
     syminfo.root == "ZL" ? "BO" :
     syminfo.root == "ZM" ? "SM" :
     syminfo.root == "HG" ? "HG" :
     syminfo.root == "GC" ? "GC" :
     syminfo.root == "SI" ? "SI" :
     syminfo.root == "CC" ? "CC" :
     syminfo.root == "KC" ? "KC" :
     syminfo.root == "CT" ? "CT" :
     syminfo.root == "OJ" ? "OJ" :
     syminfo.root == "SB" ? "SB" :
     syminfo.root == "CL" ? "CL" :
     syminfo.root == "HO" ? "HO" :
     syminfo.root == "NG" ? "NG" :
     ""

force_length = input(0, title="Weeks (0 = automatic)")

length =
     force_length != 0 ? force_length :
     syminfo.root == "CC" ? 13 :
     syminfo.root == "KC" ? 13 :
     syminfo.root == "CT" ? 13 :
     syminfo.root == "OJ" ? 13 :
     syminfo.root == "SB" ? 13 :
     syminfo.root == "CL" ? 13 :
     syminfo.root == "HO" ? 13 :
     syminfo.root == "NG" ? 13 :
     26

GetDailyAdjustment(weeks) =>
    weekCount = weeks
    daily_adjust = 1
    tmp = for i = 0 to (length * 5)
        weekCount := weekCount - iff(dayofweek[i] < dayofweek[i+1], 1, 0)
        if weekCount <= 0
            break
        daily_adjust := daily_adjust + 1
    daily_adjust

Highest(x, y) =>
    ret = x
    for i = 1 to y-1
        ret := max(ret, x[i])

Lowest(x, y) =>
    ret = x
    for i = 1 to y-1
        ret := min(ret, x[i])


legacy_cot = "QUANDL:CFTC/" + qticker + "_FO_L_ALL|"
cot = "QUANDL:CFTC/" + qticker + "_FO_ALL|"

oi = security(legacy_cot + "0", "W", close)

no_cot_adjst = oi == oi[1] ? 1 : 0
length_adjst = isdaily ? GetDailyAdjustment(length + no_cot_adjst) : length + no_cot_adjst

comm_lg = security(legacy_cot + "4", "W", close)
comm_sh = security(legacy_cot + "5", "W", close)
comm_net = comm_lg - comm_sh

large_lg = security(legacy_cot + "1", "W", close)
large_sh = security(legacy_cot + "2", "W", close)
large_net = large_lg - large_sh

other_lg = security(legacy_cot + "8", "W", close)
other_sh = security(legacy_cot + "9", "W", close)
other_net = other_lg - other_sh

comm_max = Highest(comm_net, length_adjst)
comm_min = Lowest(comm_net, length_adjst)
comm_idx = if (dayofweek > nz(dayofweek[1]))
    comm_idx[1]
else
    100 * (comm_net - comm_min) / (comm_max - comm_min)

large_max = Highest(large_net, length_adjst)
large_min = Lowest(large_net, length_adjst)
large_idx = if (dayofweek > nz(dayofweek[1]))
    large_idx[1]
else
    100 * (large_net - large_min) / (large_max - large_min)

prod_lg = security(cot + "1", "W", close)
prod_sh = security(cot + "2", "W", close)
prod_net = prod_lg - prod_sh

manag_lg = security(cot + "6", "W", close)
manag_sh = security(cot + "7", "W", close)
manag_net = manag_lg - manag_sh

prod_max = Highest(prod_net, length_adjst)
prod_min = Lowest(prod_net, length_adjst)
prod_idx = if (isdaily and (dayofweek > nz(dayofweek[1])))
    prod_idx[1]
else
    100 * (prod_net - prod_min) / (prod_max - prod_min)

manag_max = Highest(manag_net, length_adjst)
manag_min = Lowest(manag_net, length_adjst)
manag_idx = if (dayofweek > nz(dayofweek[1]))
    manag_idx[1]
else
    100 * (manag_net - manag_min) / (manag_max - manag_min)

plot(comm_idx, color=blue, title="Commercials Index", style=line, linewidth=2)
plot(large_idx, color=green, title="Large traders Index", style=line, linewidth=1)
plot(prod_idx, color=aqua, title="Producers Index", style=line, linewidth=2)
plot(manag_idx, color=lime, title="Managed Money Index", style=line, linewidth=1)
Hi guys I updated it with new quandl codes

https://www.tradingview.com/u/abro163/#published-scripts
השב
Ondrej_L abro163
@abro163, Good job thank you :)
השב
Jimmi00 abro163
@abro163, Thanks a lot!
השב
Hi, I experienced the same problem and no data are shown. What we can do?
+2 השב
Hi, since two days my COT Data and index show no data, just N/A. I have not changed anything. What can be the problém?
+2 השב
Hi,
great job, this is exactly what I was looking for. The only thing I miss is meats(Hogs/Cattle). Is it possible to add it?
I tried to add syminfo.root == "LE" ? "LE" : but it did not work. I am not a programmer, I just tried :-)
Can you help mo with this, please?
+1 השב
@godi13, I cannot edit the script anymore - no idea why.
You need to add correct quandl mapping:

syminfo.root == "LE" ? "LC" :
syminfo.root == "GF" ? "FC" :
syminfo.root == "HE" ? "LN" :
השב
godi13 lcenovsky
@lcenovsky, yes, that was the trick, different symbols LE/LC etc.
Thanks a lot
השב
yarimedici lcenovsky
@lcenovsky, Hi! I can't get it to work with Gold
Can you tell me how to add it?
השב
lcenovsky yarimedici
@yarimedici, gold is there already (GC)
השב
בית סורק מניות סורק מט"ח סורק מטבעות-קריפטו יומן כלכלי איך זה עובד‏ תכונות גרף מחירון חוקי הבית מנהלים כלים לאתרים וברוקרים יישומונים פתרונות גרפים קבל עזרה בקשת פונקציה בלוג & וחדשות שאלות נפוצות ויקי טוויטר‏
פרופיל הגדרות פרופיל חשבון וחיוב קבל עזרה רעיונות שפורסמו עוקבים עוקב אחרי... הודעות פרטיות צ'אט התנתק