커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4416
글번호 230811
답변완료
시스템식 해석부탁드립니다
항상 감사드립니다.
아래수식은 라떼처럼님이 문의하신 시스템식입니다..
지표식과의 상관관계 추정이 어려워 해석을 요청합니다..
Input : short(12), long(26), signal(9);
Var : MACDV(0) , MACDS(0),MACDO(0);
var : hh(0),hd(0),ht(0),ll(0),ld(0),lt(0);
var : hh1(0),hd1(0),ht1(0),ll1(0),ld1(0),lt1(0);
var : tl1(0),tl2(0);
MACDV = MACD(short, long);
MACDS = ema(MACDV,signal);
MACDO = MACDV-MACDS;
Condition1 = MACDV > 0 and MACDV > MACDS;
Condition2 = MACDV < 0 and MACDV < MACDS;
if Condition1 == true and Condition1[1] == false Then
{
hh = macdv;
hd = sdate;
ht = stime;
hh1 = hh[1];
hd1 = hd[1];
ht1 = ht[1];
if hd1 > 0 and hh > hh1 then
{
buy("b1");
}
}
if Condition2 == true and Condition2[1] == false Then
{
ll = macdv;
ld = sdate;
lt = stime;
ll1 = ll[1];
ld1 = ld[1];
lt1 = lt[1];
if ld1 > 0 and ll < ll1 then
{
sell("s1");
}
}
if Condition1 == true then
{
if macdv > hh Then
{
hh = macdv;
hd = sdate;
ht = stime;
if hh > hh1 Then
buy("b2");
}
}
if Condition2 == true then
{
if macdv < ll Then
{
ll = macdv;
ld = sdate;
lt = stime;
if ll < ll1 Then
sell("s2");
}
}
감사합니다.
2018-07-22
203
글번호 120781
답변완료
현재 종목검색이안됩니다
평소에 잘되던것들도 안돌고
혹시나싶어
아주 간단한 식을만들어서 돌려도
검색바가 0에서 올라가지않습니다
서버에 문제가생긴것인 가요 아님 서버 점검중인가요??
2018-07-22
218
글번호 120780
답변완료
주간고저문의
늘 감사합니다.
아래수식을 data2에 사용 수식으로 변경해 주세요
var : cnt(0);
Array : WeekO[10](0),WeekH[10](0),WeekL[10](0),WeekC[10](0);
Array : MonthO[10](0),MonthH[10](0),MonthL[10](0),MonthC[10](0);
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
WeekO[0] = O;
WeekH[0] = h;
WeekL[0] = L;
for cnt = 1 to 9{
WeekO[cnt] = WeekO[cnt-1][1];
WeekH[cnt] = WeekH[cnt-1][1];
WeekL[cnt] = WeekL[cnt-1][1];
WeekC[cnt] = WeekC[cnt-1][1];
}
}
WeekC[0] = C;
if H > WeekH[0] Then
WeekH[0] = H;
if L < WeekL[0] Then
WeekL[0] = L;
if bdate > bdate[1]+30 Then{
MonthO[0] = O;
MonthH[0] = h;
MonthL[0] = L;
for cnt = 1 to 9{
MonthO[cnt] = MonthO[cnt-1][1];
MonthH[cnt] = MonthH[cnt-1][1];
MonthL[cnt] = MonthL[cnt-1][1];
MonthC[cnt] = MonthC[cnt-1][1];
}
}
MonthC[0] = C;
if H > MonthH[0] Then
MonthH[0] = H;
if L < MonthL[0] Then
MonthL[0] = L;
if WeekH[1] > 0 and WeekL[1] > 0 Then{
plot1(WeekO[0],"전주시가");
plot2(WeekH[1],"전주고가");
plot3(WeekL[1],"전주저가");
plot4((WeekH[1]+WeekL[1])/2,"전주중간");
}
if MonthH[1] > 0 and MonthL[1] > 0 Then{
plot5(MonthO[0],"당월시가");
plot6(MonthH[1],"전월고가");
plot7(MonthL[1],"전월저가");
plot8((MonthH[1]+MonthL[1])/2,"전월중간");
}
2018-07-22
231
글번호 120779
답변완료
오류수정 부탁드립니다.
안녕하세요?
금요일날 오전에 답변 받고나서 바로 실전으로 돌려보았읍니다.
도지에 진입을 하는매매가 몇개 나와서 다시 글 올립니다.
그림판에 간단하게 그림을 그려보았읍니다.
이부분만 완벽히 되면 되는데 너무 아쉽습니다.
검토후 수정부탁드립니다. 감사합니다.
--------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
식을 수정했습니다.
안녕하세요
예스스탁입니다.
식을 수정했습니다.
input : 몸통길이틱수(10),익절틱수(10),손절틱수(10);
var : T(0);
var1 = abs(C-O);
if C > O Then
{
T = 1;
value1 = var1;
value2 = value1[1];
}
if C < O Then
{
T = -1;
value3 = var1;
value4 = value3[1];
}
if MarketPosition == 0 and
countif(T == -1,2) == 2 and
value3 == value4 and
value3 == PriceScale*몸통길이틱수 then
{
sell("s");
}
if MarketPosition == 0 and
countif(T == 1,2) == 2 and
value1 == value2 and
value1 == PriceScale*몸통길이틱수 then
{
Buy("b");
}
SetStopProfittarget(익절틱수*PriceScale,PointStop);
SetStopLoss(손절틱수*PriceScale,PointStop);
즐거운 하루되세요
> 대구어린울프 님이 쓴 글입니다.
> 제목 : 수정 부탁드립니다.
> 안녕하세요? 더운데 수고많으십니다.
아래와 같은 수식에서 오류가 발생하여 도움 요청드립니다.
안되는 점을 말씀드릴테니, 살펴보시고 수정 부탁드립니다.
- 오류나는 부분 -
1. 진입조건이 "몸통길이가 같은" 인데, 몸통길이가 서로 달라도 진입을 합니다.
반드시 연속음봉2개가 서로 몸통길이가 같을때 진입해야하고, 연속양봉2개가 서로 몸통길이
가 같을때 진입해야 합니다.
2. 실전매매를 해보았는데 도지에 진입을 하는경우가 많습니다.
연속음봉2개 또는 연속양봉2개 출현시 2번째 봉에서 진입의 조건입니다.
추가사항으로 연속음봉 또는 연속양봉 사이에 도지가 있더라도 무방하고, 도지가 여러개 있
어도 무방합니다. (예를들면 양봉 도지 도지 양봉 진입, 음봉 도지도지도지 음봉 진입_단
첫번째봉과 두번쨰 진입봉의 몸통길이가 같다는 전제조건)
반드시 두번째봉에서 진입을 해야하는데, 실제로 돌려보니 연속캔들 이후 도지에 진입되는
경우가 많습니다.
**진입조건
1.몸통 길이가 같은 연속 음봉 2개 매도
2.몸통 길이가 같은 연속 양봉 2개 매수
(연속음봉 또는 연속 양봉 사이에 도지가 끼어있더라도 무방함, 도지 여러개 또한 상관없음)
#몸통길이 : 외부변수
**청산조건
1.손/익절 : 외부변수
#진입후 청산 이후 재진입 반복. (익절이든 손절이든 하기전에 신규진입 금지, 스위칭 방지)
input : 몸통길이틱수(10),익절틱수(10),손절틱수(10);
var : T(0);
var1 = abs(C-O);
if C > O Then
{
T = 1;
value1 = var1;
value2 = value1[1];
}
if C < O Then
{
T = -1;
value3 = var1;
value4 = value3[1];
}
if MarketPosition == 0 and
countif(T == -1,2) == 2 and
value3 == value4[1] and
value3 == PriceScale*몸통길이틱수 then
{
sell("s");
}
if MarketPosition == 0 and
countif(T == 1,2) == 2 and
value1 == value2[1] and
value1 == PriceScale*몸통길이틱수 then
{
Buy("b");
}
SetStopProfittarget(익절틱수*PriceScale,PointStop);
SetStopLoss(손절틱수*PriceScale,PointStop);
2018-07-21
223
글번호 120778
답변완료
매매시점의 보조지표 값
ar : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
후행스팬 = C;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
var1 = max(선행스팬1,선행스팬2);
var2 = min(선행스팬1,선행스팬2);
if crossup(c,var1) and C > O Then
buy();
위와 같은 식에서 매수한 시점의 var1 값을 기억하고 그 값에서 -1.00 포인트 하락하면 손절하는 식을 부탁합니다.
2018-07-21
208
글번호 120777
답변완료
스톡시스템
스톡캐스틱 슬로우(12.26.9)에서
%k 85를 찍을때 (터치했을때) 매도
%k 15를 찍을때 (터치했을때) 매수
인 시스템좀 만들어주셔요
2018-07-21
211
글번호 120776
답변완료
문의드립니다.
검색식 문의 드립니다.
최근 30봉 이내 시가와 종가가 볼밴(20,2)과 엔벨로프(20.2) 하단선 아래 위치후 가격이 5%이상 하락한 종목
2018-07-21
226
글번호 120774
답변완료
특정시간대의 손실 초과 발생 시 진입제한
안녕하세요 크루드오일 거래하고 있습니다.
크루드오일 거래시간인 오전 07시~ 오전06시 사이에
30틱 이상 손해가 나면 진입을 하지 않는걸로 정하고싶은데
Inputs : 하루손실(30);
var : NP(0),PreNP(0),dayPL(0);
NP = NetProfit;
if stime == 070000 or (stime > 070000 and stime[1] < 070000) Then{
PreNP = NP;
}
if stime >= 070000 or stime < 060000 Then{
dayPL = NP-PreNP;
if dayPL/PriceScale > -PriceScale*하루손실 Then{
if 매수조건 Then
buy("매수");
if 매도조건 Then
sell("매도");
}
}
이렇게 설정해두었습니다.
그런데 어떤 날은 손해가 30틱이 채 안되어도 진입을 안할 때가 있고
어떤 날은 30틱이 넘어도 진입을 할 때가 있네요.
어디를 수정하면 좋을지 답변 부탁드립니다 ^^
2018-07-21
212
글번호 120773
답변완료
매도 로직 요청
* 주말은 잘 쉬셨는지요.....
* 더운날씨에 매매 로직과 싸우고 있습니다.
< 질문1>
var : S1(0),D1(0),TM(0),TF(0);
var1 = ma(c,5);
if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; }
if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1;
Else TM = TimeToMinutes(stime)+1440-S1;
if c > var1 Then {
if MarketPosition == 0 or (MarketPosition == -1 and TM >= TM[BarsSinceEntry]+1)
Then buy("매수"); }
if c < var1 Then {
if MarketPosition == 0 or (MarketPosition == -1 and TM >= TM[BarsSinceEntry]+1)
Then buy("매도"); }
SetStopProfittarget(PriceScale*50,PointStop);
SetStopLoss(PriceScale*20,PointStop);
}
상기 문장에서 "매수"로 매매가 되면 2가지 경우가 발생 합니다.
수익: SetStopProfittarget(PriceScale*50,PointStop);
수익 이니까 통과.............
문제는 SetStopLoss(PriceScale*20,PointStop); 여기에 걸리면 손절 20틱 입니다.
<요청 사항1>
SetStopLoss(PriceScale*20,PointStop); (-20틱 손절)
여기에 의해서 손절매도가 되면 즉시 바로 sell주문이 나가게 수식요청 드립니다.
즉 상승으로 예상하고 매수(buy) 했는데 손절(-20틱)이 발생 하면 (MarketPosition == 0)
동시에 바로 하방 매수(sell) (MarketPosition == 1) 될수 있도록 수정 요청 드립니다.
<요청 사항2 >
매수 60분후 매수틱 보다 5틱 이상 이익 이면 패스
매수 60분후 매수틱 보다 10틱 이상 손해고 40딕 이상 한번 이라도 손절이 있었다면 매도
if MarketPosition == 1 and TM >= TM[BarsSinceEntry]+60 Then sell();
이게 아닌가요?
2018-07-22
248
글번호 120772