커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7719
글번호 230811
답변완료
수고많습니다..
늘 수고많습니다..
저번에 받은 EntriesToday 사용법 좀 설명해 주세요,,
다른 방법으로 진입제한을 해 왔는데..있는 것을 사용하고 싶네요,,
에를 들어 5이평 20이평 골드에 매수 데드에 매도에서 1일 1회로 거래횟수를
제한하는 법을 예를 들어 설명 부탁드립니다,
미리 감사드립니다..
2011-05-20
668
글번호 38864
답변완료
수식 오류 좀 잡아주세요..
수고 많으십니다. 관리자님.
수식을 작성한 것이 작동을 제대로 하지 않아서 문의를 드립니다.
"상기대매수" "상기대재진입" "상한가오버청산1" "상한가오버청산2"
이것이 작동을 안합니다.
If MarketPosition == 1 and sdate != EntryDate(1) and dayclose(1) == 상한가 Then{
if stime == 150000 and NextBarOpen <= dayclose*1.03 then
ExitLong("상한가오버청산1",AtStop,Dayclose*1.03);
if stime == 150000 and NextBarOpen > dayclose*1.03 then
ExitLong("상한가오버청산2",AtStop,highest(H,BarsSinceEntry)*0.99);
요 식은 전날 매수하고 청산하지 않은 채 익일로 넘어갔을 경우(상한가로 오버된 경우)청산하고자 하는 식인데 아예 작동을 하지 않네요. 시초가매도하려는 식인데 어떤 오류인지 잡아주시면 감사드리구요, "상기대매수" "상기대재진입" 은 기본적으로 당일 14% 넘어가면 진입하는 것인데 진입을 안하더라구요. 오류시정좀 부탁드립니다..
**************************************************************************
input : N(1);
var : 상한가(0), UpLimit(0);
var : aaa(0), bbb(0), ccc(0), ddd(0), eee(0),fff(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else
UpLimit = (BP[0] * 1.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
aaa = int(UpLimit/100+0.00001)*100;
bbb = int(UpLimit/100+0.00001)*100;
ccc = int(UpLimit/100+0.00001)*100;
ddd = int(UpLimit/50+0.00001)*50;
eee = int(UpLimit/10+0.00001)*10;
fff = int(UpLimit/5+0.00001)*5;
}
else {
aaa = int(UpLimit/1000+0.00001)*1000;
bbb = int(UpLimit/500+0.00001)*500;
ccc = int(UpLimit/100+0.00001)*100;
ddd = int(UpLimit/50+0.00001)*50;
eee = int(UpLimit/10+0.00001)*10;
fff = int(UpLimit/10+0.00001)*10;
}
}
Else {
aaa = int(UpLimit/1000+0.00001)*1000;
bbb = int(UpLimit/500+0.00001)*500;
ccc = int(UpLimit/100+0.00001)*100;
ddd = int(UpLimit/50+0.00001)*50;
eee = int(UpLimit/10+0.00001)*10;
fff = int(UpLimit/5+0.00001)*5;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
If BP >= 500000 Then
상한가 = aaa;
Else If BP >= 100000 Then
상한가 = iff(bbb>=500000, aaa, bbb);
Else If BP >= 50000 Then
상한가 = iff(ccc>=100000, bbb, ccc);
Else If BP >= 10000 Then
상한가 = iff(ddd>=50000, ccc, ddd);
Else If BP >= 5000 Then
상한가 = iff(eee>=10000, ddd, eee);
Else
상한가 = iff(fff>=5000, eee, fff);
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = fff;
}
}
if MarketPosition == 0 and ExitDate(1) != sdate Then{
if dayindex >= 0 and stime < 143000 Then
buy("고점돌파",AtStop,dayhigh(N)+PriceScale);
if dayindex >= 0 and stime < 143000 and DayVolume < DayVolume(N)*(4/5) and c[1] < dayopen*1.14 Then
buy("상기대매수",AtStop,dayopen*1.14);
}
if MarketPosition == 0 then{
if stime == 150000 and NextBarOpen >= dayhigh(N-1)+PriceScale Then
buy("시초가매수",AtStop,dayhigh(N-1)+PriceScale);
}
if MarketPosition == 1 and ExitDate(1) != sdate and dayclose(1) != 상한가 Then{
exitlong("진입가손절",AtStop,EntryPrice*0.98);
exitlong("고점손절",AtStop,dayhigh(N)*0.985);
if highest(H,BarsSinceEntry) < dayopen*1.1 Then
exitlong("10%미만청산",AtStop,highest(H,BarsSinceEntry)*0.97);
if highest(H,BarsSinceEntry) >= dayopen*1.1 Then
exitlong("10%이상청산",AtStop,highest(H,BarsSinceEntry)*0.98);
if c == 상한가 Then
exitlong("상한가청산",AtStop,상한가*0.99);
}
if MarketPosition == 0 and ExitDate(1) == sdate and ExitDate(2) != sdate then{
if dayindex >= 0 and stime < 143000 and DayVolume < DayVolume(N)*(4/5) and c[1] < dayopen*1.149 Then
buy("상기대재진입",AtStop,dayopen*1.14);
if dayindex >= 0 and stime < 143000 and C < dayhigh(N) then
buy("고점재돌파",AtStop,dayhigh(N)+PriceScale*2);
if dayindex >= 0 and stime < 143000 and C < dayopen then
buy("시초가재매수",AtStop,dayopen+PriceScale*2);
}
if MarketPosition == 1 and (IsEntryName("상기대재진입") or IsEntryName("고점재돌파") or IsEntryName("시초가재매수")) Then{
exitlong("진입가손절2",AtStop,EntryPrice*0.98);
if highest(H,BarsSinceEntry) < dayopen*1.1 Then
exitlong("10%미만청산2",AtStop,highest(H,BarsSinceEntry)*0.97);
if highest(H,BarsSinceEntry) >= dayopen*1.1 Then
exitlong("10%이상청산2",AtStop,highest(H,BarsSinceEntry)*0.98);
if c == 상한가 Then
exitlong("상한가청산2",AtStop,상한가*0.99);
}
If MarketPosition == 1 and sdate != EntryDate(1) and dayclose(1) == 상한가 Then{
if stime == 150000 and NextBarOpen <= dayclose*1.03 then
ExitLong("상한가오버청산1",AtStop,Dayclose*1.03);
if stime == 150000 and NextBarOpen > dayclose*1.03 then
ExitLong("상한가오버청산2",AtStop,highest(H,BarsSinceEntry)*0.99);
2011-05-20
638
글번호 38863
답변완료
수식문의
수고하십니다.
맨 아래 기존수식에 다음과 같은 내용을 추가해 줄것을 부탁 드립니다.
9시~11시까지 1회 매매
11시~13시까지 1회 매매
13시~15시까지 1회 매매
이렇게 하루를 3등분해서 각각 한번씩만 신규진입 할수 있게요.
물론 청산 안되고 포지션이 있다면 다음 시간을 넘어 갈수도 있겠죠.
결국 진입은 하루 최대 3번이하가 되겠습니다.
기존수식:
Input : shortPeriod(12), longPeriod(26), Period(9);
value1 = MACD(shortPeriod, longPeriod);
value2 = ema(value1, Period);
If 조건1 Then
Buy();
If 조건2 Then
Sell();
if 청산조건1 Then
exitlong("bx",AtStop,highest(h,BarsSinceEntry)-Tr);
if 청산조건2 Then
ExitShort("sx",AtStop,Lowest(L,BarsSinceEntry)+Tr);
감사합니다
2011-05-20
660
글번호 38853
답변완료
수식 부탁 합니다
항상 감사 드립니다
오늘 현재일 기준 5일 전 까지 5, 10, 20 이평선이 정배열 상태로
최소 15일 이상 유지 했는데
다시 풀어 말하자면 20일 전부터 5일 전까지 5, 10, 20 이평선이 정배열 상태로
유지됐는데
이후 5이평선과 10 이평선 Dead Cross 발생하여 현재 주가가 20 이평선 상위 +, - 2% 이내에 있는 종목 검색식 부탁합니다.
2011-05-20
627
글번호 38852
답변완료
질문과 식요청
안녕하세요 저는 연결선물매매자입니다
주봉차트에서 매매하고 있습니다
저는 개발된 프로그램을 당사 직원에게 비밀번호걸고 식을 맞겨 매매하구있습니다
그런데 보고서에보면 매매결과가 제가 보내드린 프로그램 매매 결과와
저희 컴퓨터에서 보고서 결과를 보면 다르게나오니까 왜그런건가요
몰론 식은 조금도 변화된것 없습니다 확인하고 또확인했지만
전략로직 같은 식 인데도 보고서 에는 다르니 왜그런겁니까
SetStopTrailing(1.00,1.00); ## 최대수익대비하락 수익대비 1%수익이후1%
윗글 식을 사용해서 그런가요?
아래 식은 무슨뜻 인가요 어디값에해당하는지요 주봉에서 볼경우 입니다
if dayindex() >= 0 and stime < 150000 Then{
매수 는 참조
매도 는 참조
2011-05-20
707
글번호 38851
답변완료
행복; 수식 작성 바랍니다
보내주신 아래의 답변 잘 받았습니다
추가로 질문 드립니다
< 질문 1 >
아래의 답변에 저의 원래 질문 중
- 1회 매수금액은 백만원씩
- 피라미딩으로 매수하되 최대 매수회수는 10일 중 8회까지만 한다
가 누락되어 있습니다
누락된 부분을 추가하여 수식 작성 바랍니다
만약 시스템트레이딩 설정창에서 할 수 있는 부분이 있으면
설정하는 방법을 알려주십시요
< 질문 2 >
아래의 답변 중
Max3 = max(3,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
는
MaxList3 = max(D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
와
같은 의미 인지요?
===============<< 아래 >>====================================
안녕하세요
예스스탁입니다.
data1은 주종목입니다. 참조종목은 data2부터 시작됩니다.
var : d1(0,data1),d2(0,data2),d3(0,data3),d4(0,data4),d5(0,data5);
var : d6(0,data6),d7(0,data7),d8(0,data8),d9(0,data9),d10(0,data10);
var : Max1(0,data1),Max2(0,data1),Max3(0,data1),Max4(0,data1),Max5(0,data1);
D1 = data1(C-C[1]/C[1]*100);
D2 = data2(C-C[1]/C[1]*100);
D3 = data3(C-C[1]/C[1]*100);
D4 = data4(C-C[1]/C[1]*100);
D5 = data5(C-C[1]/C[1]*100);
D6 = data6(C-C[1]/C[1]*100);
D7 = data7(C-C[1]/C[1]*100);
D8 = data8(C-C[1]/C[1]*100);
D9 = data9(C-C[1]/C[1]*100);
D10 = data10(C-C[1]/C[1]*100);
Max1 = max(1,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
Max2 = max(2,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
Max3 = max(3,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
Max4 = max(4,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
Max5 = max(5,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10);
if D1 == max1 Then
buy("b1");
if D1 == max2 Then
buy("b2");
if D1 == max3 Then
buy("b3");
if D1 == max4 Then
buy("b4");
if D1 == max5 Then
buy("b5");
if MarketPosition == 1 Then{
if IsEntryName("b1") and BarsSinceEntry == 10 Then
exitlong("bx1");
if IsEntryName("b2") and BarsSinceEntry == 9 Then
exitlong("bx2");
if IsEntryName("b1") and BarsSinceEntry == 8 Then
exitlong("bx3");
if IsEntryName("b4") and BarsSinceEntry == 7 Then
exitlong("bx4");
if IsEntryName("b5") and BarsSinceEntry == 6 Then
exitlong("bx5");
}
즐거운 하루되세요
> 행복한가방 님이 쓴 글입니다.
> 제목 : 행복; 수식 작성 바랍니다
> 주기; 일봉
주 종목; 녹십자
참조data1; 유한양행
참조data2; 종근당
참조data3; 삼성카드
참조data4; 현대해상
참조data5; 오뚜기
참조data6; 빙그레
참조data7; 고려아연
참조data8; 이구산업
참조data9; 현대건설
< 매수 >
- 매일 매일 녹십자와 (참조data1~참조data9)를 포함한 10 종목을 비교한다
- 당일 녹십자의 상승율이 10 종목 중에서 1~5위에 해당되는 날마다 종가로 매수
- 1회 매수금액은 백만원씩
- 피라미딩으로 매수하되 최대 매수회수는 10일 중 8회까지만 한다
< 매도 >
- 녹십자 상승율이 1위이면 매수 후 10일( = 11 - 1 )후 종가로 매도
- 녹십자 상승율이 2위이면 매수 후 9일( = 11 - 2 )후 종가로 매도
- 녹십자 상승율이 3위이면 매수 후 8일( = 11 - 3 )후 종가로 매도
- 녹십자 상승율이 4위이면 매수 후 7일( = 11 - 4 )후 종가로 매도
- 녹십자 상승율이 5위이면 매수 후 6일( = 11 - 5 )후 종가로 매도
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
2011-05-20
710
글번호 38850
답변완료
행복; 질문 드립니다
보내주신 아래의 답변 잘 받았습니다
답변 내용 중에 condition 과 index 에 대한 이해가 부족하여 질문 드립니다
< 답변 1 >
갭이 메워진다고 말씀하신 부분이
최고 저가가 전봉의 고가보다 큰봉이 발생했을 때의 갭이시라면
식은 아래와 같습니다
if index > 0 and L > H[1] AND Condition1 == FALSE Then{
Condition1 = TRUE;
value1 = H[1];
}
IF Condition1 == TRUE Then{
var1 = var1+1;
if L < value1 Then{
Condition1 = false;
var1 = 0;
}
}
plot1(var1);
< 답변 2 >
만약 H[1] < L이 발생한 이후에 1씩 증가하고
역으로 L <= H[1]인 봉이 발생하면 0으로 초기화하는 것이라면
식은 아래와 같습니다.
if L > H[1] AND Condition1 == FALSE Then{
Condition1 = TRUE;
value1 = H[1];
}
IF Condition1 == TRUE Then{
var1 = var1+1;
if L <= H[1] Then{
Condition1 = false;
var1 = 0;
}
}
plot1(var1);
================================================
< 질문 1 >
- < 답변1 > 에서 Condition1 == FALSE 는 어떤 조건인가요?
또한 Condition1 == TRUE 는 어떤 조건인가요?
- 일반적으로 Condition1 = TRUE 을 사용할 때는
Condition1 = ma(c, 5) > ma(c, 20);
if Condition1 == TRUE the buy(); 처럼
Condition1 의 조건을 먼저 정해놓은 다음에
Condition1 == FALSE 나 Condition1 == TRUE 를 사용하는데
< 답변 1 > 에서의 Condition1 은 정해놓은 것이 없지 않나요?
< 질문 2 >
- < 답변 1 > 에서 index > 0 이 있어야 되는 이유와
< 답변 2 > 에서 index > 0 이 없어야 되는 이유는 어떠한 것인가요?
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
2011-05-20
631
글번호 38849
답변완료
수식부탁드립니다
항상 도와주심에 감사 또 감사합니다
수식작성하다 어려운점이 있어 부탁드립니다
If stime >= 090000 and stime < 145000 and C < dayopen+3.5 and crossup(value51, value52) and value53 > value53[2] Then{Buy("매수");}
If stime >= 090000 and stime < 145000 and C > dayopen-3.5 and crossdown(value51, value52) and value53 < value53[2] Then{Sell("매도");}
위의 기존에 있는 수식표현 / 매수신호에 value52 < value52[2] 면 C > value77을 적용하고, value52 > value52[2]면 C > value77을 적용않는 방법으로 위의 수식에 첨가 시키려고합니다.
매도는 반대로 표현하면 되고요.
어떻게 표현하는지요 빠른 답변 부탁드립니다.
감사합니다.
2011-05-20
716
글번호 38848
답변완료
시스템식 부탁드립니다.
전일고가에서 전일 저가를 뺍니다. 전일 고가와 전일 저가의 차이를 구하는 것이죠.
그 값을 a라고 한다면 a에 일정한 변수, b를 곱합니다. a * b
그리고 그 값을 '변동성'이라고 하고 그 변동성을 당일 시가에 적용합니다.
주가가 당일 시초가에 변동성을 더한 값을 상향 돌파하면 매수하고
주가가 당일 시초가에서 변동성을 뺀 값보다 하향하면 매도합니다.
변동성을 이용한 전략인데 수식을 작성해주시면 감사하겠습니다.
수고해주십시요.
2011-05-19
684
글번호 38846