커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3478
글번호 230811
답변완료
수식 문의
5분봉 기준으로
RSI 30에 최초 매수,
RSI 20에 추가 매수,
RSI 70에 전량 매도
하는 자동매매수식 작성 부탁드립니다.
2023-07-30
1331
글번호 171041
답변완료
수정부탁 합니다.
시스템 신호가 봉에서 좀 벌어 졌으면 좋은데 수정 가능 할까요?
Var : value(0);
value = 0;
# 매수 / 매도청산
If CCI(9) > 0 Then
value = 1;
If MACD(12,26) > 0 Then
value = value+1;
If DIPlus(14) > DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) > StochasticsD(12,5,5) Then
value = value+1;
# 매수/매도청산
If MarketPosition <= 0 And value >= 3 Then
{
Buy("매수");
}
value = 0;
# 매도/매수청산
If CCI(9) < 0 Then
value = 1;
If MACD(12,26) < 0 Then
value = value+1;
If DIPlus(14) < DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) < StochasticsD(12,5,5) Then
value = value+1;
If MarketPosition >= 0 And value >= 3 Then
{
Sell("매도");
}
if MarketPosition == 1 And
H[2] == highest(H,5)[1] and
H[2] > max(C[2],O[2]) and
V[2] >= 5000 and
C[0] < C[2] Then
exitlong("매수분 올청산");
if MarketPosition == -1 And
L[2] == Lowest(L,5)[1] and
H[1] > max(C[1],O[1]) and
V[1] >= 5000 and
C[0] > C[1] Then
ExitShort("매도분 올청산");
if MarketPosition <= 0 And
L[1]==LOWEST(L,5) and
C[1]<O[1] and
C[1]>L[1] and
O[0]>L[0] and
C[1]==O[0] and
L[1]==L[0] and
C[0]>O[0] and
v>2500 Then
buy("집게발 매수");
if MarketPosition >= 0 And
H[1]==highest(H,5) and
C[1]>O[1] and
C[1]<H[1] and
O[0]<H[0] and
C[1]==O[0] and
H[1]==H[0] and
C[0]<O[0] and
v > 2500 Then
sell("집게발 매도");
input : Period(6);
Array : HD[10](0),HT[10](0),HV[10](0); //고점 날짜, 시간, 가격 저장할 배열
Array : LD[10](0),LT[10](0),LV[10](0); //저점 날짜, 시간, 가격 저장할 배열
var : cnt(0),Hprice(0),Lprice(0);
var : UpTrend(false),DownTrend(False),Trend(0);
var : ZigZagTL(0),HTL(0),LTL(0),HTX(0),LTX(0);
HPrice = H;
LPrice = L;
if Index == 0 Then
{
//초기 최고값
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
//초기 최저값
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
Else
{
UpTrend = HPrice >= Highest(HPrice,Period)[1];
DownTrend = LPrice <= Lowest(LPrice,Period)[1];
//상승추세 전환
if trend <= 0 and UpTrend == true Then
{
//추세구분 1
trend = 1;
if (MarketPosition == 0 ) or
(MarketPosition == -1 and PositionProfit(0) >= 0) Then
Buy("메수전황");
if MarketPosition == -1 and PositionProfit(0) < 0 Then
ExitShort("수평매수");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
For cnt = 9 DownTo 1
{
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HV[cnt] = HV[cnt-1];
}
//0번방에 날짜, 시간, 가격 저장
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
//직전 저점에서 현재 고점까지 연결선 출력
ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]);
//색상은 Red
TL_SetColor(ZigZagTL,Yellow);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,0);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
TL_SetSize(htl,2);
HTX = text_new(HD[0],HT[0],HV[0],NumToStr(HV[0],2));
Text_SetStyle(HTX,2,1);
}
Else if trend >= 0 and DownTrend Then//하락추세 전환
{
//추세구분은 -1
trend = -1;
if (MarketPosition == 0 ) or
(MarketPosition == 1 and PositionProfit(0) >= 0) Then
Sell("매도전황");
if MarketPosition == 1 and PositionProfit(0) < 0 Then
ExitLong("수평매도");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
For cnt = 9 DownTo 1
{
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LV[cnt] = LV[cnt-1];
}
//0번방에 날짜, 시간, 가격 저장
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
//직전 고점에서 현재 저점까지 연결선 출력
ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]);
//색상은 Blue
TL_SetColor(ZigZagTL,Yellow);
//굴긱는 1
TL_SetSize(ZigZagTL,0);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
TL_SetSize(ltl,2);
LTX = text_new(LD[0],LT[0],LV[0],NumToStr(LV[0],2));
Text_SetStyle(LTX,2,0);
}
Else
{
//상승구간
if trend == 1 Then
{
//고점이 갱신되면
if HPrice > HV[0] Then
{
//갱신된 봉의 날짜/시간/가격으로 변경
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
//지그재그 추세선의 끝점을 현재봉으로 이동
TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]);
//고점 수평 추세선의 끝점을 현재봉으로 이동
TL_SetBegin(HTL,HD[0],HT[0],HV[0]);
Text_SetString(HTX,NumToStr(HV[0],2));
Text_SetLocation(HTX,HD[0],HT[0],HV[0]);
}
}
//하락구간
if trend == -1 Then
{
//저점이 갱신되면
if LPrice < LV[0] Then
{
//갱신된 봉의 날짜/시간/가격으로 변경
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
//지그재그 추세선의 끝점을 현재봉으로 이동
TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]);
//저점 수평 추세선의 끝점을 현재봉으로 이동
TL_SetBegin(LTL,LD[0],LT[0],LV[0]);
Text_SetString(LTX,NumToStr(LV[0],2));
Text_SetLocation(LTX,LD[0],LT[0],LV[0]);
}
}
TL_SetEnd(HTL,sDate,sTime,HV[0]);
TL_SetEnd(LTL,sDate,sTime,LV[0]);
}
}
SetStopLoss(PriceScale*20,PointStop);
SetStopEndofday(153500);
2023-07-30
1463
글번호 171040
답변완료
시스템이 시뮬레이션 차트에서는 작동하지 않습니다.
안녕하세요 항상 감사드립니다.
특정 지표를 사용하는 몇몇 전략들이 시뮬레이션 차트에서는 적용이 되지 않습니다.(손익 그래프가 나타나지 않음)
사용자 함수가 아닌, 시스템 식에서 해당 지표를 계산해서 사용하고 있습니다.
for 문이 들어가긴 하는데, 어떻게 해야 시뮬레이션 차트에서도 해당 지표를 사용해서 손익 그래프가 잘 뜨게 할 수 있나요??
2023-07-29
1255
글번호 171039
답변완료
수식 문의드립니다.
종목검색식에서
5가지 수식을 포함하고 있을 경우에
Input :
Var :
수식 A
수식 B
수식 C
수식 D
수식 E
//전부 만족 시
IF A && B && C && D && E then
Find(1);
=> 조건 수식이 3개 이상 만족하는 종목만 찾고 싶을 때
A+B+C+D+E >= 3
만족한 수식에 해당하는 종목만 검색하고 싶을 때 수식을 알고 싶습니다.
수식 3개&&4개&&5개를 만족하는 종목
2023-07-29
1082
글번호 171038
답변완료
파생상품 개장시간 변경 관련 시스템 변경 문의
코스피200 선물 4분봉을 주차트로 하고, 보조로 kp200선물 외국인순매수 수량을 보조로 하는 시스템하나와,
코스피200 선물 4분봉을 주차트로 하고, 보조로 KP 개인 순매수금액을 보조로 하는 시스템을 운용중에 있습니다.
이 두 시스템은 모두 dayindex()==0 일때, 즉 첫봉에서 신호가 나오도록 설정되어있는데,
개장시간이 9시에서 8시45분으로 바뀌면서 기존처럼 9시 4분에 신호가 나오도록 할려면 어떻게 해야 되는지 잘 모르겠습니다.
분봉을 19분봉으로 바꾸거나, 1분봉을 주차트로 하면서 9시4분(stime==90400)에 신호가 나오도록 수정할려고 해봤더니, 기존에 4분봉에서 나오는 신호와 신호가 달라져서 이렇게 하면 안될것 같은데,
기존 9시 개장이고, 4분봉으로 운용할때와 똑같은 시점에 신호가 나오게 할려면
어떻게 해야되는지 알려주시면 감사하겠습니다.
2023-07-29
1013
글번호 171037
답변완료
국내주식 매매 수식부탁드림니다. (하락시마다 분할 매수 수식 요청)
기존 매도 수식을 반영해서 매수 수식과 매도 수식을 알려주심 감사하겠습니다.
주식:삼성전자
차트:60분봉
매수 조건
하락할때 일정 분할 매수 전략
해당 조건에 추가매수 1회만 진행 (같은 조건에서 추가로 매수되지 않게 )
예를 들어 매수가에 -2%하락시 20주 매수 후 상승후 또 -2%하락할때 추가로 매수되지 않게
1. 현재가가 이동평균선 600분봉(변수로 지정요청) 이하일때 10주 매수
2. 최초 매수가에서 -2% 하락할때 20주 매수
3. 최초 매수가에서 -4% 하락할때 30주 매수
4. 최초 매수가에서 -6% 하락할때 40주 매수
5. 최초 매수가에서 -8% 하락할때 50주 매수
6. 최초 매수가에서 -10% 하락할때 60주 매수
매도 조건
수익구간마다 일정청산 버전 .. 아래 수식 적용
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
XV = CurrentContracts;
cond = False;
}
if C >= AvgEntryPrice*(1+1.01) and sTime == 110000 Then
{
if XV >= 100 Then
vol = Floor(XV*0.01); # 계약수가 100개 이상일때 1% 분할매도
else if XV < 100 and XV >= 50 Then
vol = Floor(XV*0.02); # 계약수가 50개~100 일때 2% 분할매도
else if XV < 50 and XV >= 20 Then
vol = Floor(XV*0.05); # 계약수가 20개~50 일때 5% 분할매도
else if XV < 20 and XV >= 10 Then
vol = Floor(XV*0.10); # 계약수가 10개~20 일때 10% 분할매도
Else
vol = Floor(XV*0.50); # 계약수가 10개이하 일때 50% 분할매도
ExitLong("bx",OnClose,Def,"",vol,2);
}
}
Else
cond = False;
2023-07-29
1148
글번호 171036
답변완료
수식 문의드립니다
10시 이후에 진입하려고
진입식을 작성했는데요 대부분 10시 이후 진입 하는데
가끔 첫봉에서 진입이 있네요
원인을 알고 싶습니다
if stime>=95959 then{
buy("매수",atstop,var1);
sell("매도",atstop,var2);}
감사합니다
2023-07-29
961
글번호 171035
답변완료
키움수식 변환 확인부탁드립니다
안녕하세요
항상감사합니다
키움수식을 예트수식으로 변환한것이 맞는것인지 확인부탁드립니다
C > highest(H(1),5) &&
C(1) <= highest(H(2),5)
→ C > highest(H,5)[1] && C(1) <= highest(H,5)[2]
1봉전종가가 2봉전기준 5봉간 최고가보다 작거나같다 라는 식이
C[1] <= highest(H,5)[2] 맞는것인지 확인부탁드립니다
2023-07-29
1125
글번호 171034
답변완료
문의드립니다
랭귀지로 최근 20일의 netprofit만 따로 계산해서 불러올수 있을까요
언제나 감사합니다.
2023-07-29
1276
글번호 171033