커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 질문드립니다.

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

부탁 드립니다.

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

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

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

지표 질문입니다

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

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

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

합계값 이상

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

문의드립니다.

작성해 주신 수식의 조건식을 아래와 같이 수정하려고 합니다. ~~~~~~~~~~ 조건식 수정: 3분봉에서 기준선A와 기준선B 가 예비선으로 준비되어 있습니다. 매수: 3분봉 종가가 무포지션이나 매도포지션시 기준선A 를 crossup 이 발생하면 매수하는데요 무포이면 1단계로 1계약을 매수하고 매도물량이 있으면 전량 청산하고 1계약 매수합니다. 1단계 매수진행후 손절은 (기준선 A -일봉 시가) 만큼 떨어지면 손절합니다. 1단계 매수후에 일봉종가가 양봉이면 2단계로 1계약 추가 매수합니다. 2단계 손절은 2차 매수 가격대비 (기준선 A -일봉 시가) 만큼 떨어지면 손절합니다. 1단계와 2단계에서 (단 3단계부터의 손절시는 그냥 손절만 하고 반대포지션을 안취합니 다.) 손절시 손절과 동시에 반대포지션 1계약 매도합니다. 그 후 즉 매수손절과 동시에 1단계 반대 매도 포지션후 위의 (기준선 A -일봉 시가) 만큼다시 하락하면 2단계 매도로 1계약 추가 매도합니다. 2단계후 또 다시 200틱 수익이 더 날 때마다 1계약 추가 매도를 계속 진행 합니다. 이 때 1단계 2단계 반대 포지션시 손절은 앞에서와 마찬가지로 매도후 가장 최근의 매도 가격대비 (기준선 A -일봉 시가) 만큼 상승하면 손절합니다. 3단계이상의 반대포지션시 손절은 평균 매도 가격입니다. 매수후 2단계후 또 다시 200틱 수익이 더 날 때마다 1계약 추가 매수를 계속 진행 합니다. 2단계후 3단계부터는 손절선은 평균 매수가격입니다. 매도도 반대 논리로 부탁드립니다. 다만 매도의 기준선은 기준선 B 입니다. ~~~~~~~~~~~~~~~ 아래는 원래 수식입니다. 안녕하세요 예스스탁입니다. 파리미딩은 모든진입신호허용으로 설정하고 적용하시면 됩니다. var : cnt(0),bc(0),bo(0),b(0),ac(0),ao(0),a(0),t(0); if NextBarSdate != sDate Then { if C < DayOpen Then { B = -1; For cnt = 1 to 99 { if B == -1 and DayClose(cnt) < DayOpen(cnt) and DayClose(0) < DayClose(cnt) and DayOpen(0) < DayOpen(cnt) Then { bc = DayClose(0); bo = DayOpen(cnt); b = (bc+bo)/2; } } } if C > DayOpen Then { A = -1; For cnt = 1 to 99 { if A == -1 and DayClose(cnt) > DayOpen(cnt) and DayClose(0) > DayClose(cnt) and DayOpen(0) > DayOpen(cnt) Then { ac = DayClose(0); ao = DayOpen(cnt); a = (ac+ao)/2; } } } } if MarketPosition <= 0 and ((a > 0 and CrossUp(C,a)) or (b > 0 and CrossUp(C,b))) Then Buy("b"); if MarketPosition >= 0 and ((a > 0 and CrossDown(C,a)) or (b > 0 and CrossDown(C,b))) Then Sell("s"); if MarketPosition == 1 Then { buy("bb",AtStop,LatestEntryPrice(0)+PriceScale*200); if MaxEntries >= 2 Then ExitLong("bx",AtStop,AvgEntryPrice); } if MarketPosition == -1 Then { Sell("ss",AtStop,LatestEntryPrice(0)-PriceScale*200); if MaxEntries >= 2 Then ExitShort("sx",AtStop,AvgEntryPrice); } 즐거운 하루되세요 > 종호 님이 쓴 글입니다. > 제목 : 문의드립니다. > 3분봉에서 기준선A와 기준선B 가 예비선으로 준비되어 있습니다. 3분봉 종가가 기준선 2개 중에 어는 한선이라도 crossup 이 발생하면 매수하는데요 무포지션이면 1계약을 신규 매수하고 매도물량이 있으면 전량 청산하고 1계약 매수합니다. 매수후에 200틱 이익이 나면 1계약 매수하고 또 다시 200틱 수익이 더 날 때마다 1계약 추가 매수를 계속 진행 합니다. 1단계 매수진행은 손절선이 없고 다단계로 매수가 진행될 경우에만 손절가격이 정해지는데 평균 매수 가격이 손절가격이 됩니다. 매도도 반대 논리로 부탁드립니다.
프로필 이미지
종호
2022-04-18
1291
글번호 158093
시스템
답변완료

수식문의

안녕하세요, 선생님. 문의 분붕에서: 1) 콜옵션 (전일)등가의 전일시가출력, 2) 당일 종가(봉)에서 콜옵션 등가의 당일시가 출력. 감사합니다. 출력 감사합니다.
프로필 이미지
jw
2022-04-18
997
글번호 158092
지표