커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6542
글번호 230811
답변완료
44707번글 관련 재수정 부탁드립니다.
이전 시스템식 수정건에 대해 먼저 감사의 말씀 드립니다
44707번글에서 제가 설명이 부족하여 44707번글은 무시하시고 다시 검토하여 시스템식 부탁드립니다.
개별종목의 악재나, 시장상황이 좋지 않은 경우(2의 경우) 일반적인 경우(1의 경우)보다 좀더 매수포인트를 낮게 잡기위해 그림과 같이 1과 2의 경우를 비교해 보았습니다.
input:시장보정계수(5); 를 설정해서 시가가 전일 종가대비 -6% 이상 하락한 경우 엔벨로프 P(10) : 매수위치1차(10)의 하단선 즉, 엔벨로프 10:10 하단선 보다 시장보정계수(5) 만큼 더 아래에 위치한 15:15 엔벨로프 하단선에서 매수하려는 시스템식입니다.
다시 정리하면 엔벨로프 {P(10)+시장보정계수(5)} : {매수위치1차(10)+시장보정계수(5)}
즉, 엔벨로프 15:15 의 하단선이 매수의 기준이 되어서 2의 경우의 매수위치1차, 매수위치2차, 매수위치3차가 결정됩니다.
마찬가지로 시가가 전일 종가대비 -6% 이상 하락한 경우
input: P(16), 매수위치1차(16), 시장보정계수(5); 인 경우
엔벨로프 21:21 의 하단선이 기준이 되어 여기에
input : 매수위치보정(1), 매수위치2차(7), 매수위치3차(14) 일때
엔벨로프 21:21의 하단선 1% 위에서 1차매수가 이루어 지고
엔벨로프 21:21의 하단선 7% 아래에서 2차매수가 이루어 지며,
엔벨로프 21:21의 하단선 14% 아래에서 3차매수가 이루어 집니다.
변경전 시스템식은 다음과 같습니다.
아래 시스템식에서 수정 부탁드립니다.
----------------------------------------------------------------------------------------
input : 전략식시작일자(20150422), 전략식시작시간(090000), 전략총매수금액(2000); # 금액은 만원단위
input : 전략식종료일자(20151021);
input : P(10),매수위치1차(10), 매수위치2차(7), 매수위치3차(14);
input : 매수위치보정(1);
input : 매도위치1차(7), 매도위치2차(14);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
input : 매도비중1차(50), 매도비중2차(50);
input : 전략식진입횟수(10);
input : 타점보유일수(3);
var : sum(0),mav(0),cnt(0),eup(0),edn(0),Didx(0),LatestEntryDidx(0),Ecnt(0);
var : TimeCond(false),Xcond1(false),Xcond2(false),Loss(0),LatestEntrylow(0);
#일자수 계산
if date != date[1] Then
Didx = Didx+1;
#당일포함 일봉 P개의 종가를 누적
sum = 0;
for cnt = 0 to P-1{
sum = sum+DayClose(cnt);
}
#누적값을 P로 나누어 평균값 산출
mav = sum/P;
#상단
Eup = mav+mav*(매수위치1차/100);
#하단
Edn = mav-mav*(매수위치1차/100);
#지정일 지정시간이 되면 TimeCond는 True(그전에는 false)
if sdate == 전략식시작일자 and (stime == 전략식시작시간 or (stime > 전략식시작시간 and stime[1] < 전략식시작시간 )) then
TimeCond = true;
if sdate > 전략식종료일자 Then
TimeCond = false;
#TimeCond가 True가 된 후
if TimeCond == true then{
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "1차매수" Then
Ecnt = Ecnt+1;
#무포지션 상태에서 매수위치1차에 도달하면 매수
if MarketPosition == 0 and Ecnt < 전략식진입횟수 Then
buy("1차매수",atlimit,Edn*(1+매수위치보정/100),Floor((전략총매수금액*10000/c)*(매수비중1차/100)));
#첫매수이후
if MarketPosition == 1 Then{
#최근 진입시점의 일자수 저장
if CurrentContracts > CurrentContracts[1] Then{
LatestEntryDidx = Didx;
LatestEntrylow = L;
}
#1차매수 발생 후 매수위치2차에 도달하면 매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,Edn[BarsSinceEntry]*(1-매수위치2차/100),Floor((전략총매수금액*10000/c)*(매수비중2차/100)));
#1차매수 발생 후 매수위치3차에 도달하면 매수
if MaxEntries == 2 Then
buy("3차매수",atlimit,Edn[BarsSinceEntry]*(1-매수위치3차/100),Floor((전략총매수금액*10000/c)*(매수비중3차/100)));
#1차매도가 한번 발생하면 더이상 발생못하도록 Xcond1은 true
if LatestExitName(0) == "1차매도" then
Xcond1 = true;
#2차매도가 한번 발생하면 더이상 발생못하도록 Xcond2는 true
if LatestExitName(0) == "2차매도" then
Xcond2 = true;
#Xcond1이 false일때
#진입이후 최저가에서 매도위치1차 만큼 상승하면 일부 청산
if Xcond1 == false Then
exitlong("1차매도",Atlimit,lowest(L,BarsSinceEntry)*(1+매도위치1차/100),"",Floor(MaxContracts*(매도비중1차/100)),1);
#Xcond2가 false일
#진입이후 최저가에서 매도위치2차 만큼 상승하면 전량청산
if Xcond2 == false Then
exitlong("2차매도",Atlimit,lowest(L,BarsSinceEntry)*(1+매도위치2차/100));
#최근 진입후 3일이상 경과(현재 일자수가 최근진입시점의 일자수보다 3이상증가)
if Didx >= LatestEntryDidx+타점보유일수 and Xcond1 == false and CurrentContracts == CurrentContracts[1] Then{
#최근 진입이후 3일되었을때의 최근진입일 포함3일 최저가 계산
if date != date[1] and Didx == LatestEntryDidx[BarsSinceEntry]+3 Then{
Loss = daylow(1);
for cnt = 1 to 타점보유일수{
if daylow(cnt) < Loss Then
Loss = daylow(cnt);
}
}
#Loss값 이하로 가격하락하면 전량 청산
exitlong("손절",AtStop,Loss);
}
#최종 매수일 포함 3일경과되면 다음날 시가에 매도
if Didx == LatestEntryDidx+(타점보유일수-1) and stime == 150000 Then{
exitlong("익절2",AtMarket);
}
#1차매도가 발생한 상황
#가장 최근 진입일의 당일최저가보다 낮은 시세 발생하면 전량청산
# if L < LatestEntrylow and Xcond1 == false Then
# LatestEntrylow = L;
# if Xcond1 == true and CurrentContracts == CurrentContracts[1] Then{
# exitlong("익절1",AtStop,LatestEntrylow);
# }
}
else{#매수포지션이 아니면 false로 초기화
Xcond1 = false;
Xcond2 = false;
}
}
2015-10-27
200
글번호 91793
답변완료
한 번 더 여쭤봅니다.
항상 답변 감사드립니다.
아래의 함수에서 좀 더 응용을 하고 싶은데, 쉽지 않네요.
결과치가 다르게 나오더라구요.
1. 가령 어제의 최고, 저가에서 각각 +0.5, -0.5가 됐을 때 매수 주문 같은 것을 추가하고 싶습니다. (단순히 주문 함수 다음에 +0.5를 넣으니 신호가 다르게 뜨더라구요.)
2. 이틀전 최고최저가를 기준으로 부탁드리겠습니다.
정말 감사합니다!
input : N(1);
var : Entry(0);
if bdate != Bdate[1] Then
Entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
Entry = Entry+1;
if entry < N and H < dayhigh(1) Then
buy("b",AtStop,dayhigh(1));
if entry < N and L > daylow(1) Then
sell("s",AtStop,daylow(1));
SetStopProfittarget(0.5,PointStop);
SetStopLoss(0.5,PointStop);
SetStopEndofday(150000);
2015-10-27
177
글번호 91792
답변완료
수식 요청 드립니다.
안녕하세요.
아래 작성해주신 1.조건수식 과, 2.기존 조건수식 의 합성이 잘 안되네요.
합성과 주석 설명 부탁 드립니다.
(예) 기존수식 매수 -> 1PT 이상 수익발생 후 -> 1.조건만족 전에 나온는 2.기존 수식의
매도신호 제한 => 1.조건만족 후, 2.기존수식의 매도신호만 허용 하는 수식 입니다.
*** 1.조건만족시 1.조건수식으로 매도 전환이 아니고 제한만 하는 수식 ***
*** 1.조건만족시 2.기존 수식의 매도신호로 전환하는 수식 입니다. ***
감사합니다.
1. 오버형 기존시스템의 신호제한 추가수식
var1 = ma(c,5);
var2 = ma(c,20);
if MarketPosition == 1 and
highest(H,BarsSinceEntry) >= EntryPrice+1 and
var1 < var2 and c < var1 and 매도조건 Then
sell();
if MarketPosition == -1 and
Lowest(L,BarsSinceEntry) <= EntryPrice-1 and
var1 > var2 and c > var1 and 매수조건 Then
buy();
2. 10분봉 설정변폭내 신호제한 시스템수식 (TRIX 예제 수식)
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
input : Pt(3);
if CrossUP(value1, value2) Then{
#첫매수
if MarketPosition == 0 Then
buy();
#추가매수
if MarketPosition != 0 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then
buy();
}
if CrossDown(value1, value2) Then{
#첫매도
if MarketPosition == 0 Then
sell();
#추가매도
if MarketPosition != 0 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then
sell();
}
-------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
var1 = ma(c,5);
var2 = ma(c,20);
if MarketPosition == 1 and
highest(H,BarsSinceEntry) >= EntryPrice+1 and
var1 < var2 and c < var1 and 매도조건 Then
sell();
if MarketPosition == -1 and
Lowest(L,BarsSinceEntry) <= EntryPrice-1 and
var1 > var2 and c > var1 and 매수조건 Then
buy();
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식 요청 드립니다.
> 안녕하세요.
수식 요청 드립니다.
오버형 기존시스템의 신호제한 추가수식 (이평 외부변수)
매수신호 발생 후 1PT(외부변수) 이상 수익이 발생하고
-> 20 이평선 위에 5 이평선이 있고 현재본의 종가도 20 이평선 위에 있는경우 매도신호 제한 하고
-> 5 이평이 20 이평선을 하향돌파 + 현재봉의 종가도 5 이평선을 하향 돌파시 부터 매도신호 허용하는 수식
매도신호 발생 후 1PT(외부변수) 이상 수익이 발생하고
-> 20 이평선 아래에 5 이평선이 있고 현재봉의 종가도 20 이평선 아래에 있는경우 매수신호 제한 하고
-> 5 이평선이 20 이평선을 상향돌파 + 현재봉의 종가도 5 이평 상향 돌파시 부터 매수신호 허용하는 수식
감사합니다.
2015-10-27
188
글번호 91791
답변완료
수식 요청 드립니다.
1. 20일선이 상향추세시
2. 5일선 밑에서 양봉이 생성될때
3. 매수진입
수식부탁드립니다.
2015-10-27
179
글번호 91790
yosong 님에 의해서 삭제되었습니다.
2015-10-27
16
글번호 91786
답변완료
지표문의
안녕하세요? 수고하십니다!
Text_SetStyle(var1,1,2);
Text_SetStyle(var2,1,2);
Text_SetStyle(var3,1,2);
Text_SetStyle(var4,1,2);
Text_SetStyle(var5,1,2);
Text_SetStyle(var6,1,2);
위와 같이 당일시가,중심가, 전일 고가.저가.종가.중심가 수치값 텍스트 출력시
오른쪽에 현재봉과 겹쳐지는데 조금 오른쪽으로 공간을 띄워서 현재봉이랑 겹쳐지지 않도록 할 수 없는지요?
감사합니다 ^*^
2015-10-27
127
글번호 91776
답변완료
수식 부탁드립니다
국내선물을 하는데요...
챠트틀을 입력해놓은 상태구요...
그 챠트틀에서 20일선의 색상에 따라 빨간색이면 매수,파란색이면 매도 포지션으로 진입하되...
색상이 빨간색이고 5일선을 이탈후 돌파할때, 다음봉 시가가 5일선값+6틱보다 같거나 작으면 매수 진입
색상이 파란색이고 5일선 돌파후 이탈할때,다음봉 시가가 5일선값-6틱보다 같거나 크면 매도 진입
이런 수식 좀 부탁드립니다~~^^
2015-10-27
125
글번호 91768
답변완료
지표식 수정 및 추가 부탁드립니다.
안녕하세요..수고 많으세요.
지표식 수정 및 추가 부탁드립니다.
1차매수가 된 후 날짜가 바뀜에 따라 해당 엔벨로프 하단선이 변해서 이와 관련된 2차매수타점, 3차매수타점이 실제 2차매수타점, 3차매수타점과 다르게 나오므로 차트에 플롯된 선이 실제와 다르게 나오고 있습니다.
따라서 그림과 같이 1차매수가 되었을 경우 매수되었을 당시 "매수위치1차", "매수위치2차", "매수위치3차"은 "익절"이나 "2차매도" 신호가 나와 수량이 0가 될때까지 변하지 않도록 수정해 주시고, 엔벨로프 하단선은 기존과 같이 해당 날짜에 맞도록 차트에 플롯이 되도록 부탁드립니다.
1차매수가 이루어 지지 않은 구간에서는 종전과 같이 차트에 "엔벨로프하단", "매수우치1차", "매수위치2차", "매수위치3차"가 표시되면 됩니다.
지표식은 아래와 같습니다.
--------------------------------------------------------------------------------
input : P(10),매수위치1차(10), 매수위치2차(7), 매수위치3차(14);
input : 매수위치보정(1);
var : sum(0),mav(0),cnt(0),eup(0),edn(0);
#당일포함 일봉 P개의 종가를 누적
sum = 0;
for cnt = 0 to P-1{
sum = sum+DayClose(cnt);
}
#누적값을 P로 나누어 평균값 산출
mav = sum/P;
#상단
Eup = mav+mav*(매수위치1차/100);
#하단
Edn = mav-mav*(매수위치1차/100);
plot1(Edn,"하단");
plot2(Edn*(1+매수위치보정/100),"매수위치1차");
plot3(Edn*(1-매수위치2차/100),"매수위치2차");
plot4(Edn*(1-매수위치3차/100),"매수위치3차");
2015-10-27
201
글번호 91767
답변완료
추세선의 연장선의 가격값구하기
TL_New 를 사용하여 A와 B를 잊는 추세선을 그릴때
현재봉까지 이어진 추세선의 가격을 알수있는 방법이 있나요?
2015-10-27
288
글번호 91762