커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1676
글번호 230811
답변완료
시스템식 문의 드립니다.
주식현물 시스템식 작성중에 궁금한게 있어 글을 남깁니다.
1. if Bdate != Bdate[1] Then
Condition1 = False;
위 식에서는 날짜가 하루 지나가게 되면 condition1 = false 로 바뀌게 되는걸로
알고 있는데
if NextBarSdate == sDate and (MarketPosition == 0 or
(MarketPosition == 1 and sDate == EntryDate)) Then
매수전에 사용되었던 조건식인데 해석이 잘 안됩니다. ㅜ.ㅜ 해석좀 부탁드립니다.
메뉴얼에는 nextbarsdate가 다음봉시작날짜라고 써 있는데
진입날짜 (ex)3/6일) 가 sdate에 저장되고 1분봉차트에서 다음봉이 나올때마다
sdate(3/6)일 날짜와 비교해서 맞으면 조건이 성립되는게 맞는건가요??
그럼 sdate와 bdate의 차이점이 몬지도 궁금합니다..
메뉴얼보니 sdate는 봉의 시작날짜이고 bdate는 영업일이라고 나오는데?
2. 3시에 매수해서 그 다음날 일봉상 3일선을 터치하면 추매하는 전략을 사용하려고
아래와 같은 시스템식을 작성하였는데 다음날 매수가 안됩니다.ㅜ.ㅜ
확인좀 부탁드리겠습니다.
왜 안되는걸까요??
매수포지션을 들고 있으면서 진입날짜로 부터 하루가 지나고, 3일선 아래로 돌파했을
때 매수해라 .. 제대로 작성한것 같은데..ㅜ.ㅜ
3. '손절' 같은 latestexitname 으로 가장 마지막 청산명으로 다시 매수가 안되게 진행하려고 하는데
시뮬레이션을 돌려보면 '손절' 이후에도 계속 매수 되도록 되어있네요
어떤부분이 안되는지 확인이 안되네요...
4. 3%, 4% 매수 청산하는 부분에서 최근진입명이 아래와같은 진입명인 경우를 빼고(제외하고) 나머지를 생각하면서 만든식인데
적용이 안되는것 같습니다.
if MarketPosition == 1 AND (LatestEntryName(0) != "S1" or LatestEntryName(0) != "S1(NEXT)" or LatestEntryName(0) != "BS1(상풀)") Then
추매했을경우 (0.3%, 1%) 해당 진입명은 아래와 같습니다.
if MarketPosition == 1 AND (LatestEntryName(0) == "S1" or LatestEntryName(0) == "S1(NEXT)" or LatestEntryName(0) == "BS1(상풀)") Then
결론적으로 추매했을경우에는 0.3, 1% 매수청산이고 추매하지 않았을경우에는 3,4% 매수청산인데
적용이 안되는것 같습니다. 도와주세요..ㅜ.ㅜ
5. 기초적인거 많이 물어봐서 죄송합니다. 그리고 항상 감사합니다.
------------------------------------------------------------------------------
input :금액1(500000),상한가(36500),손절금액(300000),N(3);
input : 익절(3),익절2(1);
var : cnt(0),sum(0),mav(0),DD(0);
var : day(0),entry(False),AP(0),TT(0);
var : LL(0),RR(0),rate(0);
sum = 0;
For cnt = 0 to N-1
{
sum = sum + DayClose(cnt);
}
mav = (sum/N)*1;
if Bdate != Bdate[1] Then
Condition1 = False;
entry = True;
if sTime > 120000 and C[0] >= DayClose(1)*1.265 Then
Condition1 = true;
if LatestExitName(0) == "손절" or (LatestEntryName(0) == "S1" or LatestEntryName(0) == "S1(NEXT)" or LatestEntryName(0) == "BS1(상풀)") Then
entry = False;
#여기서 부터 매수하기.
if NextBarSdate == sDate and entry == true and (MarketPosition == 0 or (MarketPosition == 1 and sDate == EntryDate)) Then
{
if condition1 == true OR LatestExitName(1) == "4%익절" Then
Buy("상한가매수",AtStop,상한가,Floor(금액1/min(NextBarOpen,상한가)));
if condition1 == true and IsEntryName("상한가매수") == true Then
Buy("BS1(상풀)",AtLimit,상한가*0.955,Floor(금액1/min(NextBarOpen,상한가*0.955)));
if condition1 == true Then
Buy("BS1",AtLimit,Dayclose(1)*1.235,Floor(금액1/min(NextBarOpen,Dayclose(1)*1.235)));
if condition1 == true and IsEntryName("BS1") == true and sdate >= EntryDate+1 and day <=1 Then
Buy("S1",AtLimit,Dayclose(1)*1.19,Floor(금액1/min(NextBarOpen,Dayclose(1)*1.19)));
if condition1 == true and IsEntryName("BS1") == true and sTime == 150800 Then
Buy("3시10분매수(1-1)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(1-1)") == true and sTime == 151300 Then
Buy("3시15분매수(1-2)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(1-1)") == true and sTime == 151700 Then
Buy("3시19분매수(1-3)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and MarketPosition == 0 and sTime == 150800 Then
Buy("3시10분매수(2-1)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(2-1)") == true and sTime == 151300 Then
Buy("3시15분매수(2-2)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(2-1)") == true and sTime == 151700 Then
Buy("3시19분매수(2-3)",AtMarket,floor(금액1/nextbaropen));
if MarketPosition == 1 and day >=2 and DayOpen*1.04>=DayHigh Then
Buy("S1(NEXT)",AtLimit,DayHigh*0.92,Floor(금액1/min(NextBarOpen,DayHigh*0.92)));
}
if MarketPosition == 1 and sdate >= EntryDate+1 and L > mav Then
Buy("담날추매",AtLimit,mav,Floor(금액1/min(NextBarOpen,mav)));
#여기서 부터 매도하기.
if MarketPosition == 1 AND (LatestEntryName(0) != "S1" or LatestEntryName(0) != "S1(NEXT)" or LatestEntryName(0) != "BS1(상풀)") Then
{
if LL == 0 then
LL = L;
Else
{
if L < LL then
LL = L;
}
RR = (LL-AVGEntryPrice)/AVGEntryPrice*100;
if RR >= -0.9 Then
Rate = 익절;
if RR >= -2.9 and RR < -0.9 Then
Rate = (익절+RR);
if RR < -2.9 Then
Rate = 0.3;
ExitLong("3%익절",AtLimit,AVGEntryPrice*(1+Rate/100),"",Floor(MaxContracts*0.5));
ExitLong("4%익절",AtLimit,AVGEntryPrice*(1.01+Rate/100));
}
Else
LL = 0;
#----------------------------------------------------------------------------
# 3%, 4% 매도 청산
#----------------------------------------------------------------------------
if MarketPosition == 1 AND (LatestEntryName(0) == "S1" or LatestEntryName(0) == "S1(NEXT)" or LatestEntryName(0) == "BS1(상풀)") Then
{
ExitLong("0.3%익절",AtLimit,AVGEntryPrice*1.003,"",Floor(MaxContracts*0.5));
ExitLong("1%익절",AtLimit,AVGEntryPrice*1.1);
}
Else
LL = 0;
#----------------------------------------------------------------------------
# 0.3%, 1% 매도 청산
#----------------------------------------------------------------------------
if MarketPosition == 1 Then
if sdate >= EntryDate+1 and sTime == 100000 Then
{
ExitLong("다음날 10시청산");
}
#----------------------------------------------------------------------------
# 다음날 10시 청산
#----------------------------------------------------------------------------
if MarketPosition == 1 Then
ExitLong("손절",AtStop,AvgEntryPrice-손절금액/CurrentContracts);
#----------------------------------------------------------------------------
# 손절
------------------------------------------------------------------------------
2022-03-09
1200
글번호 157040
답변완료
시스템 작성 부탁드립니다.
항상 수고가 많으십니다.
저는 스토캐스틱 모먼트 인텍스 중 period 1 과 period 2 의 숫자를 변경하여 plotno1만
체크하여 한선만 사용합니다.매수와 청산 / 매도와 청산 2가지로 만들어 주시면 감사하겠습
니다.
첫번째 식
매도 조건 : plotno1이 80선에 닿을 때 매도신호
청산 조건 : plotno1이 -80선에 닿을 때 청산
두번째식
매수 조건 : plotno1이 -80선에 닿을 때 매수신호
청산 조건 : plotno1이 80선에 닿을 때 청산
코로나로 힘드신 시기에 몸잘챙기시구요. 항상 감사합니다.
2022-03-09
1190
글번호 157039
답변완료
수식 문의 드립니다
안녕하세요
작성해주신 수식은 감사히 잘 사용하고있습니다
다름이 아니라 거래대금 전일비교 말고 그냥 거래대금을 색을 통일할수는 없을까요?
일반 거래대금은 검정색으로 부탁드리고
500억이상은 그대로 주황색
1000억이상은 형광색 (bright green)
으로 부탁드립니다~
번거롭게 해드려 죄송합니다
-------------------
var : color(0);
If m > m[1] Then
{
color = RED;
if m > 50000000000 Then
color = RGB(255,165,0);
if m > 100000000000 Then
color = CYAN;
Plot1(m, "거래대금",Color);
}
Else
{
color = BLUE;
if m > 50000000000 Then
color = RGB(255,165,0);
if m > 100000000000 Then
color = CYAN;
Plot1(m, "거래대금",blue);
}
PlotBaseLine1(30000000000,"기준1");
PlotBaseLine2(50000000000,"기준2");
PlotBaseLine3(100000000000,"기준3");
2022-03-08
943
글번호 157033
답변완료
수식 문의 드립니다.
스토캐스틱. 80 선을 두번째 아래로 내려갈때 매도. ( 첫번째는 매도 안함 )
소토캐스틱. 20 선을 두번째 위로 올라갈때 매수
익절 1% 손절 2% ( 둘다 안걸리면 3시 정각에 정리 )
하루에 매수던 매도던 한번만 거래.
감사합니다.
2022-03-08
881
글번호 157032
답변완료
문의 드립니다.
아래 이동평균선을 당일 새로 시작하게 만들 수 있나요?
날마다 새로 시작하는 이동평균선요.
답변 감사합니다.
Input : Period1(5), Period2(20), Period3(60);
var : Sma1(0),Sma2(0),Sma3(0);
Sma1 = ma(C,Period1);
Sma2 = ma(C,Period2);
Sma3 = ma(C,Period3);
Plot1(Sma1, "이동평균1");
Plot2(Sma2, "이동평균2");
Plot3(Sma3, "이동평균3");
2022-03-08
926
글번호 157031
답변완료
부탁 드립니다.
(HIGHEST(HIGH,91)+LOWEST(LOW,91))/2
지표조건
period 120
p1 5
여기를 돌파 하는 종목좀 찾아 주세요~ (일봉과 분봉 모두 찾을 수 있도록 부탁 드립니다.)
코로나 항상 조심 하시고요~~^^
2022-03-08
1031
글번호 157030
답변완료
지표 수식 작성 부탁드립니다.
담당자님, 안녕하세요.
작성해주신 지표 수식을 잘 활용하고 있습니다.
거듭 감사드립니다.
(KOSPI200 주가지수 선물) 다음과 같은 지표 수식의 작성을 부탁드립니다.
=====================================================
(분봉 차트에서 적용)
1) 매일 당일(D)의 장시작 후 부터 새로 연산을 실행하여 각 당일의 구간에만 표시
2) 전일(D-1) 일봉의 '(시가+종가)/2'를 계산
전전일(D-2) 일봉의 '(시가+종가)/2'를 계산
......
(D-40) 일봉의 '(시가+종가)/2'를 계산
3) 위에서 계산된 (D-1)~(D-40) 기간의 각 일봉의 '(시가+종가)/2' 중에서
'(시가+종가)/2'가 '(당일 시가 - 5.0)~(당일 시가 + 5.0)'의 범위 내에 있으면서
and '(시가+종가)/2'가 당일 시가와 가장 가까운 것을 5개 선정
cf. '(시가+종가)/2'가 당일 시가와 가장 가까운 것은
abs(당일 시가 - 각 일봉의 '(시가+종가)/2')가 작은 순서대로 5개를 선정하면
될 것으로 고민해 봤는데, 담당자님게서 판단하시기에 더 적합한 구현방법이
있으면 그 방법을 적용
4) 위에서 선정된 5개의 수치를 당일(D)의 구간에만 수평라인으로 표시
(추가 요건)
* N일(N=40) 기간, 당일(D) 시가 범위(y=5.0)의 수치는 외부입력 변수
===========================================================
위와 같이 지표 수식 작성을 부탁드립니다
항상 감사하게 생각하며
이번에 지표 작성해 주신 것에 대해서도 미리 감사드립니다.
항상 건강하고 건승하시기 바랍니다
2022-03-08
1102
글번호 157025
답변완료
부탁드립니다
$,안녕하세요
아래식을 일봉차트에 적용했을때 가장 최근 2개봉의 Plot 선만 Y축까지 추세연장선으로
그리고 싶은데 도움 부탁드려요.
plot1 (DayClose(1));
plot2 (DayOpen(0));
2022-03-08
1123
글번호 157022
답변완료
늘 고맙습니다
하나 더 부탁드립니다
1분 차트를 사용하는데
가격의 고저는 dayhigh daylow 로 표현하면 되는데
혹시 지표도 dayhigh daylow 같이 표시할 방법이 있을까요?
지표가 상승하는지 하락하는지 알고 싶거든요
부탁드립니다
2022-03-08
1143
글번호 157016