커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6400
글번호 230811
답변완료
한번 손절이 발생하면 다음 진입이 전혀 없습니다.
해외 크루드오일 틱 챠트로 시스템 거래중입니다.
챠트 설정은 한국시간으로 되어 있습니다.
손절이 발생하면 다음 거래를 멈추도록
진입이 설정되어 있다보니, 한번 손절이 발생하면
다음 진입이 전혀 없습니다.
손절 발생 후 챠트설정 시간대(한국)의 자정 까지 단 하루만
다음 진입을 않고 익일 부터는 거래를 계속하도록
수식을 변경하고 싶습니다.
현재 수식은 다음과 같읍니다.
Condition1 = MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopLoss",1);
Condition2 = MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopLoss",1);
if 조건-1 and
Condition1 == false
Then
buy("buy-조건-1");
#########################
if 조건-2 and
Condition2 == false
Then
sell("sell-조건-1");
2016-08-18
136
글번호 101131
고박사122 님에 의해서 삭제되었습니다.
2016-08-18
52
글번호 101126
답변완료
행복; 시스템식 작성 바랍니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
시스템식 관련입니다
<조건>
- 10일전 상한가 이고
- 오늘 거래대금이 1 억원 이상인 경우
- 종가에 매수하고
- 내일 종가에 매도
를 << 아래 >>와 같이 작성하면 되는지요?
====<< 아래 시작 >>===================================
이 시스템식은 예스스탁 홈페이지에 있는
수식작성 Q&A 45671( 40일전 상한가 종목검색식) 을 응용한 것입니다
input : N(10);
var : 상한가(0), UpLimit(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
if CodeCategory() == 2 then {
if date >= 20030721 then {
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
up7 = int(UpLimit/1+0.00001)*1;
}
}
Else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
If H[N] >= 상한가[N]
and M >= 100000000 Then{
buy("b", onclose);
var1 = index;
}
If Index == Var1 + 1 Then
ExitLong("s", OnClose, def, "b");
====<< 아래 끝 >>===================================
수고하십시요^^
2016-08-18
154
글번호 101125
답변완료
수식 수정 좀 부탁드려요
수식 위에서 아래로 3번째 줄이 아래와 같이 멘트가 뜨네요
1열 멘트는 "문법에러, 잘못된 토큰: name, 올 수 있는것;
9열 예약어 "Data2"는 입력 변수나 변수, 배열, 함수로 선언 할 수 없습니다.
라고 멘트가 뜨네요
참고로 data2는 달러 인덱스 입니다.
그래서 또 검증에 실패 했어요!
왜 이러는 걸까요????
Input : period(12), period1(2), atrperiod(10), atrs1(6);
var : Value(0)
Value = Data2(StochasticsK(period, period1));
# 매수/매도 청산
If CrossUp(value, 20) Then // DX의 스토캐스틱 K가 20선을 상향 돌파하면
{
buy("매수");
}
If MarketPosition == 1 Then // 매수포지션 상태에서
{
ExitLong("매수청산", AtStop, Highest(H, BarsSinceEntry)-atr(atrperiod)*atrs1);
}
# 매도/매수 청산
If CrossDown(value, 80) Then // DX의 스토캐스틱 K가 80선을 하향 돌파하면
{
sell("매도");
}
If MarketPosition == -1 Then // 매도포지션 상태에서
{
ExitShort("매도청산", AtStop, Lowest(L, BarsSinceEntry)+atr(atrperiod)*atrs1);
}
SetStopLoss (3,Pointstop); //3포인트 손절
2016-08-18
189
글번호 101124
답변완료
시간설정에 관한식 문의
원유재고 발표 시간인 수요일 한국시간 23시 25분에서 0시 20분까지는 매매를 하지 않는 수식 부탁합니다. 즉
1. 수요일 23시 25분에 포지션 모두 청산. 0시 20분에 시스템 가동
2. 월물 마감일인 매월 18일 0시에는 매매 끝.
2016-08-18
153
글번호 101123
답변완료
부탁해요
전일의 고가저가를 당일에만 나타나도록 부탁합니다.
2016-08-18
135
글번호 101122
답변완료
문의합니다
nh트레이더를 사용하려 합니다
자동매매에서 틱봉 960틱으로 로직을 구현하려 하는데 틱봉도 가능한지요
2016-08-17
120
글번호 101121
답변완료
문의드립니다.
수정하여 주셨던 수식을 적용하였으나 전일 매수, 당일 매도 후 당일 b1,b2 재매수가 이루어집니다.
1. 매매횟수 제한이 이루어지지 않습니다.
2. 매도 당일 이전에 매수신호가 나온 b1,b2를 인식하지 못합니다. 따라서 당일 매도가 이루어져도, 당일은 매수신호 b1이 나오지 않았기 때문에 count < N 가 성립하여 매수가 되는 듯 합니다.
3. 매수가 언재 이루어지던지, 당일 매도가 나온 경우에는 당일 매수하지 않는 방법을 찾고자 합니다.
감사합니다.
이전 문의 및 답변내용
---------------------------
안녕하세요
예스스탁입니다.
b2는 추가진입식인에 신호타입이 atlimit으로 되어 있습니다.
완성봉에서 value4값을 셋팅하고 다음봉에서
해당 값 이하의 시세가 발생하면 즉시신호가 발생합니다.
수식에서 포지션등은 신호발생후 봉이 완성이 되어야 인지됩니다.
청산과 b2진입이 동시 셋팅되므로
b2조건에 청산조건이 만족하지 않은 봉에서만
셋팅되게 아래와 같이 조건을 추가하셔야 합니다.
input : N(1);
var : AA(0),BB(0),CC(0);
var : TF(0),VV(0),VH(0),VH1(0),upv(0);
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 20{
if sdate ==EntryDate(cnt) Then
count = count+1;
}
AA = (highest(H,5760)+lowest(L,5760))/2;
BB = Highest(H,1800);
var1 = NthHighestBar(1,H,1800);
CC = lowest(L,var1);
value1 = (((BB-AA)/5)*0)+AA;
value2 = (((BB-AA)/5)*1.5)+CC;
Value5 = AA-(((BB-AA)/5)*3);
TF = dayindex%15;
if date != date[1] then{
VV = 0;
VH = 0;
VH1 = VH[1];
}
if (TF < TF[1] and date == date[1]) Then
VV = 0;
VV = VV +V;
if VV > VH Then
VH = VV;
if stime < 091500 Then
value3 = VH;
value4 = AA-(((BB-AA)/5)*1);
if (stime >= 090300 and value3 <= VH1) or (stime >= 141500) then{
if MarketPosition == 0 and CrossDown(c,value1) and count < N Then
if ((dayopen > DayClose(1)*0.98) or (dayopen <= DayClose(1)*0.98 and stime >= 141500)) then
buy("b1");
if MarketPosition == 1 and MaxEntries == 1 and
!Crossup(c,value2) and
!CrossDown(c,value5) and
!((c<Value5) and (stime < 090300 or stime>=144800)) Then
buy("b2",atlimit,value4);
}
if crossup(c,value2) Then
ExitLong();
if CrossDown(c,Value5) Then
ExitLong("bx1",onclose,def,"b1");
if (c<Value5) and (stime < 090300 or stime>=144800) Then
ExitLong("bx2",onclose,def,"b2");
즐거운 하루되세요
> 사과쥬스 님이 쓴 글입니다.
> 제목 : 매매횟수 제한 검토 부탁드립니다.
> 아래수식에 당일 매수,매도 횟수가 1회로 제한하는 수식이 포함된 것으로 아는데
시스템 적용시 당일 매도후 다시 매수하는 경우가 생깁니다.
검토 부탁드립니다~
-아래-
input : N(1);
var : AA(0),BB(0),CC(0);
var : TF(0),VV(0),VH(0),VH1(0),upv(0);
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 20{
if sdate ==EntryDate(cnt) Then
count = count+1;
}
AA = (highest(H,5760)+lowest(L,5760))/2;
BB = Highest(H,1800);
var1 = NthHighestBar(1,H,1800);
CC = lowest(L,var1);
value1 = (((BB-AA)/5)*0)+AA;
value2 = (((BB-AA)/5)*1.5)+CC;
Value5 = AA-(((BB-AA)/5)*3);
TF = dayindex%15;
if date != date[1] then{
VV = 0;
VH = 0;
VH1 = VH[1];
}
if (TF < TF[1] and date == date[1]) Then
VV = 0;
VV = VV +V;
if VV > VH Then
VH = VV;
if stime < 091500 Then
value3 = VH;
value4 = AA-(((BB-AA)/5)*1);
if (stime >= 090300 and value3 <= VH1) or (stime >= 141500) then{
if MarketPosition == 0 and CrossDown(c,value1) and count < N Then if ((dayopen > DayClose(1)*0.98) or (dayopen <= DayClose(1)*0.98 and stime >= 141500)) then
buy("b1");
if MarketPosition == 1 and MaxEntries == 1 Then
buy("b2",atlimit,value4);
}
if crossup(c,value2) Then
ExitLong();
if CrossDown(c,Value5) Then
ExitLong("bx1",onclose,def,"b1");
if (c<Value5) and (stime < 090300 or stime>=144800) Then
ExitLong("bx2",onclose,def,"b2");
2016-08-17
129
글번호 101120
답변완료
지표 부탁 드리겠습니다
수고 많으십니다.
2가지 지표 부탁드립니다.
1)틱차트에서 렝코차트가격을 기초로 한 스토캐스틱을 구현하고싶습니다.
변화폭은 0.25로 그리고 외부변수로.
스토캐스틱은 9.5.5 기본으로 외부변수로.
2)
가.1번 지표에서 골든크로스 시 직전 골든크로스보다 위치가 높다면 빨간색 막대그래프 삽입
나.골든크로스 시 직전 골든크로스보다 위치가 낮다면 주황색 막대그래프 삽입
다. 데드크로스 시 직전 데드크로스보다 위치가 낮다면 파란색 막대그래프 삽입
라. 데드크로스 시 직전 데드크로스보다 위치가 높다면 파란색 막대그래프 삽입
2016-08-17
133
글번호 101117