커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

부틱드립니다

수고하십니다 트레이딩 뷰 수식입니다. 예스로적용가능하도록 부탁 드립니다. //@version=3 // strategy(title = "Open Close Cross Strategy R5.1 revised by JustUncleL", shorttitle = "OCC Strategy R5.1", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, calc_on_every_tick=false) // // Revision: 5 // Original Author: @JayRogers // Revision Author: JustUncleL revisions 3, 4, 5 // // *** USE AT YOUR OWN RISK *** // - There are drawing/painting issues in pineo when working across resolutions/timeframes that I simply // cannot fix here.. I will not be putting any further effort into developing this until such a time when // workarounds become available. // NOTE: Re-painting has been observed infrequently with default settings and seems OK up to Alternate // multiplier of 5. // Non-repainting mode is available by setting "Delay Open/Close MA" to 1 or more, but the reported // performance will o dramatically. // // R5.1 Changes by JustUncleL // - Upgraded to Version 3 Pineo. // - Added option to Trade type (Long, Short, Both or None) // - Added bar colouring work around patch. // - Small code changes to improve efficiency. // - NOTE: To enable non-Repainting mode set "Delay Open/Close MA" to 1 or more. // 9-Aug-2017 // - Correction on SuperSmooth MA calculation. // // R5 Changes by JustUncleL // - Corrected cross over calculations, sometimes gave false signals. // - Corrected Alternate Time calculation to allow for Daily,Weekly and Monthly charts. // - Open Public release. // R4 Changes By JustUncleL // - Change the way the Alternate resolution in oed, use a Multiplier of the base Time Frame instead, // this makes it easy to switch between base time frames. // - Added TMA and SSMA moving average options. But DEMA is still giving the best results. // - Using "calc_on_every_tick=false" ensures results between backtesting and real time are similar. // - Added Option to Disable the coloring of the bars. // - od default settings. // // R3 Changes by JustUncleL: // - Returned a simplified version of the open/close channel, it shows strength of current trend. // - Added Target Profit Option. // - Added option to reduce the number of historical bars, overcomes the too many trades limit error. // - Simplified the strategy code. // - Removed Trailing Stop option, not required and in my opion does not work well in Trading View, // it also gives false and unrealistic performance results in backtesting. // // R2 Changes: // - Simplified and cleaned up plotting, now just shows a Moving Average derived from the average of open/close. // - Tried very hard to alleviate painting issues caused by referencing alternate resolution.. // // Deoion: // - Strategy based around Open-Close Crossovers. // Setup: // - I have generally found that setting the strategy resolution to 3-4x that of the chart you are viewing // tends to yield the best results, regardless of which MA option you may choose (if any) BUT can cause // a lot of false positives - be aware of this // - Don't aim for perfection. Just aim to get a reasonably snug fit with the O-C band, with good runs of // green and red. // - Option to either use basic open and close series data, or pick your poison with a wide array of MA types. // - Optional trailing stop for damage mitigation if desired (can be toggled on/off) // - Positions get taken automagically following a crossover - which is why it's better to set the resolution // of the o greater than that of your chart, so that the trades get taken sooner rather than later. // - If you make use of the stops, be sure to take your time tweaking the values. Cutting it too fine // will cost you profits but keep you safer, while letting them loose could lead to more drawdown than you // can handle. // - To enable non-Repainting mode set "Delay Open/Close MA" to 1 or more. // // === INPUTS === useRes = input(defval = true, title = "Use Alternate Resolution?") intRes = input(defval = 3, title = "Multiplier for Alernate Resolution") stratRes = ismonthly? tostring(interval*intRes,"###M") : isweekly? tostring(interval*intRes,"###W") : isdaily? tostring(interval*intRes,"###D") : isintraday ? tostring(interval*intRes,"####") : '60' basisType = input(defval = "SMMA", title = "MA Type: ", options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "HullMA", "LSMA", "ALMA", "SSMA", "TMA"]) basisLen = input(defval = 8, title = "MA Period", minval = 1) offsetSigma = input(defval = 6, title = "Offset for LSMA / Sigma for ALMA", minval = 0) offsetALMA = input(defval = 0.85, title = "Offset for ALMA", minval = 0, step = 0.01) scolor = input(false, title="Show coloured Bars to indicate Trend?") delayOffset = input(defval = 0, title = "Delay Open/Close MA (Forces Non-Repainting)", minval = 0, step = 1) tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"]) // === /INPUTS === // Constants colours that include fully non-transparent option. green100 = #008000FF lime100 = #00FF00FF red100 = #FF0000FF blue100 = #0000FFFF aqua100 = #00FFFFFF darkred100 = #8B0000FF gray100 = #808080FF // === BASE FUNCTIONS === // Returns MA input oion variant, default to SMA if blank or typo. variant(type, src, len, offSig, offALMA) => v1 = sma(src, len) // Simple v2 = ema(src, len) // Exponential v3 = 2 * v2 - ema(v2, len) // Double Exponential v4 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) // Triple Exponential v5 = wma(src, len) // Weighted v6 = vwma(src, len) // Volume Weighted v7 = 0.0 v7 := na(v7[1]) ? sma(src, len) : (v7[1] * (len - 1) + src) / len // Smoothed v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) // Hull v9 = linreg(src, len, offSig) // Least Squares v10 = alma(src, len, offALMA, offSig) // Arnaud Legoux v11 = sma(v1,len) // Triangular (extreme smooth) // SuperSmoother filter // &#169; 2013 John F. Ehlers a1 = exp(-1.414*3.14159 / len) b1 = 2*a1*cos(1.414*3.14159 / len) c2 = b1 c3 = (-a1)*a1 c1 = 1 - c2 - c3 v12 = 0.0 v12 := c1*(src + nz(src[1])) / 2 + c2*nz(v12[1]) + c3*nz(v12[2]) type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : type=="SMMA"?v7 : type=="HullMA"?v8 : type=="LSMA"?v9 : type=="ALMA"?v10 : type=="TMA"?v11: type=="SSMA"?v12: v1 // security wrapper for repeat calls reso(exp, use, res) => use ? security(tickerid, res, exp, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on) : exp // === /BASE FUNCTIONS === // === SERIES SETUP === closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA) openSeries = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA) // === /SERIES === // === PLOTTING === // Get Alternate resolution Series if oed. closeSeriesAlt = reso(closeSeries, useRes, stratRes) openSeriesAlt = reso(openSeries, useRes, stratRes) // trendColour = (closeSeriesAlt > openSeriesAlt) ? green : red bcolour = (closeSeries > openSeriesAlt) ? lime100 : red100 barcolor(scolor?bcolour:na, title = "Bar Colours") closeP=plot(closeSeriesAlt, title = "Close Series", color = trendColour, linewidth = 2, style = line, transp = 20) openP=plot(openSeriesAlt, title = "Open Series", color = trendColour, linewidth = 2, style = line, transp = 20) fill(closeP,openP,color=trendColour,transp=80) // === /PLOTTING === // // // === ALERT conditions xlong = crossover(closeSeriesAlt, openSeriesAlt) xshort = crossunder(closeSeriesAlt, openSeriesAlt) longCond = xlong // alternative: longCond[1]? false : (xlong or xlong[1]) and close>closeSeriesAlt and close>=open shortCond = xshort // alternative: shortCond[1]? false : (xshort or xshort[1]) and close<closeSeriesAlt and close<=open // === /ALERT conditions. // === STRATEGY === // stop loss slPoints = input(defval = 0, title = "Initial Stop Loss Points (zero to disable)", minval = 0) tpPoints = input(defval = 0, title = "Initial Target Profit Points (zero for disable)", minval = 0) // Include bar limiting algorithm ebar = input(defval = 10000, title="Number of Bars for Back Testing", minval=0) dummy = input(false, title="- SET to ZERO for Daily or Longer Timeframes" ) // // Calculate how many mars since last bar tdays = (timenow-time)/60000.0 // number of minutes since last bar tdays := ismonthly? tdays/1440.0/5.0/4.3/interval : isweekly? tdays/1440.0/5.0/interval : isdaily? tdays/1440.0/interval : tdays/interval // number of bars since last bar // //set up exit parameters TP = tpPoints>0?tpPoints:na SL = slPoints>0?slPoints:na // Make sure we are within the bar range, Set up entries and exit conditions if ((ebar==0 or tdays<=ebar) and tradeType!="NONE") strategy.entry("long", strategy.long, when=longCond==true and tradeType!="SHORT") strategy.entry("short", strategy.short, when=shortCond==true and tradeType!="LONG") strategy.close("long", when = shortCond==true and tradeType=="LONG") strategy.close("short", when = longCond==true and tradeType=="SHORT") strategy.exit("XL", from_entry = "long", profit = TP, loss = SL) strategy.exit("XS", from_entry = "short", profit = TP, loss = SL) // === /STRATEGY === // eof
프로필 이미지
파생돌이
2024-09-22
1134
글번호 183609
지표
답변완료

해외선물 결제월물이 바뀌었을 때 과거 데이터는 어떻게 처리되는지요?

어디에 물어봐야 될지 모르겠지만 먼저 여기에 질의를 해봅니다. 결제월물이 바뀌면 과거의 데이터를 어떻게 가지고 오는지 모르겠지만 같은 로직으로 돌려 보는데도 과거의 시뮬레이션 값이 달라지는데 원인이 무엇인지요? 과거의 챠트 데이터는 변화가 없어야 맞는 거 같은데.... 9월20일은 9월물이 마감되는 날입니다. 12월물은 9월20일 며칠전에 거래가 되었구요. 9월물에 사용된 로직을 가지고 4월21일~9월20까지 시뮬레이션을 돌리면 총손익이 9,218.25P나오고, 같은 로직으로 같은 시뮬레이션 기간에 대한 12월물을 돌리면 총손익이 1,222P 나옵니다. 지나간 데이터는 변화될 수 없는 것이기 때문에 12월물이 시작된 부분만 값이 달라야되는 것이 상식적으로 맞는 거 같은데 너무나 다른 결과가 나오는 이유를 알고 싶습니다.
프로필 이미지
하날랑
2024-09-21
481
글번호 183608
시스템

남한산성 님에 의해서 삭제되었습니다.

프로필 이미지
남한산성
2024-09-21
262
글번호 183607
시스템
답변완료

지표변환문의드립니다

안녕하세요. 키움 지표를 변환하려고 하는데 안되어서요. 문의드립니다. countsince(c!=c(1),if(v>number1 and v<number2,1,0)) number1과 number2는 지표조건설정에서 지정하는 값입니다. 너무 어렵네요. 미리감사드립니다. 수고하십시오.
프로필 이미지
cometrue
2024-09-21
621
글번호 183606
지표
답변완료

rsi 수식좀 알려주세요

제가 kb증권의 rsi 지표를 그대로 사용하고싶은데 계산식이 아래와 같이 나와있던데 이대로 수식 사용할수있도록 좀 알려주세요 RSI = 100 - 100/(1+RS) * RS = n일간종가평균상승폭 / n일간종가평균하락폭 기본설정값: 14일
프로필 이미지
bhjgf
2024-09-20
619
글번호 183605
지표
답변완료

문의드립니다

틱차트에서 진입후 경과봉수가 몇개이상일때만 진입이나 청산하는 수식 부탁드립니다.
프로필 이미지
lacl
2024-09-20
573
글번호 183604
시스템
답변완료

예스트레이더로 종목을 검색하고 싶습니다.

아래 수식으로 종목검색을 하고 싶습니다. M5=ma(c,5); M20=ma(c,20); 크로스업=crossup(M5,M20); HH=highestsince(1,크로스업,H); H_High= valuewhen(1,HH==HH(1) && HH>H,HH); LL=if(M20>L,1,0); L_sum=sum(LL); Ls= L_sum-valuewhen(1,크로스업,L_sum(1)); 조건=crossup(c,H_High) && Ls>0; cnt=countsince(크로스업,조건)==1; cnt && !cnt(1)
프로필 이미지
초보주린
2024-09-20
435
글번호 183603
종목검색

타요 님에 의해서 삭제되었습니다.

프로필 이미지
타요
2024-09-20
42
글번호 183602
종목검색

그냥저냥 님에 의해서 삭제되었습니다.

프로필 이미지
그냥저냥
2024-09-20
47
글번호 183601
사용자 함수
답변완료

문의드립니다

수고많으십니다 문의드릴 내용은 볼린져밴드 시스템을 부탁드립니다 매수진입 매도청산 캔들이 하단밴드 아래에서 3개봉이상 만들어지고(최적화 가능하도록부탁드립니다) 하단밴드 상승돌파 한 뒤 하단밴드 위에 4개봉이 (최적화 가능하도록부탁드립니다) 만들어지면 매수진입 매도청산 매수청산; 매수 진입하여 볼밴 상단선보다 20틱이상 상승하면 매수청산(최적화 가능하도록부탁드립니다) 매도진입 매수청산 캔들이 상단밴드 위에서 3개봉이상 만들어지고(최적화 가능하도록부탁드립니다) 상단밴드 하락돌파 한 뒤 상단밴드 아래에서 4개봉이 (최적화 가능하도록부탁드립니다) 만들어지면 매도진입 매수청산 매도청산; 매도 진입하여 볼밴 하단선보다 20틱이상 하락하면 매도청산(최적화 가능하도록부탁드립니다) 이런 수식을 부탁드립니다 감사합니다
프로필 이미지
cjfdk
2024-09-20
338
글번호 183600
시스템