커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
6198
글번호 230811
지표
답변완료

수식수정

89909글임니다 Inputs : Period(20), Sence(1.5), CC_DN(Yellow); Vars: VLineUp(0), VLineDn(0), HHighest(0), LLowest(0), JustChanged(FALSE), VLine(0), DBN(0); Array: Highs[35](0), Lows[35](0), RRange[35](0), UpWave[1](FALSE), DnWave[1](FALSE); If STime == 180000 Then DBN = 0; DBN = DBN + 1; Var1 = Period; Var2 = Var1 - 1; Var3 = Var1 - 2; Var5 = Sence; Var6 = H-L; JustChanged = FALSE; if CurrentBar <= Var2 then begin Highs[CurrentBar] = Close; Lows[CurrentBar] = Close; RRange[CurrentBar] = (H-L) /2; end; if CurrentBar == Var1 then begin if Highs[Var2] >= Highs[Var3] then begin UpWave[1] = TRUE; HHighest = Highs[Var2]; VLineUp = HHighest - (Var5 * MA(Var6,Var2)); end; if Highs[Var2] < Highs[Var3] then begin DnWave[1] = TRUE; LLowest = Lows[Var2]; VLineDn = LLowest + (Var5 * MA(Var6,Var2)); end; end; if CurrentBar > Var1 then begin if DnWave[1] and Close > VLineDn then begin DnWave[1] = FALSE; UpWave[1] = TRUE; JustChanged = TRUE; HHighest = Close; LLowest = 0; end; if UpWave[1] and Close < VLineUp and JustChanged == FALSE then begin UpWave[1] = FALSE; DnWave[1] = TRUE; JustChanged = TRUE; LLowest = Close; HHighest = 0; end; if JustChanged == FALSE then begin if Close > HHighest then HHighest = Close; else if Close < LLowest then LLowest = Close; end; VLineUp = HHighest - (Var5 * MA(Var6,Var2)); VLineDn = LLowest + (Var5 * MA(Var6,Var2)); end; Inputs : DDD(20150309), LEN(300), HL_ED(60), CC(Black); Vars : DBN1(0), KK1(0), DD1(0), KK2(0), DD2(0); var : val2(0),v1(0),v2(0); If STime >= 080000 And STime[1] < 080000 Then Begin DBN1 = 0; KK1 = 0; DD1 = 0; KK2 = 0; DD2 = 0; End; DBN1 = DBN1 + 1; If STime >= 083000 And DD1 == 0 Then Begin Val2 = O; DD1 = 1; KK1 = DBN1; v1 = 0; v2 = 0; End; if DD1 == 1 Then{ if C > val2 and UpWave[1] Then{ buy(); } if C < val2 and DnWave[1] Then{ sell(); } } 89909 글입니다 첨부sw2 위식에서 수정부탁드림니다 매수 sw2선 발생후 sw2선을 터치나 하락후 재상승시 매도 매수반대
프로필 이미지
아트정
2025-02-19
661
글번호 188329
시스템
답변완료

지표문의

지표문의 1.HPc일 =Data1(DayClose(0))+Data2(DayClose(0))+Data3(DayClose(0))+data4(DayClose(0))+Data5(DayClose(0))+data6(DayClose(0))+Data7(DayClose(0))+data8(DayClose(0))+data9(DayClose(0))+Data10(DayClose(0)); 2.1를 사용자 함수로해서 분봉에표시 첨부 파일 처럼 나옴 고 저가 표시 안됨,분봉값이 표시 안됨 지표를 좀 만들어 주세요 예제) input : N(5); var : cnt(0),sum(0),mav(0); #N일 일봉이평 계산 sum = 0; For cnt = 0 to N-1 { sum = sum + HPc일; } mav = sum/N; plot5(mav,"고가",RED); 3.그럼수고하세요
프로필 이미지
성공예견
2025-02-19
618
글번호 188328
지표
답변완료

종목검색식 요청드립니다.

안녕하세요? 아래 조건식에서 if crossup(A,B) && crossup(C,D) 이런 조건문에서 "&&"는 and로 알고 있는데 위 조건문을 "또는(or)" 으로 수정하려면 어떻게 해야 하나요?
프로필 이미지
onlypsn
2025-02-19
504
글번호 188327
종목검색
답변완료

수고하십니다. 키움수식을 파워종목 검색식 부탁드립니다

crossup(c,((predayhigh()+predaylow()+ predayclose())/3)+(predayhigh()-predaylow())) 지표변수 없습니다 감사합니다
프로필 이미지
foxdie08
2025-02-19
506
글번호 188325
종목검색
답변완료

전고 점

안녕하세요. 키움에서 사용하는 지표 수식입니다. 예스트레이더로 변경 부탁 드려요. Hv = max(O, C); Lv = min(O, C); Condition1 = Highest(Hv(barCnt+1),barCnt) <= Hv(barCnt) and Hv(barCnt) > Highest(Hv,barCnt); 조건1=shift(if(Condition1, 1, 0),-barCnt); 전고점값=shift(if(Condition1, max(O(barCnt), C(barCnt)), 0), -barCnt); Valuewhen(1, 조건1, 전고점값) barCnt = 10 늘 감사합니다. 좋은 하루 보내세요.
프로필 이미지
이루나라
2025-04-30
491
글번호 188324
지표
답변완료

트뷰에서 사용중인 로직 변환 요청드려봅니다.

트뷰에서 활용하고 있는 전략으로 손매매를 하고 있는데 이걸 자동으로 구현했고 혹시나 해당 플랫폼에서 사용할 수 있다면 자동매매로 전환하고 싶어서 문의드립니다. 트레이딩뷰 전략을 끌어와서 자동매매를 시작해보려고 합니다. 변환 부탁드립니다. //@version=4 strategy(shorttitle = "SQZMOM_LB", title="Squeeze Momentum Indicator [LazyBear]", overlay=true) length = input(20, title="BB Length") mult = input(2.0, title="BB MultFactor") lengthKC = input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool) trailTrigger = input(50, title="트레일링 스탑 활성화 포인트") // 50포 상승 이후 트레일링 스탑 활성화 trailPercent = input(50, title="트레일링 되돌림 비율 (%)") / 100 // 50% 되돌림 시 익절 stopLossPercent = input(0.8, title="손절 비율 (%)") / 100 // 손절 비율 설정 // Calculate BB source = close basis = sma(source, length) dev = multKC * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0) bcolor = val > 0 ? (val > nz(val[1]) ? color.green : color.green) : (val < nz(val[1]) ? color.red : color.red) scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray plot(val, color=bcolor, linewidth=2) plot(0, color=scolor, style=plot.style_cross, linewidth=2) startHour = 15 startMinute = 0 startTimestamp = timestamp("GMT+9", year, month, dayofmonth, startHour, startMinute) isAfterStartTime = (time >= startTimestamp) // 거래량 조건 추가: 최근 20기간의 평균 거래량 volumeAvg = sma(volume, 20) volumeMultiplier = input(1.3, title="Volume Multiplier for Entry") // 거래량이 평균보다 몇 배 이상일 때 진입할지 설정 longCondition = (bcolor == color.green) and (bcolor[1] != color.green) and isAfterStartTime and (volume > volumeAvg * volumeMultiplier) // 숏 포지션을 더 엄격하게 진입: 강한 하락 신호 추가 (50일 이동평균선 아래에서만) strongDownSignal = (bcolor == color.red) and (bcolor[1] != color.red) and (close < sma(close, 50)) // 50일 이동평균선 아래에서 하락 shortCondition = strongDownSignal and isAfterStartTime and (volume > volumeAvg * volumeMultiplier) var float maxProfitLong = na var float maxProfitShort = na if (longCondition) strategy.entry("Long", strategy.long) maxProfitLong := close // 롱 포지션 진입 시 초기화 if (shortCondition) strategy.entry("Short", strategy.short) maxProfitShort := close // 숏 포지션 진입 시 초기화 // 롱 포지션 트레일링 스탑 로직 if (strategy.position_size > 0) maxProfitLong := max(maxProfitLong, close) // 최고 수익 갱신 trailStopLong = maxProfitLong - (maxProfitLong - strategy.position_avg_price) * trailPercent // 50% 되돌림 계산 stopLossLong = strategy.position_avg_price - (strategy.position_avg_price * stopLossPercent) // 손절 가격 계산 if (close <= trailStopLong and (maxProfitLong - strategy.position_avg_price) >= trailTrigger) strategy.close("Long") if (close <= stopLossLong) strategy.close("Long") // 손절 // 숏 포지션 트레일링 스탑 로직 if (strategy.position_size < 0) maxProfitShort := min(maxProfitShort, close) // 최저 수익 갱신 trailStopShort = maxProfitShort + (strategy.position_avg_price - maxProfitShort) * trailPercent // 50% 되돌림 계산 stopLossShort = strategy.position_avg_price + (strategy.position_avg_price * stopLossPercent) // 손절 가격 계산 if (close >= trailStopShort and (strategy.position_avg_price - maxProfitShort) >= trailTrigger) strategy.close("Short") if (close >= stopLossShort) strategy.close("Short") // 손절 // 기본적인 색상 변화에 따른 청산 로직 strategy.close("Long", when=bcolor == color.red) strategy.close("Short", when=bcolor == color.green)
프로필 이미지
또미빠덜
2025-02-19
800
글번호 188315
사용자 함수

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

프로필 이미지
회원
2025-02-19
32
글번호 188314
시스템
답변완료

수정좀요청 드립니다.

* 좋은 하루 되십시요 * 아래 수식 실행 하면 사진 처럼나오는데 제가 뭘 잘못 한거죠? 지도좀 부탁 드립니다, ## 아래 수식 input : i_lenHARSI(14),i_smoothing(7),i_lenRSI(7); var : i_colUp(0),i_colDown(0),i_colWick(0),i_source(0); var : _closeRSI(0),_openRSI(0),_highRSI_raw(0),_lowRSI_raw(0); var : _highRSI(0),_lowRSI(0),_close(0),_open(0),_high(0),_low(0); Var : cnt(0), DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0), UpAvg1(0), DownAvg1(0),RSIV1(0); Var : DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0), UpAvg2(0), DownAvg2(0),RSIV2(0); var : bodyColour(0),wickColour(0); i_colUp = red; i_colDown = teal; i_colWick = gray; i_source = (o+h+l+c)/4; _closeRSI = rsi(i_lenHARSI)-50; _openRSI = IFF(IsNaN(_closeRSI[1]) == False, _closeRSI[1], _closeRSI); If CurrentBar == 1 AND i_lenHARSI > 0 Then Begin UpSum1 = 0; DownSum1 = 0; For cnt = 0 To i_lenHARSI - 1 Begin UpAmt1 = H[cnt] - H[cnt+1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else Begin DownAmt1 = -UpAmt1; UpAmt1 = 0; End; UpSum1 = UpSum1 + UpAmt1; DownSum1 = DownSum1 + DownAmt1; End; UpAvg1 = UpSum1 / i_lenHARSI; DownAvg1 = DownSum1 / i_lenHARSI; End Else If CurrentBar > 1 AND i_lenHARSI > 0 Then Begin UpAmt1 = H[0] - H[1]; If UpAmt1 >= 0 Then DownAmt1 = 0; Else Begin DownAmt1 = -UpAmt1; UpAmt1 = 0; End; UpAvg1 = (UpAvg1[1] * (i_lenHARSI - 1) + UpAmt1) / i_lenHARSI; DownAvg1 = (DownAvg1[1] * (i_lenHARSI - 1) + DownAmt1) / i_lenHARSI; End; If UpAvg1 + DownAvg1 <> 0 Then RSIV1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1); Else RSIV1 = 0; If CurrentBar == 1 AND i_lenHARSI > 0 Then Begin UpSum2 = 0; DownSum2 = 0; For cnt = 0 To i_lenHARSI - 1 Begin UpAmt2 = L[cnt] - L[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; End; UpAvg2 = UpSum2 / i_lenHARSI; DownAvg2 = DownSum2 / i_lenHARSI; End Else If CurrentBar > 2 AND i_lenHARSI > 0 Then Begin UpAmt2 = L[0] - L[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpAvg2 = (UpAvg2[1] * (i_lenHARSI - 1) + UpAmt2) / i_lenHARSI; DownAvg2 = (DownAvg2[1] * (i_lenHARSI - 1) + DownAmt2) / i_lenHARSI; End; If UpAvg2 + DownAvg2 <> 0 Then RSIV2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSIV2 = 0; _highRSI_raw = RSIV1-50; _lowRSI_raw = RSIV2-50; _highRSI = max(_highRSI_raw, _lowRSI_raw); _lowRSI = min(_highRSI_raw, _lowRSI_raw); _close = (_openRSI + _highRSI + _lowRSI + _closeRSI) / 4; _open = iff(isnan(_open[i_smoothing]) == true, (_openRSI + _closeRSI) / 2 , (_open[1] * i_smoothing + _close[1]) / (i_smoothing + 1)); _high = max(_highRSI, max(_open, _close)); _low = min(_lowRSI, min(_open, _close)); bodyColour = iff(_close > _open , i_colUp , i_colDown); wickColour = i_colWick; var1 = TL_New_Self(sDate,sTime,_open,sDate,sTime,_close); var2 = TL_New_Self(sDate,sTime,_high,sDate,sTime,max(_open,_close)); var3 = TL_New_Self(sDate,sTime,_Low,sDate,sTime,min(_open,_close)); TL_SetColor(var1,bodyColour); TL_SetColor(var2,i_colWick); TL_SetColor(var2,i_colWick); TL_SetSize(var1,3); TL_SetSize(var2,1); TL_SetSize(var3,1); 고맙습니다. .
프로필 이미지
요타
2025-02-19
606
글번호 188313
지표
답변완료

문의 드립니다

안녕하세요 input : Periods(10); input : Multiplier(3.0); input : changeATR(1);#1:SMA 0:RMA input : upcolor(Red),downcolor(Blue); var : src(0),alpha(0),source(0),ATR1(0),ATR2(0),ATRV(0); var : up(0),up1(0),dn(0),dn1(0),trend(0),tx(0); src = (H+L)/2; alpha = 1 / Periods; atr1 = IFf(IsNan(atr1[1]) == true , ma(TrueRange, Periods) , alpha * TrueRange + (1 - alpha) * atr1[1]); atr2 = ATR(Periods); atrv = IFf(changeATR == 1 , atr1 , atr2); up=src-(Multiplier*atrv); up1 = IFf(IsNan(up[1]) == False,up[1],up); up = iff(close[1] > up1 , max(up,up1) , up); dn=src+(Multiplier*atrv); dn1 = IFf(IsNan(dn[1]) == False,dn[1], dn); dn = iff(close[1] < dn1 , min(dn, dn1) , dn); trend = 1; trend = IFf(IsNan(trend[1]) == False,trend[1], trend); trend = IFf(trend == -1 and close > dn1 , 1 , iff(trend == 1 and close < up1 , -1 , trend)); if trend == 1 Then plot1(up,"Trend",upcolor); Else Plot1(dn,"Trend",downcolor); 위 트랜드 라인을 다른변수로 2개 더 추가하고 싶습니다 부탁드립니다 감사합니다
프로필 이미지
만강
2025-02-19
600
글번호 188312
지표