커뮤니티
예스랭귀지 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
분봉에서 나오는 종목 찾고 싶습니다.
강세 신호도 부탁 드립니다.~감사 합니다
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 선 돌파하는 종목 검색.
미리 감사드립니다.
2022-04-18
1147
글번호 158097
답변완료
합계값 이상
안녕하세요
수식을 작성중인데 특이사항이 있어 문의드립니다
data3~data12 개별값은 1이상인데 data3+data4+...data12 합계는 1로 계산됩니다
세부사항은 첨부파일 참고하세요
감사합니다
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) 당일 종가(봉)에서 콜옵션 등가의 당일시가 출력.
감사합니다.
출력
감사합니다.
2022-04-18
997
글번호 158092