커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식문의

안녕하세요, 선생님, 분봉챠트: 메인챠트에 3종목있고(data1, data2, data3) 아래 참조데이터 data4. data5 data6 있습니다. 문의: data4, data5, data6 종목의 전일시가들을 메인챠에서 출력. 감사합니다.
프로필 이미지
jw
2022-04-18
1233
글번호 158119
지표
답변완료

선긋기 문의2

네, 선긋는 방법은 알겠습니다. 그런데, 이번 화면처럼 2종목을 같은 화면에 불러서 각각의 선을 긋는 지표수식를 부탁드립니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 선긋기 문의 > 안녕하세요 예스스탁입니다. 수식에서 수평선으로 처리하기 위해서는 추세선함수를 이용해야 합니다. 추세선함수가 미완성봉의 값은 그리지 못하며 최종 완성봉(다음봉시가수신)기준으로만 그릴수 있습니다. 차트상 가장 마지막봉 기준으로는 그리지 못합니다. 마지막 완성봉기준으로 그리신다면 아래식 사용하시면 됩니다. var : TL(0); var1 = ma(C,20); TL_Delete(TL); TL = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1); TL_SetExtLeft(TL,true); TL_SetColor(TL,Green); 즐거운 하루되세요 > kimfeel 님이 쓴 글입니다. > 제목 : 선긋기 문의 > 안녕하세요, 아래 그림처럼 선이 분봉에 따라 변하면서 그려진 값이 그대로 있는 것이 아닌, 최종값으로 일정하게 그리는 방법 문의드립니다. (시간 지나서 분봉최종값이 변하면 선값은 변하겠죠) 감사합니다.
프로필 이미지
kimfeel
2022-04-18
1461
글번호 158118
지표
답변완료

수식 질문드립니다.

if exitb!=0 Then text_New(sDate,sTime,L,"준비"); 여기서 글씨 위치를 한칸더 아래나 더 위로 바꿀수없을까요?? 감사합니다.
프로필 이미지
캣피쉬
2022-04-18
1400
글번호 158108
지표
답변완료

CT를 YT로 변환 오류 검토 부탁드립니다.

항상 감사 드립니다. 아래 수식 두 개 검토 부탁드립니다. /* #======================================================# # YT <수식 3-21> 분차트를 이용한 단기매매전략 # SS_RangeBreak(v 0.2) # 10분봉, 2000/01/04 ~ 2003/09/30 #======================================================# 의문점 방향성 청산에 Var1 이 사용되었는데, Var1은 아래 식으로 한정이 되어 있다. 값을 가져 올 수 없다. If method == 0 then Var1=dayhigh(1)-daylow(1) ; // 전일 range 미작동 매수 진입/청산만 작동하고 , 매도 진입/청산은 작동하지 않는다. 청산식이 매수추적스탑만 나온다 . 매도진입이 없으니 매도추적스탑은 당근 없고 시가청산, 당일청산loss 가 작동하지 않는다. 그러면, 원 수식의 블록{ } 지정 오류인 것인가 컨버젼의 블록{ } 지정 오류인 것인가 #======================================================# # YT <수식 3-22> 일간차트를 이용한 단기매매 전략 # 이름: S_Rangebreak(v 0.2) # 체크 대상 : Setbarback, open[-1], I_MarketPosition, i_Entryprice #======================================================# /* # 체크 대상 : Setbarback, open[-1], I_MarketPosition, i_Entryprice SetBarBack : [설명] 실시간에서 현재 봉 시가를 이용해 현재 봉에 주문실행이 가능하도록 설정 예문 : 미래값 참조(open(-1)) 실시간 실전매매에서 일봉상의 금일저가보다 내일시가가 100원 떨어져서 시작하면 매수하라는 예 Setbarback If low >= open(-1) + 100 Then Call buy("매수", Atmarket) End If CT 에서는 Setbarback 함수가 있는데, YT에서는 없는 것 같다. 대체를 할 수 있는 함수나 문법스킬은 무엇인가, 1일봉전 참조하면 되지 않는가? (DATA2) open[-1] : YT에서 미래봉 참조가 가능한가? I_MarketPosition CT는 전체 수식 영역에서 사용가능하나, YT는 전략식에서는 사용불가 , 대체방법은? 전략식에서 MarketPosition 으로 충분하지 않은가, I_MarketPosition을 사용하는 이유는? i_Entryprice */ /* #======================================================# # CT <수식 3-21> 분차트를 이용한 단기매매전략 # SS_RangeBreak(v 0.2) # 10분봉, 2000/01/04 ~ 2003/09/30 #======================================================# <수식 3-21> 분차트를 이용한 단기매매전략 영역: 전략 이름: SS_RangeBreak(v 0.2) Input: len(0.37), atrlen(20), len1(3.2), entrystart(920), entrylimit(1430), dayin(3), method(0) ‘기본식------------------------------------------------------------- Ifmethod=0 then Var1=highd(1)-lowd(1) Cond1=exitname(1)="매수추적스탑"Andtdate=exitdate(1)Andtdate=Entrydate(1)_ Andexitprice(1)>opend+Var1*len Cond2=exitname(1)="매도추적스탑"Andtdate=exitdate(1)Andtdate=Entrydate(1)_ Andexitprice(1)<opend-Var1*len Cond3=exitname(1)="매수추적스탑"Andtdate=exitdate(1)Andtdate<>Entrydate(1)_ Andexitprice(1)>opend+Var1*len Cond4=exitname(1)="매도추적스탑"Andtdate=exitdate(1)Andtdate<>Entrydate(1)_ Andexitprice(1)<opend-Var1*len If ttime>Entrystart And ttime<Entrylimit Then IfCond1=False And Cond3=False Then Callbuy("매수",Atstop,Def,opend+Var1*len) EndIf IfCond2=False And Cond4=False Then Callsell("매도",Atstop,Def,opend-Var1*len) EndIf EndIf If position<>0 Then Callexitlong("매수추적스탑",Atstop,hhv(1,high,barnumsinceEntry+1)-atr(atrlen)*len1) Callexitshort("매도추적스탑",Atstop,llv(1,low,barnumsinceEntry+1)+atr(atrlen)*len1) EndIf ‘손실발생당일청산----------------------------------------------------- Elseif method=1 or method=2 or method=3 then If ttime =1450 And position<>0 Then ‘2시50분에포지션이 있다면 If position=1 And Entryprice > close Then ‘진입가격보다종가가낮다면 Callexitlong("당일청산",Atmarket) EndIf Ifposition=-1 And Entryprice<close Then Callexitshort("당일청산",Atmarket) EndIf EndIf ‘방향성청산---------------------------------------------------------- Elseif method=2 or method=3 then If ttime=1450 And position<>0 Then Ifposition=1 And (opend-Var1*len>lowdOrEntryprice>close) Then Callexitlong("당일청산",Atmarket) EndIf Ifposition=-1 and (opend+var1*len<highdorEntryprice<close)Then Callexitshort("당일청산",Atmarket) EndIf EndIf ‘ProfitableOpenStop--------------------------------------------------- Elseif method=3 then If position=0 Then ‘날짜변경을카운트하기위한식 Var50=0 ‘초기화 EndIf If tdate<>tdate(1) And position<>0 Then ‘포지션이있으면서날짜가변경되면 Var50=Var50 +1 ‘카운트를 1씩증가시킨다. EndIf If Var50=dayin And tdate<>tdate(1) And position<>0 Then ‘카운트가 지정한숫자가 되면 If Entryprice < opend Then ‘진입가격보다시가가크면 Callexitlong("시가청산",Atmarket) ‘청산 EndIf If Entryprice>opend Then Callexitshort("시가청산",Atmarket) EndIf EndIf EndIf */ #======================================================# # YT <수식 3-21> 분차트를 이용한 단기매매전략 # SS_RangeBreak(v 0.2) # 10분봉, 2000/01/04 ~ 2003/09/30 #======================================================# Input: len(0.37), atrlen(20), len1(3.2), entrystart(092000), entrylimit(143000), dayin(3), method(0) ; //'기본식------------------------------------------------------------- //If method == 0 then Var1=dayhigh(1)-daylow(1) ; // 전일 range Condition1= exitname(1) == "매수추적스탑" And date == exitdate(1) And date == Entrydate(1) And exitprice(1)>dayopen+Var1*len ; Condition2= exitname(1) == "매도추적스탑" And date == exitdate(1) And date == Entrydate(1) And exitprice(1)<dayopen-Var1*len ; Condition3= exitname(1) == "매수추적스탑" And date == exitdate(1) And date <> Entrydate(1) And exitprice(1)>dayopen+Var1*len ; Condition4= exitname(1) == "매도추적스탑" And date == exitdate(1) And date <> Entrydate(1) And exitprice(1)<dayopen-Var1*len ; If Entrystart < time And time < Entrylimit Then { If Condition1 == False And Condition3==False Then buy("매수",Atstop,dayopen+Var1*len) ; If Condition2 == False And Condition4==False Then sell("매도",Atstop,dayopen-Var1*len) ; } If MarketPosition<>0 Then { exitlong("매수추적스탑",Atstop,NthHighest(1,high,BarsSinceEntry+1)-atr(atrlen)*len1) ; exitshort("매도추적스탑",Atstop,NthLowest(1,low,BarsSinceEntry+1)+atr(atrlen)*len1) ; } //'손실발생당일청산----------------------------------------------------- //Else if method == 1 Or method == 2 Or method == 3 then { if method == 1 Or method == 2 Or method == 3 then { If time ==145000 And MarketPosition<>0 Then { //'2시50분에포지션이 있다면 If MarketPosition==1 And Entryprice > close Then //'진입가격보다종가가낮다면 exitlong("당일청산lloss",Atmarket) ; If MarketPosition == -1 And Entryprice<close Then exitshort("당일청산sloss",Atmarket) ; } } //'방향성청산---------------------------------------------------------- Else if method == 2 Or method == 3 then { If time==145000 And MarketPosition<>0 Then { If MarketPosition == 1 And (dayopen-Var1*len>daylow Or Entryprice>close) Then exitlong("당일청산ldirection",Atmarket) ; If MarketPosition == -1 And (dayopen+var1*len<dayhigh Or Entryprice<close) Then exitshort("당일청산sdirection",Atmarket) ; } } //'ProfitableOpenStop--------------------------------------------------- Else if method == 3 then { If MarketPosition==0 Then //'날짜변경을 카운트하기 위한 식 Var50=0 ; //'초기화 If date<>date[1] And MarketPosition<>0 Then //'포지션이 있으면서 날짜가 변경되면 Var50=Var50 +1 ; //'카운트를 1씩증가시킨다. If Var50==dayin And date<>date[1] And MarketPosition<>0 Then { //'카운트가 지정한숫자가 되면 If Entryprice < dayopen Then //'진입가격보다 시가가 크면 exitlong("시가청산l",Atmarket) ; //'청산 If Entryprice > dayopen Then exitshort("시가청산s",Atmarket) ; } } /* #======================================================##======================================================# #======================================================# # CT <수식 3-22> 일간차트를 이용한 단기매매 전략 # 이름: S_Rangebreak(v 0.2) # 일봉, 2000/01/04 ~ 2003/09/30 #======================================================# Input: len(0.4), atrlen(3), profitlen(2), stoplen(4), len1(21), method(0) ‘진입전략------------------------------------------------------------ Var1=high-low ‘시가고가의 거리= range Setbarback ‘ 주문발생시점 한봉전으로 If open(-1)<=open then ‘내일시가가오늘 시가보다적거나같으면 Callbuy("매수",Atstop,Def,open(-1)+var1*len) Endif If open(-1)>open then ‘내일 시가가오늘시가보다크면 Callsell("매도",Atstop,Def,open(-1)-var1*len) Endif Ifmethod=1then ‘시가청산조건식------------------------------------------------------- Ifi_position<>i_position(1)Then Var10=0‘초기화 Var11=0‘초기화 EndIf Ifi_position=1Andopen(-1)>=i_Entryprice+atr(atrlen)Then ‘현재매수상태이며진입이후 시가가진입가보다일정수준 이상이면 Var10=var10+1 ‘var10을1씩증가 ElseIfi_position=-1Andopen(-1)<=i_Entryprice-atr(atrlen)Then ‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이하이면 Var10=var10+1 ‘var10을1씩증가 EndIf Ifi_position=1Andopen(-1)<=i_Entryprice Then ‘현재매수상태이며진입이후 시가가진입가 보다일정수준 이하이면 Var11=var11+1 ‘var11을1씩증가 elseIfi_position=-1Andopen(-1)>=i_EntrypriceThen ‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이상이면 Var11=var11+1 ‘var11을1씩증가 EndIf ‘수익발생시가청산----------------------------------------------------- Ifposition=1Then IfVar10=profitlenThen Callexitlong("시가청산",Atmarket) EndIf Elseifposition=-1Then IfVar10=profitlenThen Callexitshort("시가청산",Atmarket) EndIf EndIf ‘손실발생시가청산----------------------------------------------------- Ifposition=1Then IfVar11=stoplenThen Callexitlong("손실청산",Atmarket) EndIf Elseifposition=-1Then IfVar11=stoplenThen Callexitshort("손실청산",Atmarket) EndIf EndIf ‘ATR추적스탑-------------------------------------------------------- Ifposition=1Then Callexitlong("추적스탑",Atstop,hhv(1,high,i_barnumsinceEntry+1)-atr(atrlen)*len1) Elseifposition=-1Then Callexitshort("추적스탑",Atstop,llv(1,low,i_barnumsinceEntry+1)+atr(atrlen)*len1) EndIf EndIf */ #======================================================# # YT <수식 3-22> 일간차트를 이용한 단기매매 전략 # 이름: S_Rangebreak(v 0.2) # 일봉, 2000/01/04 ~ 2003/09/30 # 체크 대상 : Setbarback, open[-1], I_MarketPosition, i_Entryprice #======================================================# Input: len(0.4), atrlen(3), profitlen(2), stoplen(4), len1(21), method(0) ; //‘진입전략------------------------------------------------------------ Var1=high-low ; //‘시가고가의 거리= range #Setbarback ; //‘ 주문발생시점 한 봉전으로 #Setbarback ; // YT에서 대체할 수 있는 방법은? 왜 쓰는가? 참조나 index로 제어가 안되는가? ### open[-1] YT에서 내일시가란 개념이 없는것 같은데 If open[-1] <= open then //‘내일시가가 오늘시가보다 적거나 같으면 buy("매수", Atstop, open[-1]+var1*len) ; If open[-1] > open then //‘내일시가가 오늘시가보다 크면 sell("매도",Atstop, open[-1]-var1*len) ; If method == 1 Then { //‘시가청산조건식------------------------------------------------------- // If I_MarketPosition <> I_MarketPosition(1) Then { If MarketPosition <> MarketPosition(1) Then { Var10=0 ; //‘초기화 Var11=0 ; //‘초기화 } /* If I_MarketPosition == 1 And open[-1] >= i_Entryprice+atr(atrlen) Then //‘현재매수상태이며진입이후 시가가진입가보다일정수준 이상이면 Var10=var10+1 ; //‘var10을1씩증가 Else If I_MarketPosition ==-1 And open[-1] <= i_Entryprice-atr(atrlen) Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이하이면 Var10=var10+1 ; //‘var10을1씩증가 If I_MarketPosition == 1 And open[-1] <= i_Entryprice Then //‘현재매수상태이며진입이후 시가가진입가 보다일정수준 이하이면 Var11=var11+1 ; //‘var11을1씩증가 Else If I_MarketPosition ==-1 And open[-1] >= i_Entryprice Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이상이면 Var11=var11+1 ; //‘var11을1씩증가 */ If MarketPosition == 1 And open[-1] >= Entryprice+atr(atrlen) Then //‘현재매수상태이며진입이후 시가가진입가보다일정수준 이상이면 Var10=var10+1 ; //‘var10을1씩증가 Else If MarketPosition ==-1 And open[-1] <= Entryprice-atr(atrlen) Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이하이면 Var10=var10+1 ; //‘var10을1씩증가 If MarketPosition == 1 And open[-1] <= Entryprice Then //‘현재매수상태이며진입이후 시가가진입가 보다일정수준 이하이면 Var11=var11+1 ; //‘var11을1씩증가 Else If MarketPosition ==-1 And open[-1] >= Entryprice Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이상이면 Var11=var11+1 ; //‘var11을1씩증가 //‘수익발생시가청산----------------------------------------------------- If MarketPosition == 1 Then If Var10 == profitlen Then exitlong("시가청산L",Atmarket) ; Else If MarketPosition == -1 Then If Var10 == profitlen Then exitshort("시가청산S",Atmarket) ; //‘손실발생시가청산----------------------------------------------------- If MarketPosition == 1 Then If Var11 == stoplen Then exitlong("손실청산L",Atmarket) ; Else If MarketPosition == -1 Then If Var11 == stoplen Then exitshort("손실청산S",Atmarket) ; //‘ATR추적스탑-------------------------------------------------------- If MarketPosition == 1 Then exitlong("추적스탑L",Atstop,NthHighest(1,high,BarsSinceEntry+1)-atr(atrlen)*len1) ; Else If MarketPosition == -1 Then exitshort("추적스탑S",Atstop,NthLowest(1,low,BarsSinceEntry+1)+atr(atrlen)*len1) ; }
프로필 이미지
목포댁
2022-04-18
1757
글번호 158107
시스템
답변완료

부탁 드립니다.

종가>bbandsup(20,2) && 거래량>A && 거래량(1)*2.2<거래량 && 시가*1.021<종가 && highest(고가,5) && highest(거래량,5) 지표조건 A=100000 분봉에서 나오는 종목 찾고 싶습니다. 강세 신호도 부탁 드립니다.~감사 합니다
프로필 이미지
hg950265
2022-04-18
1420
글번호 158106
종목검색
답변완료

종목 검색식 부탁 드립니다.

CrossUp(StochasticsSlow(Period1,Period2),buyLevel) buyLevel 20 Period1 5 Period2 3 키움증원 스토캐스틱 매수 신호 입니다. 이걸로 종목검색식 부탁드립니다. 감사합니다.
프로필 이미지
칼이쓰마빡가
2022-04-18
1937
글번호 158099
종목검색
답변완료

지표 질문입니다

일간차트같이 쓸수 있는 3일 차트를 만드는 수식을 부탁드립니다 감사합니다
프로필 이미지
회원
2022-04-18
976
글번호 158098
지표
답변완료

DMI 지표 관련 종목 검색식 문의

안녕하세요. 항상 감사드립니다. DMI 지표 관련 종목 검색식 부탁드립니다. 1) 40개 캔들 이내에서 PDI 가 35 이상에서 5개 캔들이 지속되는 동시에 MDI가 12 이하에서 5개 캔들 지속( PDI 조건 and MDI 조건) 2) MACD가 Signal 선 돌파하는 종목 검색. 미리 감사드립니다.
프로필 이미지
pareter
2022-04-18
1222
글번호 158097
종목검색
답변완료

합계값 이상

안녕하세요 수식을 작성중인데 특이사항이 있어 문의드립니다 data3~data12 개별값은 1이상인데 data3+data4+...data12 합계는 1로 계산됩니다 세부사항은 첨부파일 참고하세요 감사합니다
프로필 이미지
thrupass
2022-04-18
1181
글번호 158094
지표