커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

저번에 질문드렸던것입니다. 수정부탁드립니다^^

수식에 오류가 있는것 같아요^^ 청산을 하지 않습니다^^ 좋은.. 건가요^^? 손절이 없어요 손실중이면 몇일이고 청산을 하지 않습니다^^ 원웨이장 만나면 나락갈거 같아요~ 감사하지만 수정 부탁드립니다^^ 귀찮게 해드려 죄송합니다^^ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : 질문이 많아 죄송합니다. > 안녕하세요 예스스탁입니다. 식을 수정했습니다. 상승전환시 기존에 진입한 매도포지션이 수익이면 청산하고 매수진입 실행 손실이면 청산만 실행 하락전환시 기존에 진입한 매수포지션이 수익이면 청산하고 매도진입 실행 손실이면 청산만 실행 위 구조로 동작하게 됩니다. 스위칭시 손실이면 스위칭을 하지 않고 진입을 한번 건너뛰게 됩니다. input : Period(5); Array : HD[10](0),HT[10](0),HV[10](0); //고점 날짜, 시간, 가격 저장할 배열 Array : LD[10](0),LT[10](0),LV[10](0); //저점 날짜, 시간, 가격 저장할 배열 var : cnt(0),Hprice(0),Lprice(0); var : UpTrend(false),DownTrend(False),Trend(0); var : ZigZagTL(0),HTL(0),LTL(0),HTX(0),LTX(0); HPrice = H; LPrice = L; if Index == 0 Then { //초기 최고값 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //초기 최저값 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; } Else { UpTrend = HPrice >= Highest(HPrice,Period)[1]; DownTrend = LPrice <= Lowest(LPrice,Period)[1]; //상승추세 전환 if trend <= 0 and UpTrend == true Then { //추세구분 1 trend = 1; if (MarketPosition == 0 ) or (MarketPosition == -1 and PositionProfit(0) >= 0) Then Buy("b"); if MarketPosition == -1 and PositionProfit(0) > 0 Then ExitShort("sx"); //과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동 For cnt = 9 DownTo 1 { HD[cnt] = HD[cnt-1]; HT[cnt] = HT[cnt-1]; HV[cnt] = HV[cnt-1]; } //0번방에 날짜, 시간, 가격 저장 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //직전 저점에서 현재 고점까지 연결선 출력 ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]); //색상은 Red TL_SetColor(ZigZagTL,Gray); //추세선 굵기는 1 TL_SetSize(ZigZagTL,1); HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]); TL_SetColor(HTL,Red); HTX = text_new(HD[0],HT[0],HV[0],NumToStr(HV[0],2)); Text_SetStyle(HTX,2,1); } Else if trend >= 0 and DownTrend Then//하락추세 전환 { //추세구분은 -1 trend = -1; if (MarketPosition == 0 ) or (MarketPosition == 1 and PositionProfit(0) >= 0) Then Sell("s"); if MarketPosition == 1 and PositionProfit(0) > 0 Then ExitLong("bx"); //과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동 For cnt = 9 DownTo 1 { LD[cnt] = LD[cnt-1]; LT[cnt] = LT[cnt-1]; LV[cnt] = LV[cnt-1]; } //0번방에 날짜, 시간, 가격 저장 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; //직전 고점에서 현재 저점까지 연결선 출력 ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]); //색상은 Blue TL_SetColor(ZigZagTL,Gray); //굴긱는 1 TL_SetSize(ZigZagTL,1); LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]); TL_SetColor(LTL,Blue); LTX = text_new(LD[0],LT[0],LV[0],NumToStr(LV[0],2)); Text_SetStyle(LTX,2,0); } Else { //상승구간 if trend == 1 Then { //고점이 갱신되면 if HPrice > HV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //지그재그 추세선의 끝점을 현재봉으로 이동 TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]); //고점 수평 추세선의 끝점을 현재봉으로 이동 TL_SetBegin(HTL,HD[0],HT[0],HV[0]); Text_SetString(HTX,NumToStr(HV[0],2)); Text_SetLocation(HTX,HD[0],HT[0],HV[0]); } } //하락구간 if trend == -1 Then { //저점이 갱신되면 if LPrice < LV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; //지그재그 추세선의 끝점을 현재봉으로 이동 TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]); //저점 수평 추세선의 끝점을 현재봉으로 이동 TL_SetBegin(LTL,LD[0],LT[0],LV[0]); Text_SetString(LTX,NumToStr(LV[0],2)); Text_SetLocation(LTX,LD[0],LT[0],LV[0]); } } TL_SetEnd(HTL,sDate,sTime,HV[0]); TL_SetEnd(LTL,sDate,sTime,LV[0]); } } 즐거운 하루되세요 > 말비 님이 쓴 글입니다. > 제목 : Re : Re : 질문이 많아 죄송합니다. > 잘 되다가 중간에 멈추는데 이유가 몰까요? 그냥 한세트 돌고 멈춰버리는것 같아보여요. 제가 말한건 # 에이코스 이전 매매 손실여부초기화 만약 상승추세시 {매수} 하방추세 전환시 {청산후 손절인지 익절인지 판단후 초기화상태 이거나 익절이였을경우 매도전환} 손절이였을경우 [비코스]로 만약 하방추세시 {매도} 상방추세 전환시 {청산후 손절인지 익절인지 판단후 초기화상태 이거나 익절이였을경우 매수전환} 손절이였을경우 [비코스]로 # 비코스 이전 매매 손실여부초기화 만약 상승추세시 {매도} 하방추세 전환시 {청산후 손절인지 익절인지 판단후 초기화상태 이거나 익절이였을경우 매수전환} 손절이였을경우 [에이코스]로 만약 하방추세시 {매도} 상방추세 전환시 {청산후 손절인지 익절인지 판단후 초기화상태 이거나 익절이였을경우 매수전환} 손절이였을경우 [에이코스]로 말이 안되는거 같기도 하고... 그냥 시스템언어 까막눈이라 생각나는데로만 적어봤습니다. 항상 감사드립니다~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 질문이 많아 죄송합니다. > 안녕하세요 예스스탁입니다. 현재 시스템이 매수와 매도가 반복되는 스위칭 시스템입니다. 반대조건 만족시 손실이면 청산만 하고 진입은 되지 않게 작성해 드립니다. input : Period(5); Array : HD[10](0),HT[10](0),HV[10](0); //고점 날짜, 시간, 가격 저장할 배열 Array : LD[10](0),LT[10](0),LV[10](0); //저점 날짜, 시간, 가격 저장할 배열 var : cnt(0),Hprice(0),Lprice(0); var : UpTrend(false),DownTrend(False),Trend(0); var : ZigZagTL(0),HTL(0),LTL(0),HTX(0),LTX(0); HPrice = H; LPrice = L; if Index == 0 Then { //초기 최고값 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //초기 최저값 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; } Else { UpTrend = HPrice >= Highest(HPrice,Period)[1]; DownTrend = LPrice <= Lowest(LPrice,Period)[1]; //상승추세 전환 if trend <= 0 and UpTrend == true Then { //추세구분 1 trend = 1; if (MarketPosition == 0 ) or (MarketPosition == -1 and PositionProfit(0) >= 0) Then Buy("b"); if MarketPosition == -1 and PositionProfit(1) > 0 Then ExitShort("sx"); //과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동 For cnt = 9 DownTo 1 { HD[cnt] = HD[cnt-1]; HT[cnt] = HT[cnt-1]; HV[cnt] = HV[cnt-1]; } //0번방에 날짜, 시간, 가격 저장 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //직전 저점에서 현재 고점까지 연결선 출력 ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]); //색상은 Red TL_SetColor(ZigZagTL,Gray); //추세선 굵기는 1 TL_SetSize(ZigZagTL,1); HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]); TL_SetColor(HTL,Red); HTX = text_new(HD[0],HT[0],HV[0],NumToStr(HV[0],2)); Text_SetStyle(HTX,2,1); } Else if trend >= 0 and DownTrend Then//하락추세 전환 { //추세구분은 -1 trend = -1; if (MarketPosition == 0 ) or (MarketPosition == 1 and PositionProfit(0) >= 0) Then Sell("s"); if MarketPosition == 1 and PositionProfit(1) > 0 Then ExitLong("bx"); //과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동 For cnt = 9 DownTo 1 { LD[cnt] = LD[cnt-1]; LT[cnt] = LT[cnt-1]; LV[cnt] = LV[cnt-1]; } //0번방에 날짜, 시간, 가격 저장 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; //직전 고점에서 현재 저점까지 연결선 출력 ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]); //색상은 Blue TL_SetColor(ZigZagTL,Gray); //굴긱는 1 TL_SetSize(ZigZagTL,1); LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]); TL_SetColor(LTL,Blue); LTX = text_new(LD[0],LT[0],LV[0],NumToStr(LV[0],2)); Text_SetStyle(LTX,2,0); } Else { //상승구간 if trend == 1 Then { //고점이 갱신되면 if HPrice > HV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 HD[0] = sDate; HT[0] = sTime; HV[0] = HPrice; //지그재그 추세선의 끝점을 현재봉으로 이동 TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]); //고점 수평 추세선의 끝점을 현재봉으로 이동 TL_SetBegin(HTL,HD[0],HT[0],HV[0]); Text_SetString(HTX,NumToStr(HV[0],2)); Text_SetLocation(HTX,HD[0],HT[0],HV[0]); } } //하락구간 if trend == -1 Then { //저점이 갱신되면 if LPrice < LV[0] Then { //갱신된 봉의 날짜/시간/가격으로 변경 LD[0] = sDate; LT[0] = sTime; LV[0] = LPrice; //지그재그 추세선의 끝점을 현재봉으로 이동 TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]); //저점 수평 추세선의 끝점을 현재봉으로 이동 TL_SetBegin(LTL,LD[0],LT[0],LV[0]); Text_SetString(LTX,NumToStr(LV[0],2)); Text_SetLocation(LTX,LD[0],LT[0],LV[0]); } } TL_SetEnd(HTL,sDate,sTime,HV[0]); TL_SetEnd(LTL,sDate,sTime,LV[0]); } } 즐거운 하루되세요
프로필 이미지
말비
2023-03-30
1458
글번호 167690
시스템
답변완료

수식변환 문의

아래 수식은 키움증권 영웅문 수식인데요 이 수식을 예스트레이더 종목검색식과 검색식으로 변환 부탁드려요(__) 1. //전일 종가가 저가(지지선)를 깨고 AA=C(1)<lowest(C(2), 60)*0.97; //Demark 목표고가 BB=if(C(1)>O(1), (H(1)+L(1)+C(1)+H(1))/2-L(1), (if(C(1)<O(1), (H(1)+L(1)+C(1)+L(1))/2-L(1), (H(1)+L(1)+C(1)+C(1))/2-L(1)) ) ); //Demark 기준값 CC=if(C(1)>O(1), (H(1)+L(1)+C(1)+H(1))/4, (if(C(1)<O(1), (H(1)+L(1)+C(1)+L(1))/4, (H(1)+L(1)+C(1)+C(1))/4) ) ); DD=(O>=BB) or crossup(C,BB); EE= (O>=CC) or crossup(C,CC); FF=V>=V(1)*Vmul; GG=C>O; HH=C(1)<=O; AA and (DD or EE) and FF and GG and HH 2. 지표변수 period_max:60 period_min:10 lower:90 upper:140 CANDLE=sum(1); AA=highest(C(1), 125); BB=valuewhen(1, crossup(C, AA), CANDLE); cloud1=( highest(high,9)+ lowest(low,9)+ highest(high,26)+ lowest(low,26) )/4; cloud2=( highest(high,52)+ lowest(low,52) )/2; condition= crossup(C, AA) and (CANDLE-BB(1)<period_max) and (period_min< CANDLE-BB(1)) and (lower<disparity(60) and disparity(60) <upper) and (C > cloud1(25) and C > cloud2(25)) and (O < cloud1(25)*1.3 and O < cloud2(25)*1.3)
프로필 이미지
anj
2023-03-30
2094
글번호 167689
종목검색
답변완료

문의드립니다.

안녕하세요. 이평 5개(5, 20, 60, 120, 200) Input적용. 이평 1~5가 모두 정배열 되는 시점에 빨간색 수직선 그리기. 이평 1~5가 모두 역배열 되는 시점에 파란색 수직선 그리기. 미리 감사합니다.
프로필 이미지
자동매매를알자
2023-03-30
1343
글번호 167688
시스템
답변완료

잔고 함수 문의

안녕하세요 잔고함수 관련 문의드립니다. 현재 적용한 주식 차트의 종목 보유수량 정보를 가져오려고 하는데요, 아래와 같이 작성했더니, 무조건 1로 표시하네요. 수식에 문제가 있을까요? 가원장 체크하였습니다. Quantity = GetPositionQuantity(SymbolCode,"2XX-XX-XXXXXX"); MessageLog("## 보유수량 = %.0f",Quantity);
프로필 이미지
edan
2023-03-30
1099
글번호 167687
시스템
답변완료

수식 변경 부탁드립니다!

안녕하세요 항상 감사드립니다 Keltner channel 지표 수식인데, YT꺼랑은 달라서 그런데, Yeslanguage로 변환 부탁드립니다. (__) 항상 감사드립니다. ----------------- //@version=5 indicator(title="Keltner Channels", shorttitle="KC", overlay=true, timeframe="", timeframe_gaps=true) length = input.int(20, minval=1) mult = input(2.0, "Multiplier") src = input(close, title="Source") exp = input(true, "Use Exponential MA") BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style") atrlength = input(10, "ATR Length") esma(source, length)=> s = ta.sma(source, length) e = ta.ema(source, length) exp ? e : s ma = esma(src, length) rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, length) upper = ma + rangema * mult lower = ma - rangema * mult u = plot(upper, color=#2962FF, title="Upper") plot(ma, color=#2962FF, title="Basis") l = plot(lower, color=#2962FF, title="Lower") fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background")
프로필 이미지
이만스닥
2023-03-30
1139
글번호 167686
지표

필승하고불패 님에 의해서 삭제되었습니다.

프로필 이미지
필승하고불패
2023-03-29
0
글번호 167685
사용자 함수
답변완료

Bu = BBandUp 무슨 함수 인가요?

제가 수식관리에서 신호를 넣을려는데 Bu = BBandUp(60,2); CrossUp(C,Bu(13)) 이런 메시지가 뜨네요 BBandUp가 정의되지 않습니다. 이유를 알려주세용
프로필 이미지
필승하고불패
2023-03-29
1191
글번호 167684
사용자 함수
답변완료

검색식 작성 문의 드립니다.

바쁘신 업무에 수고 많으십니다. 아래와 같이 검색식 작성 문의 드립니다. ㅁ 요청사항 1. 일봉챠트에서 일목 후행스팬선이 => 26일 신고가라인 골드크로스 돌파 하는 검색식 문의 드립니다.
프로필 이미지
옥스
2023-03-29
926
글번호 167683
검색
답변완료

종목검색 문의

아래 수식으로된 지표를 사용중인데요 'Red"선 또는 "Pink"선이 시작될 때의 종목을 찾는 종목검색 수식 부탁드려요 Input : Period(8); var : T(0); var1 = ma(C,Period*1); var2 = ma(C,Period*2); var3 = ma(C,Period*3); var4 = ma(C,Period*4); var5 = ma(C,Period*5); var6 = ma(C,Period*6); var7 = ma(C,Period*7); var8 = ma(C,Period*8); var8 = ma(C,Period*8); var9 = ma(C,Period*9); var10 = ma(C,Period*10); if var1 > Var2 and Var2 > Var3 and Var3 > Var4 and Var4 > Var5 and Var5 > Var6 and Var6 > Var7 and Var7 > Var8 and Var8 > Var9 and Var9 > Var10 Then T = 1; else if var1 < Var2 and Var2 < Var3 and Var3 < Var4 and Var4 < Var5 and Var5 < Var6 and Var6 < Var7 and Var7 < Var8 and Var8 < Var9 and Var9 < Var10 Then T = -1; Else T = 0; #이평최고 value1 = var1; if var1 > value1 Then value1 = var1; if var2 > value1 Then value1 = var2; if var3 > value1 Then value1 = var3; if var4 > value1 Then value1 = var4; if var5 > value1 Then value1 = var5; if var6 > value1 Then value1 = var6; if var7 > value1 Then value1 = var7; if var8 > value1 Then value1 = var8; if var9 > value1 Then value1 = var9; if var10 > value1 Then value1 = var10; #이평최저 value2 = var1; if var1 < value2 Then value2 = var1; if var2 < value2 Then value2 = var2; if var3 < value2 Then value2 = var3; if var4 < value2 Then value2 = var4; if var5 < value2 Then value2 = var5; if var6 < value2 Then value2 = var6; if var7 < value2 Then value2 = var7; if var8 < value2 Then value2 = var8; if var9 < value2 Then value2 = var9; if var10 < value2 Then value2 = var10; if T == 1 Then { if C > value1 Then Plot1(1,"지표",Red); Else Plot1(1,"지표",Pink); } if T == -1 Then { if C < value2 Then Plot1(-1,"지표",Blue); Else Plot1(-1,"지표",Yellow); }
프로필 이미지
anj
2023-03-29
910
글번호 167682
종목검색