커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7241
글번호 230811
답변완료
if 수식이 제대로 작동되지 않습니다.
외부변수 값에 따라서 내부변수에 할당할 값이 달라지는 수식을 입력했는데요,
외부변수의 값이 무엇이든 무조건 값이 0으로 들어가는 문제가 있습니다.
어떻게 해결하면 좋을까요?
수식은 아래와 같습니다.
input : 고점(0),저점(0),자리(0);
Var : L1(0),L2(0),L3(0),L4(0),L5(0),DHigh(0),DLow(0);
DHigh = 고점;
DLow = 저점;
if(DHigh=0) Then
{
DHigh = DayHigh;
}
Else
{
DHigh = 고점;
}
if(DLow=0) Then
{
DHigh = DayLow;
}
Else
{
DHigh = 저점;
}
L1 = DHigh-((DHigh-DLow)*0.236);
L2 = DHigh-((DHigh-DLow)*0.382);
L3 = DHigh-((DHigh-DLow)*0.5);
L4 = DHigh-((DHigh-DLow)*0.618);
L5 = DHigh-((DHigh-DLow)*0.786);
Plot1(L1, "로그1");
Plot2(L2, "로그2");
Plot3(L3, "로그3");
Plot4(L4, "로그4");
Plot5(L5, "로그5");
2018-06-04
259
글번호 119490
답변완료
시간측정
c > var1 then buy();
c < var1 then sell();
위 수식에서
c > var1 or c < var1 이면 봉이 완성 전에 미완성신호가 발생합니다.
이 때에
1. c > var1 조건이 만족하고 있는 시간이 60 초를 초과 하면 미완성매수신호 발생
2. c < var1 조건이 만족하고 있는 시간이 60 초를 초과 하면 미완성매도신호가 발생 하도록 수식을 완성하여 주시면 감사 하겠습니다.
2018-06-04
265
글번호 119482
답변완료
문의드립니다
현물입니다.
매수: 일봉기준 15:00정각에 주가가 볼벤(20, 2) 와 엔벨로프(20,8)선 보다 아래 있으면 1일에 1회만 매수
다음날도 15:00정각에 주가가 위와같이 볼벤과 엔벨로프 선 아래있음 추가매수
추가매수는 5회로 제한
매도: 10프로 수익 발생시.
손절: 30프로 손실 발생시
2018-06-04
243
글번호 119468
답변완료
시스템식 문의
if date != date[1] Then
value1 = 0;
value1 = value1+(Upvol);
plot2(value1,"upvol누적");
if date != date[1] Then
value2 = 0;
value2 = value2+(downvol);
plot3(value2,"downvol누적");
plot4(value1-value2,"체결누적순매수");
위 식을 이용하여 시스템식을 만들고 싶습니다.
매수진입 :5,20 이평 골든크로스 and 체결누적순매수>0
(체결누적순매수>0일때 골든크로스가 여러번 발생하는데 처음 한번 진입후 다음 신호들 무시)
(체결누적순매수<0 되었다가 >0이 되어 골든크로스가 발생하면 진입)
(전일 체결누적순매수>0이 된 상태로 끝나고 당일 체결누적순매수>0일 때 골든크로스 발생하면 진입)
매수청산 : 5,20 이평 데드크로스
매도진입 : 5,20 이평 데드크로스 and 체결량누적순매수<0
매도청산 : 5,20 이평 골든크로스
매도진입도 매수진입과 같은 논리로 식을 만들고 싶습니다.(단, 체결량누적순매수>0을 <0으로)
2018-06-04
269
글번호 119466
답변완료
차트간 신호 연동 문의
귀사의 일익번창하심을 기원합니다.
-. 종목 : KOSPI 선물 연결선물지수
메인 차트에 선물 1분차트를 띄운 후(data1), 지표에 5분차트 추가(data2), 30분차트 추가(data3) 한 상태에서,
if ( data1 = 매수신호 and data2 = 매수신호 and data3 = 매수신호)
then 선물 매수 ;
if ( data1 = 매수신호 and (data2 = 매도신호 or data3 = 매도신호)
then 선물 매수청산 ;
if ( data1 = 매도신호 and data2 = 매도신호 and data3 = 매도신호)
then 선물 매수 ;
if ( data1 = 매도신호 and (data2 = 매수신호 or data3 = 매수신호)
then 선물 매도청산 ;
위와 같은 흐름으로 수식을 작성하였으나, 실행 결과는 data1 에서 매수청산 = 매도진입, 매도청산 = 매수진입.. 이 됨.
본인의 작성하고자 하는 바는, data1, data2, data3 의 신호가 모두 일치하면 해당 방향으로 진입, 하나라도 다르면 청산..하는 논리로 수식을 작성하고자 하였으나 의도한 결과를 도출하지 못하였음.
따라서, data1, data2, data3 를 서로 다른 차트로 분리하여, 상호 신호를 연동하고자 하기에, 각 차트간 신호 공유 방법에 대해 문의 드립니다.
만일 각 차트간 신호 공유방법이 곤란하다면, 선물 거래데이타를 oracle TABLE 로 저장하는 방법을 알려주시기 바랍니다.
수고하시기 바랍니다.
2018-06-04
331
글번호 119463
답변완료
중심선 지표식
항상 감사드립니다
아래조건의 지표식 부탁드립니다
1.전일종가,저가,고가 기준
2.당일 처음 중심선은
(전일종가-전일저가) = T1(절대값:틱수만계산)
(전일고가-전일종가) = T2(절대값:틱수만계산)
T1 > T2 일때 a1=T1
T1 < T2 일때 a1=T2
전일종가 = 중심선1
중심선1+a1 --> 상단선1
중심선1-a1 --> 하단선1 으로 표시
/************************************************************/
(현재가-상단선1)=T3 (절대값:틱수만 계산)
(현재가-하단선1)=T4 (절대값:틱수만 계산)
T3 > a1 일때 T3 = a2
T4 > a1 일때 T4 = a2
1)(상단선1+a1)< 현재가 조건시
현재가= 상단선2 (a1의 진폭(절대값)만큼 추가상승시)
2)(하단선1-a1)>현재가 조건시
현재가=하단선2 (a1의 진폭(절대값)만큼 추가하락시)
>>>>>>> 상단선2 및 하단선2 조건시 중심선변경
1)의조건을 만족시 중심선2=(상단선2+하단선1)/2(절대값인 진폭으로계산)
하단선2=하단선1
상단선2=상단선1+a2(추가진폭)
2)의조건을 만족시 중심선2=(하단선2+상단선1)/2(절대값인 진폭으로 계산)
상단선2=상단선1
하단선2=하단선1+a2(추가진폭)
위와같은 조건이 계속변경될때마다 중심선및 상단선,하단선변경
감사합니다
2018-06-05
360
글번호 119459
답변완료
문의드려요
안녕하세요~
input : 가격 a , 날짜a , 손절a
#날짜 a이후 부터 가격a를 돌파한다면 돌파한가격과 , 돌파한 날짜를 저장하고
그 저장된 값을 다시 돌파 한다면 지속적으로 돌파한가격과 날짜를 저장해서 불러오고 싶습니다.
이전에 돌파한 날짜 : 날짜 a
이전에 돌파한 가격 : 가격 a 이고
새롭게 돌파한 날짜가 : 날짜 A
세롭게 돌파한 가격이 : 가격 A 에 저장한다고 가정하면
가격 a 보다 가격A가 크다라면 참 , 적거나 같으면 거짓
매수조건1(참,거짓 상관없이 1번 매수한다)
거짓이면 가격a 보다 -10% 하락시 매수하고
참이면 가격A 보다 -10% 하락시 매수하여 매도한다
매수조건1로 수익을 봤다면 아래 조건에서 다시 매수를 할수 있다
매수조건 1-1 : 참이라면 가격A 보다 -10%하락시 매수 한다
매수조건 2 : 거짓이라면 가격a 보다 -20% 하락시 매수한다
매수조건2로 수익을 봤다면 아래조건에서 다시 매수를 할수 있다
매수조건 2-1 : 참이라면 가격A 대비 -10%에서 매수한다
-10%에서 매수된경우================================================
3% 상승시 1/2를 매도 하고 하락시 1%에서 전량매도
5% 상승시 남은물량의 1/4를 매도하고 하락시 4%에서 전량매도
8% 상승시 남은물량의 1/8를 매도하고 하락시 5%에서 전량매도
10% 상승시 남은물량의 1/10를 매도하고 하락시 8%에서 전량매도
13% 상승시 전량매도
손절은 첫매수된 가격대비 -5% 전량매도한다
===================================================================
-20%에서 매수된경우================================================
3% 상승시 1/2를 매도 하고 하락시 1%에서 전량매도
5% 상승시 남은물량의 1/4를 매도하고 하락시 4%에서 전량매도
8% 상승시 남은물량의 1/8를 매도하고 하락시 5%에서 전량매도
10% 상승시 남은물량의 1/10를 매도하고 하락시 8%에서 전량매도
13% 상승시 전량매도
# -10%물량이 남은상태에서 -20%에서 매수된경우
-20%에서 매수한 물량은 -20% 매도기준으로 매도 해야하고
-10%에서 매수한 물량은 -10% 매도기준으로 매도 해야한다
손절은 손절a를 이탈시 전량 매도한다
===================================================================
감사합니다. 수고하세요~
2018-06-04
264
글번호 119458
답변완료
문이 드립니다.
문의 드립니다.
아래식에 (20 이평 크로스 진입)
60 이평 크로스 up, down 에 청산하고자 합니다.
부탁합니다.
감사합니다.
var1 = ma(C,20);
# 매도/매수 1회로 제한
var : count(0),cnt(0);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if count < 1 and stime >= 093000 and stime < 153000 and crossup(c,var1) Then
if TotalTrades == 0 or
(MarketPosition == -1 and BarsSinceEntry >= 50) or
(TotalTrades >= 1 and MarketPosition == 0 and BarsSinceExit(1) >= 50) Then
buy();
if count < 1 and stime >= 093000 and stime < 153000 and CrossDown(c,var1) Then
if TotalTrades == 0 or
(MarketPosition == 1 and BarsSinceEntry >= 50) or
(TotalTrades >= 1 and MarketPosition == 0 and BarsSinceExit(1) >= 50) Then
sell();
2018-06-03
238
글번호 119457
답변완료
부탁 드립니다.
도움주심에 감사 드립니다.
57921번에서 답변 주신 수식입니다.
틱봉과 분봉에서는 잘 가동되고 있으나
일봉 이상에서는 가동이 되지 않고 있습니다.
일봉용으로 가동 되도록 부탁 드립니다.
주봉 및 월봉도 부탁 드립니다.
input : 날짜1(20180514),시간1(90000);
input : 날짜2(20180518),시간2(90000);
if sdate == 날짜1 and stime >= 시간1 and stime[1] < 시간1 Then
var1 = c;
if sdate == 날짜2 and stime >= 시간2 and stime[1] < 시간2 Then
var2 = c;
TL_Delete(var1);
var1 = TL_New(날짜1,시간1,var1,날짜2,시간2,var2);
2018-06-04
274
글번호 119456