커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

시스템식 요청과 질문 올립니다

감사합니다 1. 다음 시스템식을 부탁드립니다 전일종가가 그저께저가보다 낮고, 당일 60분봉이 몸체길이 1포인트 이상의 양봉이면 60분봉의 '저가+(고가-저가)*0.25'(소수둘째자리에서 반올림)에 2계약을 매수하고 고가+0.5에 2계약을 매도한다 전일종가가 그저께 고가보다 높고, 당일 60분봉이 몸체길이 1포인트 이상의 음봉이면 60분봉의 '고가-(고가-저가)*0.25(소수둘째자리에서 반올림)에 2개를 매도하고 저가-0.5에 2계약을 매수한다 체결되면 매도는 몸통길이 1포인트 이상의 양선에서 (고가+저가)/2 가격에 매수한다 매수는 몸통길이 1포인트 이상의 음선에서 (고가+저가)/2 가격에 매도한다. 모든 체결 건의 trailing stop은 진입가 대비 진입후 최대이익의 80%이다.(str주문가격은 소수둘째자리에서 반올림한다) 모든 스탑로스주문은 4포인트이다. 2. 질문드립니다. 1) 동일한 시스템식을 첫번째 60분봉에서 한번. 그리고 다음 60분봉에서 한번만 사용하려면 어떻게 합니까? 그리고 동일 로직을 60분봉, 20분봉에서 각각 적용하려면 어떻게 하는지요 시스템식을 자동매매로 사용하기 위하여 어떤 방법과 절차를 거쳐야 하는지 전반적인 설명을 해주시면 고맙겠습니다. 2)혹시 trailing stop이 체결되면 원래 진입가격에 동일한 수량으로 재진입하게 할 수는 없습니까? 3) trailing stop이나 stoploss 주문은 당일에만 유효합니까? 혹시 다음날에도 가능한지요 4) if marketposition ==1 Then if ......exitshort("sx1"); 이런 문장에서 혹시 계좌내에 다른 전략으로 보유하고 있는 매수포지션이 있는 경우에도 주문이 나갈 수 있습니까? 그리고 신호가 두번째 세번째 나온 때도 반복해서 주문이 실행되는지, 방지하려면 어떻게 하는지 궁금합니다. 감사합니다
프로필 이미지
가야금
2021-12-16
836
글번호 154528
시스템
답변완료

문의드립니다.

아래 수식을 예스로 부탁드립니다. 중심선도 부탁드리며 전봉대비 상하 색상구분되게 부탁드립니다. indicator("Nadaraya-Watson Envelope [LUX]",overlay=true,max_bars_back=1000,max_lines_count=500,max_labels_count=500) length = input.float(500,'Window Size',maxval=500,minval=0) h = input.float(8.,'Bandwidth') mult = input.float(3.) src = input.source(close,'Source') up_col = input.color(#39ff14,'Colors',inline='col') dn_col = input.color(#ff1100,'',inline='col') //---- n = bar_index var k = 2 var upper = array.new_line(0) var lower = array.new_line(0) lset(l,x1,y1,x2,y2,col)=> line.set_xy1(l,x1,y1) line.set_xy2(l,x2,y2) line.set_color(l,col) line.set_width(l,2) if barstate.isfirst for i = 0 to length/k-1 array.push(upper,line.new(na,na,na,na)) array.push(lower,line.new(na,na,na,na)) //---- line up = na line dn = na //---- cross_up = 0. cross_dn = 0. if barstate.islast y = array.new_float(0) sum_e = 0. for i = 0 to length-1 sum = 0. sumw = 0. for j = 0 to length-1 w = math.exp(-(math.pow(i-j,2)/(h*h*2))) sum += src[j]*w sumw += w y2 = sum/sumw sum_e += math.abs(src[i] - y2) array.push(y,y2) mae = sum_e/length*mult for i = 1 to length-1 y2 = array.get(y,i) y1 = array.get(y,i-1) up := array.get(upper,i/k) dn := array.get(lower,i/k) lset(up,n-i+1,y1 + mae,n-i,y2 + mae,up_col) lset(dn,n-i+1,y1 - mae,n-i,y2 - mae,dn_col) if src[i] > y1 + mae and src[i+1] < y1 + mae label.new(n-i,src[i],'▼',color=#00000000,style=label.style_label_down,textcolor=dn_col,textalign=text.align_center) if src[i] < y1 - mae and src[i+1] > y1 - mae label.new(n-i,src[i],'▲',color=#00000000,style=label.style_label_up,textcolor=up_col,textalign=text.align_center) cross_up := array.get(y,0) + mae cross_dn := array.get(y,0) - mae alertcondition(ta.crossover(src,cross_up),'Down','Down') alertcondition(ta.crossunder(src,cross_dn),'Up','Up')
프로필 이미지
천외일성
2021-12-16
721
글번호 154527
지표
답변완료

수식 문의

Highest(H, BarsSinceEntry + 1) 가 20개의 봉이 지났는데도..즉 20봉안에 그 최고가가 갱신되지 않으면 청산하라 어떻게 표현하는게 좋을까요?
프로필 이미지
시스시스스템
2021-12-16
410
글번호 154526
시스템
답변완료

문의 드립니다

1분봉상에서 테스트해볼 시스템로직입니다. n봉 연속 음봉이 나오고, 연속 음봉의 하락폭이 k포인트(혹은 퍼센트) 이상일때 매수 진입 1포인트 이상 수익이 나면 청산, 0.5포인트 손실이 나도 청산 5분 경과시 무조건 청산 감사합니다.
프로필 이미지
JTH
2021-12-15
717
글번호 154525
시스템
답변완료

data 대체문자열

항상 신속하고 상세한 답변 주셔서 많은 도움을 받고 있습니다. 오늘도 미리 감사드립니다. 예를 들면 아래와 같이 여러 수식에서 data1을 쓰고 있는데 (data1 대신 data15 나 data25 로 지정할 수도 있습니다) 가격 = data1(C); 코드 = StrToNum(LeftStr(Data1(SymbolCode),3)); 행사가 = StrToNum(RightStr(Data1(SymbolName),5)); 혹시 data(n)을 특정 문자열에 지정해 두고 그 아래에서 data(n) 대신 해당 문자열을 쓸 수 있을까요? 그리고 INPUT 문을 통해서 외부 입력도 가능한 방법이 있는지요? 부탁 드립니다.
프로필 이미지
스퍼트시커
2021-12-15
567
글번호 154524
지표
답변완료

손절시에만 재진입 수식 부탁드립니다

안녕하세요. 항상 수고가 많으십니다. 질문드립니다 ----------------------------------------------------------------------- input : stopper1(1.0); input : stopper2(1.0); var1 = ma(c, 20); if dayindex > 0 and stime < 152000 then { if stime < 093000 then { if var1 > var1[1] then { buy("b1"); } } if stime >= 100000 then { if 이전에 손절 and var1 > var1[1] then { buy("b2"); } } } if IsEntryName("b1") == true Then SetStopLoss(stopper1, PointStop); if IsEntryName("b2") == true Then SetStopLoss(stopper2, PointStop); if IsEntryName("b1") == true and (stime == 151900 or CrossUp(stime, 151900)) Then { exitlong("b1청산"); } if IsEntryName("b2") == true and (stime == 151900 or CrossUp(stime, 151900)) Then { exitlong("b2청산"); } ------------------------------------------------------------------------------------ 위 전략식은 진입시간을 따로 분리하여 9시 30분 이전에 조건 만족하면 진입하여, 손절이 발생하지 않으면 15시 19분에 청산하고 9시 30분 이전에 진입하여 10시 이전에 손절 발생하면, 10시 이후에는 손절됐을 경우에만 재진입하려는 의도로 작성된 식입니다. "이전에 손절"을 수식으로 부탁드립니다. 감사합니다. 항상 좋은 일만 생기시길를 ~~
프로필 이미지
샐리짱
2021-12-15
549
글번호 154523
시스템

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

프로필 이미지
2wnwn
2021-12-15
8
글번호 154522
시스템
답변완료

문의

늘 감사드립니다. if문에서 한봉전 조건을 삭제해보라시는데 할 줄 몰라요ㅠ.ㅠ 도움 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의 > 안녕하세요 예스스탁입니다. 소리나 팝업창 출력에 문제가 없습니다. 작성하신 수식들은 현재봉에서 3%범위에만 있으면 소리나 경고창이 발생하는 것이 아닙니다. data2기준으로 한봉전에는 조건이 충족하지 않고 현재봉에서는 조건을 충족해야 합니다. 한봉전에는 3% 범위 밖이었다가 현재봉에서 3% 이내로 들어와야 합니다. if문에서 한봉전 조건을 삭제해 보시기 바랍니다. 즐거운 하루되세요 > 육각수 님이 쓴 글입니다. > 제목 : 문의 > 각 수치에서 3% 오차범위내에서 팝업과 알람이 울려야되는데 수치는 정확하게 맞는데 팝업도 알람도 안 울려서 뭐가 문제인지 모르겠어요. ₩도 다시 입력해봤지만 안 되네요. 다시 한 번 확인 부탁드려요. 1.월고월저기준가 input : 입력일(20211210),Per(3); var : 기준가(0,Data2),월고(0,Data2),월저(0,Data2); var : cond1(False,Data2),cond2(False,Data2),cond3(False,Data2); if data2(sdate == 입력일) Then 기준가 = data2(lowD(0)); if data2(sdate >= 입력일) Then { if Data2(월고 == 0 or (월고 > 0 and H > 월고)) Then 월고 = data2(h); if data2(월저 == 0 or (월저 > 0 and L < 월저)) Then 월저 = data2(l); } if 기준가 > 0 Then Plot1(기준가); if 월고 > 0 Then Plot2(월고); if 월저 > 0 Then Plot3(월저); Cond1 = Data2(C<=기준가*(1+Per/100) and C >= 기준가*(1-Per/100)); Cond2 = Data2(C<=월고*(1+Per/100) and C >= 월고*(1-Per/100)); Cond3 = Data2(C<=월저*(1+Per/100) and C >= 월저*(1-Per/100)); if cond1 == true and cond1[1] == False Then { PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav"); Alert("Cond1 조건충족"); } if cond2 == true and cond2[1] == False Then { PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav"); Alert("Cond2 조건충족"); } if cond3 == true and cond3[1] == False Then { PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav"); Alert("Cond3 조건충족"); } 2 특정일저가 input : 날짜(20211210),Per1(3); var : D2L(0,data2),scond1(False,Data2); if data2(sdate == 날짜) Then { D2L = data2(LowD(0)); } plot1(D2L); scond1 = Data2(C) <= D2L*(1+Per1/100) and Data2(C) >= D2L*(1-Per1/100); if scond1 == true and scond1[1] == true Then { PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav"); Alert("scond1 조건충족"); }
프로필 이미지
육각수
2021-12-15
703
글번호 154521
지표
답변완료

수식

안녕하세요. 항상 감사드립니다. 옵션 교차챠트를 만들어 보았습니다. 우측 현재가격을 콜은 빨강 / 풋은 파랑으로 보고 싶습니다. 콜은 빨강색 / 풋은 파랑으로 설정할수 있는 수식 부탁드립니다. 감사합니다.
프로필 이미지
한국사람73
2021-12-15
930
글번호 154516
지표