커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1696
글번호 230811
답변완료
89264번 재문의입니다.
답변 내용이 해석이 안되 재문의 드립니다.
매수든 매도든 진입신호 발생후 청산식을 딱 1번만 나오게 만들고 싶은데
예스수식으로 구현이 불가능하다는 의미인지 궁금합니다.
수식에 문제가 없다는데 다계약에서 바로 뒤에도 같은 청산식이 연달아서 나옵니다.
다계약으로 진입된 후 여러 청산식중에서 한번 나온 청산식은
진입이 최종 종료되기전까지 단 1번만 적용되는 식을 원하는데
예스수식에서 구현이 불가능하다는 의미인지 아니면 문제가 전혀 없는데
제가 잘못 본 것인지 명료하게 답변해주시길 부탁 드립니다.
2024-09-29
970
글번호 183822
답변완료
부틱드립니다
수고하십니다
트레이딩 뷰 수식입니다.
예스로적용가능하도록 부탁 드립니다.
아래수식 === PLOTTING ===에서
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)
두 선만 나타나게 부탁드립니다
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)
// === 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 seletion 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
// ⓒ 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 seleced.
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-28
1079
글번호 183821
답변완료
검색식 부탁합니다
검색시 부탁드립니다.(New SQUEEZE MOMENTUM)
조건은 하부 지표에서
1) 색상이 적색에서 노랑색으로 변하는 지점에서의 검색식 부탁합니다
input : length(20),BB_mult(2.0);
var : BB_basis(0),dev(0),BB_upper(0),BB_lower(0);
BB_basis = ma(close, length);
dev = BB_mult * std(close, length);
BB_upper = BB_basis + dev;
BB_lower = BB_basis - dev;
input : KC_mult_high(1.0);
input : KC_mult_mid(1.5);
input : KC_mult_low(2.0);
var : KC_basis(0),devKC(0);
var : KC_upper_high(0),KC_lower_high(0);
var : KC_upper_mid(0),KC_lower_mid(0);
var : KC_upper_low(0),KC_lower_low(0);
var : NoSqz(False),LowSqz(False),MidSqz(False),HighSqz(False);
var : mom(0),iff_1(0),iff_2(0),mom_color(0),sq_color(0);
KC_basis = ma(close, length);
devKC = ma(TrueRange, length);
KC_upper_high = KC_basis + devKC * KC_mult_high;
KC_lower_high = KC_basis - devKC * KC_mult_high;
KC_upper_mid = KC_basis + devKC * KC_mult_mid;
KC_lower_mid = KC_basis - devKC * KC_mult_mid;
KC_upper_low = KC_basis + devKC * KC_mult_low;
KC_lower_low = KC_basis - devKC * KC_mult_low;
//SQUEEZE CONDITIONS
NoSqz = BB_lower < KC_lower_low or BB_upper > KC_upper_low; //NO SQUEEZE: GREEN
LowSqz = BB_lower >= KC_lower_low or BB_upper <= KC_upper_low; //LOW COMPRESSION: BLACK
MidSqz = BB_lower >= KC_lower_mid or BB_upper <= KC_upper_mid ;//MID COMPRESSION: RED
HighSqz = BB_lower >= KC_lower_high or BB_upper <= KC_upper_high; //HIGH COMPRESSION: ORANGE
//MOMENTUM OSCILLATOR
mom = LRL(close - avg(avg(highest(high, length), lowest(low, length)),ma(close, length)), length);
//MOMENTUM HISTOGRAM COLOR
iff_1 = iff(mom > iff(isnan(mom[1])==true,0,mom[1]) , Cyan , Blue);
iff_2 = iff(mom < iff(isnan(mom[1])==true,0,mom[1]) , red , yellow);
mom_color = iff(mom > 0 , iff_1 , iff_2);
//SQUEEZE DOTS COLOR
sq_color = iff(HighSqz , orange ,IFf(MidSqz , red ,IFf(LowSqz , black , green)));
//PLOTS
plot1(mom, "MOM",mom_color);
plot2(0, "SQZ", sq_color);
2024-10-10
848
글번호 183820
답변완료
한 봉에서 atstop이나 litmit을 중복 적용 가능한가요?
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
예컨대 이런식으로 매수조건이 걸려있을때
저 매수조건이 먼저 실행됐을때만 한정해서
IsEntryName("b1") == true Or IsEntryName("b2") == true
현재 봉이 완성되기 전에 직전봉 몸통크기의 1.1배 만큼 하락하면 매도 스위칭,
예컨대 (c[1]-o[1])*1.1) 이런식으로 조건을 줘서
한봉에 두개의 매매조건이 설정 가능한지 궁금합니다.
2024-09-28
755
글번호 183819
답변완료
디마크 상한선을
당일 디마크 상한선을 변동성 돌파 수식이 돌파 또는 같은 조건검색식 부탁해요
변동성 돌파 수식 임미다.
var : X(0),X1(0);
X = DAYHIGH[1] - DAYLOW[1];
X1 = DAYOPEN()+X*0.5;
2024-09-28
755
글번호 183818
답변완료
수식점검을 부탁드립니다
키움증권을 쓰는데 아래의 수식이 이동평균 기간이 1보다 작습니다 라고 나옵니다.
어떤형식으로 바꿔야 할까요
BBandsUp((C+H+L)/3,2,40,상단);
2024-09-28
888
글번호 183817
사노소이 님에 의해서 삭제되었습니다.
2024-09-27
9
글번호 183816
답변완료
수식 부탁드립니다
키움 화살표로 사용중인대 예스에서 종목검색을 하고 싶어요 도와주셔요
S = supertrend(20, 3);
M = ma(C, 20);
조건 = M>M(1) && CrossUp(S, M);
bs = BarsSince (조건);
bs > 0 && bs < 간격 &&
CrossDown(S, M) &&
M> M(1) &&
C(1) < S(1)
지표변수
간격 35 입니다
부탁드립니다
2024-09-27
709
글번호 183815
답변완료
안녕하세요 수식 검토 부탁드립니다~
안녕하세요, 만들어 주신 수식 감사히 잘 사용중입니다.
아래의 강조수식을
종목검색식으로 변환과 그에 맞는 새로운 강조식,신호검색식 부탁드립니다.
input : n(260),BBP(20),Dv(2);
var : BBup(0),TL(0);
BBup = BollBandUp(BBP,dv);
if v > highest(v,n)[1] and
C > O Then
{
PlotPaintBar(H,L,"강조",Yellow);
}
1. 30분봉에 사용할 수식으로 아래와 같습니다.
*N(13)봉 이내에 260봉 최고거래량 발생.
*종가가 260봉중 최고거래량이 발생한 봉의 중간값((저가+고가)/2) 이상일 것.
*오늘 당일 (Upvol-Downvol) > 0 and sumPL > 0.
*30분봉이 완성되는 매30분 또는 매정시 봉완성후 종목이 검색되는 것이 아니고,
조건이 충족되면 바로 검색.
(9시7분에라도 260봉 신고거래가 발생되면 바로검색되게요)
*전일 데이터는 제외하고, 오늘데이터만 적용. 260봉 신고거래량 양봉 1회이상 출현.
*위 수식에서 볼린저밴드 부분 삭제.
*종목검색식과 강조수식, 신호검색식 부탁드립니다.
늘 감사드립니다.
고맙습니다!!
2024-09-30
813
글번호 183814