커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

어떤 식으로 수식을 짜면 좋을까요?

[조건 1] 오전 9시 15분 이후에 [조건 2] A, B, C 3개 종목의 현재 주가가 각각 매수 원하는 가격 아래에 있는지 확인하고 [조건 3] 각각 매수 원하는 가격 돌파 시 자동으로 매수 주문 전송
프로필 이미지
autotra
2023-06-30
1186
글번호 170229
시스템
답변완료

수식문의드립니다.

아래 수식 부탁 드립니다. 12분봉 기준 macd>0 일 경우 매수진입 후 3분봉 기준 20이평선 하회 시 청산 (3분봉 기준 20이평선 다시 복귀시 재매수 후 훼손시 청산의 프로세스를 12분봉 기준 macd>0인 상태에서 반복) 12분봉 기준 macd<0일 경우 매도진입 후 3분봉 기준 20이평선 상회 시 청산 (3분봉 기준 20이평선 다시 복귀시 재매도 후 훼손시 청산의 프로세스를 12분봉 기준 macd<0인 상태에서 반복)
프로필 이미지
zephie
2023-06-30
1361
글번호 170226
시스템
답변완료

macd기준선

macd기준선0을 위에서 종가가 60일이평위에 매수 매수하기전에 들어가있는 포지션이 있으면 정리후 매수 macd기준선0을 아래에서 종가가 60일아래에 있을때 매도하지전에 들어가있는 포지션이 있으면 정리후 매도
프로필 이미지
스타그이상
2023-06-30
1428
글번호 170222
시스템
답변완료

macd기준선

macd기준선0을 위에서 종가가 60일이평위에 매수 매수하기전에 들어가있는 포지션이 있으면 정리후 매수 macd기준선0을 아래에서 종가가 60일아래에 있을때 매도하지전에 들어가있는 포지션이 있으면 정리후 매도
프로필 이미지
스타그이상
2023-06-30
892
글번호 170221
시스템
답변완료

식 부탁드립니다.

안녕하세요 아래 식에서 매수가격, 익절가격, 손절가격에 각각 매수량, 익절수량, 손절매도수량을 설정할수 있게 부탁드립니다. --------------- 81618 문의에 대한 답변입니다 안녕하세요 예스스탁입니다. 외부변수가&#160;선언만&#160;되고&#160;수식에서&#160;사용이&#160;되어&#160;있지&#160;않았습니다. 수정한&#160;식입니다. input&#160;:&#160;날짜(20230302),매수가격(1000),익절가격(1200),손절가격(800); if&#160;NextBarSdate&#160;>=&#160;날짜&#160;Then { &#160;&#160;&#160;&#160;&#160;&#160;if&#160;NextBarSdate&#160;!=&#160;sDate&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;MarketPosition&#160;==&#160;0&#160;and&#160;TotalTrades&#160;==&#160;0&#160;and&#160;NextBarOpen&#160;<=&#160;매수가격&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buy("b1",AtStop,매수가격); &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;Else &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;MarketPosition&#160;==&#160;0&#160;and&#160;TotalTrades&#160;==&#160;0&#160;and&#160;DayHigh&#160;<&#160;매수가격&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buy("b",AtStop,매수가격); &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;if&#160;MarketPosition&#160;==&#160;1&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExitLong("bp",AtLimit,익절가격); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ExitLong("bl",AtStop,손절가격); &#160;&#160;&#160;&#160;&#160;&#160;} } 즐거운&#160;하루되세요
프로필 이미지
스누피독
2023-06-30
959
글번호 170220
시스템
답변완료

문의 드립니다.

적용가능한 수식으로 변형 부탁 드립니다. 1.======================================================================= indicator('HIGH AND LOW Optimized Trend Tracker', 'HL OTT', overlay=true) length = input.int(2, 'OTT Period', minval=1) percent = input.float(0.6, 'OTT Optimization Coeff', step=0.1, minval=0) hllength = input.int(10, 'Highest and Lowest Length', minval=1) src = ta.highest(high, hllength) srcl = ta.lowest(low, hllength) highlighting = input(title='Highlighter On/Off ?', defval=true) mav = input.string(title='Moving Average Type', defval='VAR', options=['SMA', 'EMA', 'WMA', 'DEMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF', 'HULL']) Var_Func(src, length) => valpha = 2 / (length + 1) vud1 = src > src[1] ? src - src[1] : 0 vdd1 = src < src[1] ? src[1] - src : 0 vUD = math.sum(vud1, 9) vDD = math.sum(vdd1, 9) vCMO = nz((vUD - vDD) / (vUD + vDD)) VAR = 0.0 VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1]) VAR VAR = Var_Func(src, length) DEMA = 2 * ta.ema(src, length) - ta.ema(ta.ema(src, length), length) Wwma_Func(src, length) => wwalpha = 1 / length WWMA = 0.0 WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1]) WWMA WWMA = Wwma_Func(src, length) Zlema_Func(src, length) => zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2 zxEMAData = src + src - src[zxLag] ZLEMA = ta.ema(zxEMAData, length) ZLEMA ZLEMA = Zlema_Func(src, length) Tsf_Func(src, length) => lrc = ta.linreg(src, length, 0) lrc1 = ta.linreg(src, length, 1) lrs = lrc - lrc1 TSF = ta.linreg(src, length, 0) + lrs TSF TSF = Tsf_Func(src, length) HMA = ta.wma(2 * ta.wma(src, length / 2) - ta.wma(src, length), math.round(math.sqrt(length))) Var_Funcl(srcl, length) => valphal = 2 / (length + 1) vud1l = srcl > srcl[1] ? srcl - srcl[1] : 0 vdd1l = srcl < srcl[1] ? srcl[1] - srcl : 0 vUDl = math.sum(vud1l, 9) vDDl = math.sum(vdd1l, 9) vCMOl = nz((vUDl - vDDl) / (vUDl + vDDl)) VARl = 0.0 VARl := nz(valphal * math.abs(vCMOl) * srcl) + (1 - valphal * math.abs(vCMOl)) * nz(VARl[1]) VARl VARl = Var_Funcl(srcl, length) DEMAl = 2 * ta.ema(srcl, length) - ta.ema(ta.ema(srcl, length), length) Wwma_Funcl(srcl, length) => wwalphal = 1 / length WWMAl = 0.0 WWMAl := wwalphal * srcl + (1 - wwalphal) * nz(WWMAl[1]) WWMAl WWMAl = Wwma_Funcl(srcl, length) Zlema_Funcl(srcl, length) => zxLagl = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2 zxEMADatal = srcl + srcl - srcl[zxLagl] ZLEMAl = ta.ema(zxEMADatal, length) ZLEMAl ZLEMAl = Zlema_Funcl(srcl, length) Tsf_Funcl(srcl, length) => lrcl = ta.linreg(srcl, length, 0) lrc1l = ta.linreg(srcl, length, 1) lrsl = lrcl - lrc1l TSFl = ta.linreg(srcl, length, 0) + lrsl TSFl TSFl = Tsf_Funcl(srcl, length) HMAl = ta.wma(2 * ta.wma(srcl, length / 2) - ta.wma(srcl, length), math.round(math.sqrt(length))) getMA(src, length) => ma = 0.0 if mav == 'SMA' ma := ta.sma(src, length) ma if mav == 'EMA' ma := ta.ema(src, length) ma if mav == 'WMA' ma := ta.wma(src, length) ma if mav == 'DEMA' ma := DEMA ma if mav == 'TMA' ma := ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1) ma if mav == 'VAR' ma := VAR ma if mav == 'WWMA' ma := WWMA ma if mav == 'ZLEMA' ma := ZLEMA ma if mav == 'TSF' ma := TSF ma if mav == 'HULL' ma := HMA ma ma getMAl(srcl, length) => mal = 0.0 if mav == 'SMA' mal := ta.sma(srcl, length) mal if mav == 'EMA' mal := ta.ema(srcl, length) mal if mav == 'WMA' mal := ta.wma(srcl, length) mal if mav == 'DEMA' mal := DEMAl mal if mav == 'TMA' mal := ta.sma(ta.sma(srcl, math.ceil(length / 2)), math.floor(length / 2) + 1) mal if mav == 'VAR' mal := VARl mal if mav == 'WWMA' mal := WWMAl mal if mav == 'ZLEMA' mal := ZLEMAl mal if mav == 'TSF' mal := TSFl mal if mav == 'HULL' mal := HMAl mal mal MAvg = getMA(src, length) fark = MAvg * percent * 0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir == 1 ? longStop : shortStop HOTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200 HOTTC = color.blue MAvgl = getMAl(srcl, length) farkl = MAvgl * percent * 0.01 longStopl = MAvgl - farkl longStopPrevl = nz(longStopl[1], longStopl) longStopl := MAvgl > longStopPrevl ? math.max(longStopl, longStopPrevl) : longStopl shortStopl = MAvgl + farkl shortStopPrevl = nz(shortStopl[1], shortStopl) shortStopl := MAvgl < shortStopPrevl ? math.min(shortStopl, shortStopPrevl) : shortStopl dirl = 1 dirl := nz(dirl[1], dirl) dirl := dirl == -1 and MAvgl > shortStopPrevl ? 1 : dirl == 1 and MAvgl < longStopPrevl ? -1 : dirl MTl = dirl == 1 ? longStopl : shortStopl LOTT = MAvgl > MTl ? MTl * (200 + percent) / 200 : MTl * (200 - percent) / 200 LOTTC = color.red HOTTLine = plot(nz(HOTT[2]), title='HOTT', color=color.new(HOTTC, 0), linewidth=2, style=plot.style_line) LOTTLine = plot(nz(LOTT[2]), title='LOTT', color=color.new(LOTTC, 0), linewidth=2, style=plot.style_line) FillColor = highlighting ? color.new(#9915FF, 80) : na fill(HOTTLine, LOTTLine, title='Highligter', color=FillColor) color1 = close > HOTT[2] ? #00FFFF : close < LOTT[2] ? #FF00FF : na barcolor(color1) alertcondition(ta.crossover(close, HOTT[2]), title='Price Crossover Alarm', message='PRICE OVER HOTT - BUY SIGNAL!') alertcondition(ta.crossunder(close, LOTT[2]), title='Price Crossunder Alarm', message='PRICE UNDER LOTT - SELL SIGNAL!') 2.======================================================================= fHV(_src, _len, _avg) => r = math.log(_src / nz(_src[1], _src)) rAvg = ta.sma(r, _len) hv = math.sqrt(math.sum(math.pow(r - rAvg, 2), _len) / (_len - 1)) * math.sqrt(_avg) hv // HVP inspired by @balipour, implimented @cheatcountry fHVP(_hv, _avg) => count = 0. for i = 0 to _avg - 1 by 1 count += (nz(_hv[i]) < _hv ? 1 : 0) count hvp = count / _avg * 100 hvp indicator(title='Historical Volatility Percentile: Price and Volume', shorttitle='HVVP', precision=2) src = input(close, title='Source') len = input(22, title='Length') avg = input(88, title='Lookback Length') smalen = input(22, title='Average Length') vPR = input(5, title='Percent Rank Limit') bc = input(true, title='Include Source') vc = input(true, title='Include Volume') pc = input(true, title='Include Percent Rank') sc = input(true, title='Include SMA') //calculate for source term hv = fHV(src, len, avg) hvp = bc ? fHVP(hv, avg) : 0 //calculate for the volume term hvv = fHV(math.log10(volume), len, avg) hvvp = vc ? fHVP(hvv, avg) : 0 //combine both volitility measurements, normalize back to 100 VV = bc and vc ? (hvp + hvvp) / 2 : hvp + hvvp hc = VV > 90 ? color.maroon : VV > 79 ? color.orange : VV >= 71 ? color.yellow : VV >= 50 ? color.green : VV <= 30 ? color.gray : color.blue plot(VV, style=plot.style_columns, color=hc, title = "Histogram") //Percent Rank and ploting prc = bc ? ta.percentrank(hvp, avg) : na prv = vc ? ta.percentrank(hvvp, avg) : na pvv_check = prv > 100 - vPR and prc > 100 - vPR and bc and vc pvv_check_2 = prv < vPR and prc < vPR and bc and vc //ploting the down arrows //plotshape(prc > 100 - vPR and not pvv_check and bc and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.yellow, 30), size=size.tiny, offset=0) plotshape(prv > 100 - vPR and not pvv_check and vc and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.yellow, 30), size=size.tiny, offset=0, title="DWN ARW Yellow") plotshape(pvv_check and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.red, 30), size=size.tiny, offset=0, title="DWN ARW Red") //plotting the up arrows //plotshape(prc < vPR and not pvv_check_2 and bc and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.yellow, 30), size=size.tiny, offset=0) plotshape(prv < vPR and not pvv_check_2 and vc and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.yellow, 30), size=size.tiny, offset=0, title="UP ARW Yellow") plotshape(pvv_check_2 and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.red, 30), size=size.tiny, offset=0, title="UP ARW Red") //SMAs for price and volume SVV = bc and vc ? (hvp + hvvp) / 2 : hvp + hvvp plot(sc ? ta.sma(SVV, smalen) : na, color=color.new(color.blue, 0), linewidth=2, title="MA Line") 3.======================================================================= curtaLength = input(title="Curta (Short) Length", type=integer, defval=3) mediaLength = input(title="Media (Medium) Length", type=integer, defval=8) longaLength = input(title="Longa (Long) Length", type=integer, defval=20) src = input(title="Source", type=source, defval=close) applyFilling = input(title="Apply Ribbon Filling ?", type=bool, defval=true) highlightCrossovers = input(title="Highlight Crossovers ?", type=bool, defval=true) media = sma(src, mediaLength) curta = sma(src, curtaLength) / media longa = sma(src, longaLength) / media curtaPlot = plot(curta, title="Curta", color=green) plot(1, title="Media", color=black, transp=0) longaPlot = plot(longa, title="Longa", color=red) fillColor = applyFilling ? (curta > longa ? #0ebb23 : red) : color(white, 100) fill(curtaPlot, longaPlot, color=fillColor, transp=80) plotshape(crossover(curta, longa) and highlightCrossovers ? avg(longa, longa[1]) : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=20) plotshape(crossunder(curta, longa) and highlightCrossovers ? avg(longa, longa[1]) : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=20)
프로필 이미지
다올
2023-06-30
2360
글번호 170219
지표

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

프로필 이미지
hello
2023-06-29
0
글번호 170218
시스템
답변완료

프로그램문의

수고많습니다. 시스템 작성을 부탁합니다.(미니선물) 1. 전일 매수포지션이 있는 경우, 당일 시가가 전일종가를 0.5포인트 초과 상승하는 경우, 전일매수포지션 그대로 유지함. 반대로 당일 시가가 전일종가를 0.5포인트 하락하는 경우, 매수포지션청산하고 매도포지션으로 전환함. 2. 전일 매포포지션이 있는 경우, 당일시가가 전일 종가를 0.5포인트 초과 상승하는 경우, 전일 매도포지션을 청산하고 매수포지션으로 전환함. 반대로 당일시가가 전일종가를 0.5포인트 초과하락하는 경우, 매도포지션을 그대로 유지함. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4. 당일 시가가 전일종가를 초과하여 상승증에 장중에서 가격이 시가를 0.5포인트 하락하는 경우, 매수포지션을 청산하고 매도포지션으로 전환함. 5. 당일 시가가 전일종가를 초과하여 하락하는 중에 장중에서 가격이 시가를 0.5포인트 초과하여 상승하는 경우 매도포지션을 청산하고 매수포지션으로 전환함. 6. 위의 4와 5와 같은 현상이 당일장중에서 여러번 발생하면 반복적으로 4와 5를 실행하도록 함. 위의 프로그램을 작성부탁합니다. 감사합니다.
프로필 이미지
hello
2023-06-29
1153
글번호 170217
시스템
답변완료

시스템작성의뢰

수고 하십니다 ! 1.거래량 5 이평선이 15 이상 상승하면 신호로 알려주고 on balance price 지표가 - 76 이하로 내려가고 obv 지표가 - 1800 이하로 하락하고 pvi지표가 99.40 이하로 하락하고 120,240,480,960 ,1920 이동평균선이 역배열이 되고 480 이평선과 960 이평선의 간격이 6틱이상 벌어지고 120 이평선이 240 이평선을 업크로스할때 매수를 하고 30 틱이상 상승한 다음 120 이평선이 240 이평선을 다운크로스 할때 청산을 한다 2.거래량 5 이평선이 15 이상 상승하면 신호로 알려주고 on balance price 지표가 55 이상 상승하고 obv 지표가 720 이상 상승 하고 pvi지표가 100.40 이상 상승 하고 120,240,480,960 ,1920 이동평균선이 정배열이 되고 480 이평선과 960 이평선의 간격이 6 틱이상 벌어지고 120 이평선이 240 이평선을 다운크로스할때 매도를 하고 30 틱이상 하락한 다음 120 이평선이 240 이평선을 업크로스 할때 청산을 한다
프로필 이미지
tnsflwls
2023-06-29
1327
글번호 170216
시스템
답변완료

stime

다른 식에서는 진입금지(stime)가 잘 작동하는 데. swing식에서만 자꾸 첫봉에도 매수신호가 발생됩니다. 무엇이 잘못된건지 알려주시면 감사 input : left(5),right(5); var : ii(0); if bdate != Bdate[1] Then { var1 = 0; ii = 0; } ii = ii +1; if ii >= right+left+1 and Swinglow(1,L,right,left,right+left+1) != -1 Then { var1 =L[Right]; } if sTime>=93000 and var1>0 Then{ // stime 미작동 Buy("swb",AtLimit,var1); } SetStopEndofday(151500);
프로필 이미지
피카2
2023-06-29
1307
글번호 170215
시스템