커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4481
글번호 230811
jba 님에 의해서 삭제되었습니다.
2019-01-18
25
글번호 125371
답변완료
문의 드립니다.
아래 조건으로 수식 작성 부탁드립니다.
진입조건
1. 선물 전일종가 대비 0.5p 상승출발 & 09:30분까지의 저가를 09:30분 이후에 터치하면 매수
2. 09:30분까지의 저가 또는 고가를 갱신하면 갱신한 방향으로 진입
청산조건
[매수 상태일때]
1. 앞의 5개 봉에서는 선물매수호가 총건수 > 선물매도호가 총건수 였으나 현재봉에서
선물 매수호가 총건수 <= 선물 매도호가 총건수일 경우
2. 금일 12:30분 이전의 고가를 터치할 경우
3. 시가에서 2 point 이상 상승한 후 최고가에서 0.7 point 이상 하락한 경우
2019-01-17
146
글번호 125370
답변완료
추세지표 TTF 와 TDI 지표식 문의
안녕하세요!!! 하아투자증권 교육생 입니다.
교육받는 중 교재 1권의 지표식이 궁금해서 문의 올립니다.
TTF(Trend Triger Factor) 지표식과
TDI(Trend Detection Index) 지표식입니다.
설며이 이해는 가는데 막상 코드가 안되네요
부탁드립니다.
2019-01-17
195
글번호 125369
답변완료
부탁드립니다.
만들어 주신 아래 지표를 매매식으로 만들고자 합니다.
이전 Plot3와 현재 Plot3의 차가 (변화량이) 변수 A(5) 이상 발생하게 되면
plot5(ma(macdosc ,5)); 가 하강하기 전까지
plot3(highest(macdosc ,5)) 이 상승중이고,
plot5(ma(macdosc ,5)); 가 A(5) 이상일때
매수
(매도 반대)
Input : shortPeriod(12), longPeriod(26), signal(9);
Var : MACDV(0),MACDS(0),macdosc (0) ;
MACDV = MACD(shortPeriod, longPeriod);
MACDS = wma(MACDV,Signal);
macdosc = MACDV-MACDS;
Plot1(MACDV, "MACD");
Plot2(MACDS, "MACDSignal");
PlotBaseLine1(0, "기준선1");
plot3(highest(macdosc ,5));
plot4(Lowest(macdosc ,5));
plot5(ma(macdosc ,5));
plot6(highest(macdosc,20));
plot7(Lowest(macdosc,20));
plot8(ma(macdosc,20));
2019-01-17
142
글번호 125368
답변완료
함수식
안녕하세요 미리 감사인사올립니다
아래식에서 두가지조건을 추가하고십습니다
Input : short(12), long(26), signal(9);
Input : Period(20), LPercent(98), SPercent(106);
Var : MACDV(0) , MACDS(0),T(0),value(0);
var : Hi1(0),Hi2(0),Hc1(0),Hc2(0),Li1(0),Li2(0),Lc1(0),Lc2(0);
MACDV = MACD(short, long);
MACDS = ema(MACDV,signal);
value = Disparity(Period) ;
if crossup(MACDV,MACDS) Then
{
T = 1;
Hi1 = MACDV;
Hi2 = Hi1[1];
Hc1 = C;
Hc2 = Hc1[1];
if value >= LPercent and Li1 > Li2 and Lc1 < Lc2 and Lc2 > 0 Then
buy();
}
if CrossDown(MACDV,MACDS) Then
{
T = -1;
Li1 = MACDV;
Li2 = Li1[1];
Lc1 = C;
Lc2 = Lc1[1];
if value >= SPercent and Hi1 < Hi2 and Hc1 > Hc2 and Hc2 > 0 Then
sell();
}
if T == 1 and MACDV > Hi1 Then
{
Hi1 = MACDV;
HC1 = C;
}
if T == -1 and MACDV < Li1 Then
Li1 = MACDV;
LC1 = C;
// 조건1 (매수/매도 신호발생시 신호봉의 종가에서 +/- 20틱 위나 아래에서 진입대기)
var : S(0);
if S <= 0 and 매수진입조건 Then
{
S = 1;
var1 = C;
}
if S >= 0 and 매도진입조건 Then
{
S = -1;
var1 = C;
}
if S == 1 Then
buy("b",atlimit,var1-PriceScale*20);
if S == -1 Then
sell("s",atlimit,var1+PriceScale*20);
// 조건 2
Condition1 = MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopLoss",1) == true;
Condition2 = MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopLoss",1) == true;
if Condition1 == false and 매수진입조건 Then
buy();
if Condition2 == false and 매도진입조건 Then
sell();
틀린곳이있으면 수정도 부탁드립니다 감사합니다
2019-01-17
142
글번호 125361
답변완료
수식 부탁( mfi 매매)
조건1: 일봉기준: 1>10일때 매수 진입
조건2: 일봉기준 20일평균값이 우상향일때 매수진입
조건3: mfi(4) LPERCENT(30)이하일때 매수 진입
이세조건의 교집합시 매수 진입
아래식을 적용해보니 아무런 매수신호가 안뜨네요... 뭐가 잘못되었는지 알려주시면 감사
참고로 해외선물 30분봉입니다.
==================================================================================
Input : Period(40), LPercent(30), SPercent(100);
Input : P1(50),P2(165);
Input : N1(1),N2(10),N3(20);
Var : value(0);
var : BEH(0),BEL(0),SEH(0),SEL(0);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0);
var : sum3(0),Tcond(false);
var : sum4(0),sum41(0),avg4(0),avg41(0);
value = MFI(Period);
if DayClose(max(N1,N2,N3)) > 0 Then
{
sum1 = 0;
sum2 = 0;
sum4 = 0;
sum41 = 0;
for cnt = 0 to max(N1,N2,N3)-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
if cnt < N3 Then
{
sum4 = sum4 + DayClose(cnt);
sum41 = sum41 + DayClose(cnt+1);
}
}
avg1 = sum1/N1;
avg2 = sum2/N2;
avg4 = sum3/N3;
avg41 = sum41/N3;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
# 매수/매도청산
If value <= LPercent and MarketPosition == 0 and avg4 > avg41 Then
{
Buy("매수");
}
if MarketPosition == 1 then
{
ExitLong("즉시익절",AtLimit,EntryPrice+PriceScale*P1);
ExitLong("즉시손절",AtStop,EntryPrice-PriceScale*P2);
}
}
2019-01-17
143
글번호 125360
답변완료
생초보입니다...지표식 부탁드립니다
키움에서 정형화된 지표들만 사용하다가...
예스트레이더로 갈아타서 지표 만들어서 해보려하는데
너무 어렵네요...몇개 질문좀 올릴게요 ...
(제가 진짜 초보라...쉬운 질문을 장황하게 쓰더라도 이해해주십시오)
1.obv 지표
키움수식을보면
obv는 sum(if(c>c(1),v,if(c<c(1),-v,0))) 의 식으로 되어있는데요
이는 종가가 전종가와 같을떄 0의 값을 취하게됩니다
키움은 upvol,uptick 이라는 단어자체가 없는데요
여기는 있네요?? 이를 이용하면 종가가 같아도 0이아닌 +-값을 나오게 할수 있는건지....
즉, uptick,downtick 또는 upvol,downmvol의 단어(?),식(?)
같은게 많던데 이런거 이용해서 전종가와 현종가가 같을때도 obv의
값이 0이아닌 실질적으로 +-값이 나올수있게 지표작성이 가능한지....
ex)
가격 1050 1100 1100 전종가 = 종가
거래량 50 100
이렇다면 키움수식은 앞의 거래량 50만 더해주고,
뒤의 거래량 100은 종가가 같으므로 더해주지 않습니다.
뒤의 거래량 100이 매수체결이면 더해주고 매도체결이면 빼주게끔 해주세영.
2. 가격변화 지표
2.1 모든 가격변화량을 계속 더해주는 지표만들어주세요
예를 들어
가격이 1000 1020 1050 1040 1010 1030 1070 1080 1060 1070 ...총 10틱동안 이런값이라면
전값보다 높고 낮음 상관없이
변화량 20 + 30 + 10 + 30 + 20 + 40 + 10 + 20 + 10 이렇게 더해주는 지표요....
2.2 가격변화량중 플러스(uptick)만 더해주는 지표만들어주세요
위의 가격 10틱이 있다면
전값보다 상승한 변화만 더해 주는지표...
20 + 30 + 0 + 0 + 20 + 40 + 10 + 0 + 10...
2.3 반대로 가격변화량중 마이너스(downtick)만 더해주는 지표 만들어주세요
위의 가격 10틱이 있다면
0 + 0 + 10 + 30 + 0 + 0 + 0 + 20 + 0.....
이렇게 총 4개...지표식 부탁드립니다
제가완전초보라 그러는데요
처음부터 쉽게 상세히 알려주시면고맙겠습니다
로그인해서 6109 예스랭귀지 편집기 까지는 들어가는데 그 이후
알려주신 식들?을 새로만들기에서 복사 붙혀넣기만하면되는지...
후,,,부탁좀드리겠습니다 감기조심하세요
2019-01-17
225
글번호 125359
답변완료
문의드립니다~
240일선과 960일선이 골든크로스가 되고나서
여러가지 진입신호이름 중에서 "학매수"라는 진입신호명으로 2번만 신호가 나오도록
240일선과 960일선이 데드크로스가 되고나서
여러가지 진입신호이름 중에서 "학매도"라는 진입신호명으로 2번만 신호가 나오도록
학매수라는 진입신호가 반드시2번이어지는건 아니구요.
다른신호명이 나오고 나서 학매수라는 진입신호가2번째로 나올수도 있습니다.
감사합니다~
2019-01-17
134
글번호 125352
답변완료
부탁 드립니다.
다음 수식은 지정 일시 이후에 저점에서 선을 긋고 있습니다.
이것을
지정일 이후에 (시간 제외, 일주월봉차트 사용 목적)
사용토록 부탁 드립니다.
Input:length(10),기준일(20190110),기준시간(100000),파동선두께(2);
Var:j(0),jj(0),jjj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),TL1(0);
Array:고[5,4](0),저[5,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime
역사적고점[5](0),역사적저점[5](0); // 1:가격, 2:Index, 3:sDate, 4:sTime
var : Tcond(false);
Var:기울기(0);
Array:fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호
if sdate >= 기준일 and stime >= 기준시간 Then
{
Tcond = true;
고[1,1] = H;
저[1,1] = L;
fr[1,1] = 0;
fr[2,1] = 0.236;
fr[3,1] = 0.382;
fr[4,1] = 0.50;
fr[5,1] = 0.618;
fr[6,1] = 0.764;
fr[7,1] = 1;
}
Condition1 = Highest(H,length) == H and 최종고가 <> H;
Condition2 = Lowest (L,length) == L and 최종저가 <> L;
if Tcond == true then
{
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
최종고가 = H; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
//TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,GREEN);
}
Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
If Tcond == true and 역사적고점[1] < 고[1,1] Then
{
For jjj = 1 To 4 // 1:가격, 2:Index, 3:sDate, 4:sTime
{
역사적고점[jjj] = 고[1,jjj];
//역사적저점[jjj] = 0; // 역사적 고점 초기화
}
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = L;
If 최종변곡점 == "고점" then
{
For j = 5 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
//TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,GREEN);
}
Else If 저[1,1] > L then
{
저[1,1] = L;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
If ( 역사적저점[1] > 저[1,1] or 역사적저점[1] == 0 ) Then
{
For jjj = 1 To 4
{
역사적저점[jjj] = 저[1,jjj];
역사적고점[jjj] = 0;
}
}
최종변곡점 = "저점";
}
#==========================================#
If 역사적고점[1] > 0 and 역사적저점[1] > 0 Then
{
If 역사적고점[1][1] != 역사적고점[1] or 역사적저점[1][1] != 역사적저점[1] Then
{
기울기 = (역사적고점[1] - 역사적저점[1]) / (역사적고점[2] - 역사적저점[2]);
for j = 1 to 7
{
If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 기존의 라인은 지우고
fr[j,2] = 기울기 * fr[j,1] * (index - 역사적저점[2]) + 역사적저점[1]; // 피보나치 비율을 곱해서 계산
fr[j,3] = TL_New(역사적저점[3],역사적저점[4],역사적저점[1],sDate,sTime,fr[j,2]); // 라인을 생성
TL_SetColor(fr[j,3],GREEN);
}
}
Else
{
for j = 1 to 7
{
fr[j,2] = 기울기 * fr[j,1] * (index - 역사적저점[2]) + 역사적저점[1];
TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
}
}
}
}
Text_Delete(var1);
Text_Delete(var2);
Text_Delete(var3);
Text_Delete(var4);
Text_Delete(var5);
Text_Delete(var6);
Text_Delete(var7);
2019-01-17
179
글번호 125345