커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5492
글번호 230811
답변완료
시스템
***야~~~~~~호****
>표시가 나왔어요 신기해요!!!!
쌤은 천재예요!!!!!!!
헌데 기존 만들었던 바탕색이랑
기타 범위표시의 색이 다바뀌네요
이럴땐 어케해야하죠???
>sell표시는 나왔다가 사라졌어요
(다시 복귀 할때 보고 싶은데요)
sell을 구현하려면 지표에서는 불가 하다해서
시스템에서 적용해 보았는데
지표에서 sell의 표현아니고
화살표표시정도는 안되는 건간요
지표로 하면 시스템처럼
나왔다가 사라지지않고
표시가 남을 것 같기도 하구요
>솔직히 시스템에 들어가서 보니
좀 감깜하네요
***********************************
1>지표수시으로
sell/buy수식 될까요
************************************
2020-06-09
2311
글번호 139681
답변완료
부탁 드립니다.
변환 문의 드립니다.
m=ma(c,p20,단순);
a=m+avgif(c-m,1,0.0)+2*stdevif(c-m,1,0.0);
여기서 avgif , stdevif는 무슨의미 인지요?
미리 감사드립니다.
2020-06-09
2250
글번호 139680
답변완료
수식 문의 드립니다.
관리자님,
회신 감사드립니다.
허나 최고점 대비 5%에 곤바로 팔리지 않고
봉이 완성되고 난뒤인 한참 아래서 팔립니다.
재 검토 후 회신 부탁 드립니다.
감사 드립니다.,
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 문의 드립니다.
>
안녕하세요
예스스탁입니다.
input : P(9);
var1 = cci(P);
if var1 >= 100 Then
sell("s",AtStop,highest(H,2)*0.95);
즐거운 하루되세요
> 기관장 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다.
> 매도 : cci(9,10) 이 100 이상이고, 이전 2봉중 최고점 대비 5% 하락시 봉끝나기 전이라도 즉시 매도
2020-06-09
2031
글번호 139677
답변완료
알려주신 수식대로 했는데 잘 안됩니다 ^^;; 번거롭게 해드려서 대단히 죄소합니다
1분봉으로 바꿀경우 매수신호는 나오는데요, 2000년도부터 현재까지 데이터를 보려고 하니 1분봉으로 바꿀경우 데이터가 너무 커서 예스트레이더가 자꾸 멈춥니다 ^^;;
그래서 5분봉 상태에서 수식을 넣고 백테스팅을 해보고 싶은데 잘 안되네요 ^^;;
알려주신 수식 그대로 적용을 해봤는데요, 가장 최근 6월 3일 매수가 안잡힙니다
필요하시다면 ,,,메일을 알려주시면 제 수식을 전부 드리도록 하겠습니다/!
atr = DAYHIGH(1) - DAYLOW(1);
LTR = MAX(1,NOISE * ATR);
STR = MAX(1,(1-NOISE) * ATR);
VL = cap / (dayclose(1) * MUL * rt);
LUNIT = INT((CAP * RISK) / (LTR * MUL));
SUNIT = INT((CAP * RISK) / (STR * MUL));
IF LUNIT >= VL Then LUNIT1 = VL; ELSE LUNIT1 = LUNIT;
IF LUNIT * 3 <= VL THEN LUNIT2 = LUNIT1; ELSE LUNIT2 = (VL - LUNIT)/2;
IF SUNIT >= VL THEN SUNIT1 = VL; ELSE SUNIT1 = SUNIT;
IF SUNIT * 3 <= VL THEN SUNIT2 = SUNIT1 ; ELSE SUNIT2 = (VL - SUNIT)/2;
# ENTRY
L1 = DAYOPEN + LTR ;
L2 = L1 + (LTR * 0.5);
L3 = L1 + LTR;
S1 = DAYOPEN - STR;
S2 = S1 - (STR * 0.5);
S3 = S1 - STR;
NL1 = LatestExitPrice(1)+LTR;
NL2 = NL1 + LTR * 0.5;
NL3 = NL1 + LTR;
NS1 = LatestExitPrice(1)-STR;
NS2 = NS1 - STR * 0.5;
NS3 = NS1 - Str;
IF MarketPosition == 0 AND NextBarSdate != sdate Then
{
BUY("L11",ATSTOP,NextBarOpen+LTR,LUNIT1);
SELL("S11",ATSTOP,NExtBarOpen-STR,SUNIT1);
}
IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then {
IF H <= L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1,LUNIT1);
IF L >= S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1,SUNIT1);
}
# 매수 피라미딩
IF MarketPosition == 1 AND STIME <153000 and (IsEntryName("L1")==True or IsEntryName("L11") == True) THEN {
if highest(h,BarsSinceEntry) <= L2 Then
buy("L2",ATSTOP,L2,LUNIT2);
if highest(h,BarsSinceEntry) <= L1 + LTR Then
buy("L3",ATSTOP, L3,LUNIT2);
}
# 매수청산
IF MarketPosition == 1 then {
if NextBarSdate == SDATE Then
ExitLong("LS",AtStop,LatestEntryPrice - LTR);
IF NextBarSdate != SDATE Then
ExitLong("EL",ATMARKET);
}
# 매도 피라미딩
IF MarketPosition == -1 AND STIME < 153000 AND (IsEntryName("S1") == True or IsEntryName("S11") == True) THEN {
IF Lowest(L,BarsSinceEntry) >= S2 Then
SELL("S2",AtStop,S2,SUNIT2);
IF Lowest(L,BarsSinceEntry) >= S1 - STR Then
SELL("S3",AtStop,S3,SUNIT2);
}
# 매도청산
IF MarketPosition == -1 then {
IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR);
SetStopEndofday();
}
ELSE SetStopEndofday(0); #해제
# 재진입
IF MarketPosition == 0 AND BDATE == EXITDATE(1) Then {
IF MarketPosition(1) == 1 AND H <= NL1 AND NextBarSdate == sDate AND IsExitName("LS",1) == TRUE THEN BUY("NL1",ATSTOP,NL1,LUNIT1);
IF MarketPosition(1) == -1 AND L >= NS1 AND NextBarSdate == SDATE THEN SELL("NS1",ATSTOP,NS1,SUNIT1);
}
IF BDATE == EXITDATE(1) AND MarketPosition == 1 AND IsEntryName("NL1") == TRUE THEN {
IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) <= NL2 THEN BUY("NL2",ATSTOP,NL2,LUNIT2);
IF LatestEntryName == "NL2" AND HIGHEST(H,BarsSinceEntry) <= NL3 THEN BUY("NL3",ATSTOP,NL3,LUNIT2);
}
IF BDATE == ExitDate(1) AND MarketPosition == -1 AND IsEntryName("NS1") == TRUE Then {
IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) >= NS2 THEN SELL("NS2",ATSTOP,NS2,SUNIT2);
IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) >= NS3 THEN SELL("NS3",ATSTOP,NS2,SUNIT2);
}
2020-06-09
2235
글번호 139676
답변완료
수식 수정 좀 부탁드립니다.
var1 = sum(V);
var2 = valuewhen(1, date(1)!=date, var1(1));
var3 = var1 - var2;
위에 있는... 영웅문에서 쓰던 수식을 예스랭귀지에 맞게 고쳐주시면 감사하겠습니다
2020-06-09
2421
글번호 139674
답변완료
어제 수식 수정부탁드려요
제가 원하는 곳에서 신호가 않나와서요
---------------------------------
그림 1에서 네모 봉을 확인후(봉의 몸통으로 이평선을 돌파한경우에만) + 아래 화살표처럼 CCI 우상향일시 동그라미 봉에서 매수가 진입이 되게 하고싶습니다 동그라미가 음봉으로 시작하면 안되고 네모봉 종가와 같거나 양봉으로 시작해야 됩니다
매도일때는 반대의경우 입니다
1번그림처럼 네모봉이 5 10 20 분봉이 돌파 해도 되지만 바로아래그림처럼 5, 10 20 60 120 모두 돌파해도 상관없습니다 5 10만 돌파하거나 5.20만 돌파 하면 안됩니다 네모 봉 몸통으로 3개이상만 순서상관없이 돌파하면 됩니다
------------------------------------
그림 4처럼 이전 봉들이 연속적으로 3개이상 돌파봉이 되었다면 진입 금지 입니다
이전 최근 5봉의 몸통으로 응봉이든 양봉이든 5 10 20분봉(순서는 상관없음) 돌파한봉이 3개이하 일경우 위와같이 봉몸통으로 돌파한봉이 최근 5개봉중 3개 이하 여야되고 5,10 20 60 120 중 순서는 상관없이 3개 봉 이하일때만 진입입니다
----------------------------------------
그림 2처럼 만든어주신 시스템 적용했는데 원하지 않는 곳에서 매매가 시작 됩니다
-----------------------------------
그림 3처럼 만약 네모 봉에서 매도 신호가 발생을했으면 동그라미 봉이 양봉으로 끝났을때 청산 원하는데 그렇게 안되는거 같아서 수정부탁드려요
---------------------------
1번시스템은 위와 같이 수정 부탁드리오 2번시스템은 위내용과 동일하고 5 10 20 60 120분봉 2개이상 몸통돌파봉을 확인하고 경우 매수일경우 매도일경우 청산도 위와 같이 해주시면됩니다
혹시 가능하다면 초보라서 시스템에 자세한 주석 부탁드립니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템식 부탁드려요
> 안녕하세요
예스스탁입니다.
1
input : StartTime(91000),EndTime(130000);
input : P1(5),P2(10),P3(20),CCIP(9);
input : 진폭봉수(5),진폭틱수(50),N(5),돌파봉수(3);
input : 익절틱수(100),손절틱수(100);
var : Tcond(false),mav1(0),mav2(0),mav3(0),CCIv(0);
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
CCIv = CCI(CCIP);
var1 = 0;
if max(C,O) > mav1 and mav1 > min(C,O) Then
var1 = var1+1;
if max(C,O) > mav2 and mav2 > min(C,O) Then
var1 = var1+1;
if max(C,O) > mav3 and mav3 > min(C,O) Then
var1 = var1+1;
if Tcond == true then
{
if MarketPosition <= 0 and
C > max(mav1,mav2,mav3) and min(mav1,mav2,mav3) > O and
CCIv > CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
buy("b",AtStop,NextBarSdate+PriceScale*1);
if MarketPosition >= 0 and
C < max(mav1,mav2,mav3) and min(mav1,mav2,mav3) < O and
CCIv < CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
sell("s",AtStop,NextBarSdate-PriceScale*1);
if MarketPosition == 1 then
{
if C < O Then
ExitLong("bx1");
}
if MarketPosition == -1 then
{
if C > O Then
ExitShort("sx1");
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStoploss(PriceScale*손절틱수,PointStop);
if EndTime > Starttime Then
SetStopEndofday(EndTime);
if EndTime < Starttime Then
{
if sdate != sdate[1] Then
SetStopEndofday(EndTime);
if bdate != bdate[1] Then
SetStopEndofday(0);
}
2
input : StartTime(91000),EndTime(130000);
input : P1(5),P2(10),P3(20),P4(60),P5(120),CCIP(9);
input : 진폭봉수(5),진폭틱수(50),N(5),돌파봉수(3);
input : 익절틱수(100),손절틱수(100);
var : Tcond(false),mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),CCIv(0);
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
mav4 = ma(C,P4);
mav5 = ma(C,P5);
CCIv = CCI(CCIP);
var1 = 0;
if C > mav1 and mav1 > O Then
var1 = var1+1;
if C > mav2 and mav2 > O Then
var1 = var1+1;
if C > mav3 and mav3 > O Then
var1 = var1+1;
if C > mav4 and mav4 > O Then
var1 = var1+1;
if C > mav5 and mav5 > O Then
var1 = var1+1;
var2 = 0;
if C < mav1 and mav1 < O Then
var2 = var2+1;
if C < mav2 and mav2 < O Then
var2 = var2+1;
if C < mav3 and mav3 < O Then
var2 = var2+1;
if C < mav4 and mav4 < O Then
var2 = var2+1;
if C < mav5 and mav5 < O Then
var2 = var2+1;
if Tcond == true then
{
if MarketPosition <= 0 and
var1 >= 2 and
CCIv > CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
buy("b",AtStop,NextBarSdate+PriceScale*1);
if MarketPosition >= 0 and
var2 >= 2 and
CCIv < CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
sell("s",AtStop,NextBarSdate-PriceScale*1);
if MarketPosition == 1 then
{
if C < O Then
ExitLong("bx1");
}
if MarketPosition == -1 then
{
if C > O Then
ExitShort("sx1");
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStoploss(PriceScale*손절틱수,PointStop);
if EndTime > Starttime Then
SetStopEndofday(EndTime);
if EndTime < Starttime Then
{
if sdate != sdate[1] Then
SetStopEndofday(EndTime);
if bdate != bdate[1] Then
SetStopEndofday(0);
}
즐거운 하루되세요
> 가날 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드려요
> 매매 시작시간은 오전 9시 10분 종료시간은 13시
매수조건 :
전양봉이 몸통으로 5 10 20이평을(순서는 상관없음) 돌파후 양봉시작 + CCI 우상향일시
+ 이전 최근 5봉의 최저점 최고점 진폭 50틱이상 + 이전 최근 5봉의 몸통으로 응봉이든 양봉이든 5 10 20분봉(순서는 상관없음) 돌파한봉이 3개이하 일경우
매도조건 :
전음봉이 몸통으로 5 10 20이평을(순서는 상관없음) 돌파후 양봉시작 + CCI 우하향일시 매도
+ 이전 최근 5봉의 최저점 최고점 진폭 50틱이상 + 이전 최근 5봉의 몸통으로 응봉이든 양봉이든 5 10 20분봉(순서는 상관없음) 돌파한봉이 3개이하 일경우
청산조건 :
매수후 완성봉이 음봉나올때 나 수익 100틱 손절 100틱
매도후 완성봉이 양봉이 나오면 청산 수익 100틱 손절 100틱
제가 숫자로 지정한것들은 변수로 설정 부탁드립니다
-----------------------
추가적으로 위 시스템이랑 모두 같은 조건에서
전양봉이 몸통으로 5 10 20분봉(순서는 상관없음) 돌파후 양봉시작 을
->
전양봉이 몸통으로 5 ,10,20,60,120 이평선중에 ( 순서는 상관없음) 2개 분봉 돌파
음봉도 반대의 경우로 매매할수있는 시스템식도 추가적으로 부탁드려요
총2개 부탁드려요
요청이 많아서 죄송 합니다
2020-06-10
2500
글번호 139671
답변완료
문의 드립니다
안녕하세요!
1, 아래 67854번 관련 어제 아래와같은 답변을 받았는데요(수식1)
제가 바라는것은
캔들이 해당 기준선에 도달한 직후부터 이후 1-2분정도만 음성신호가 발생되는 수식이었으면합니다
가능하다면 다시 부탁드리겠습니다
2, 아래 (수식2) 에서도 음성신호 수식으로 수정 부탁드립니다
* 단, plot3 부터 plot8까지의 부분만 음성이 나오면 됩니다
자꾸 번거롭게해드려서 죄송하고 감사합니다 !!!
---------------------------------------------------------------------------------------
(수식1)
Inputs: TurnLen(9), StdLen(26), PrdLen(52);
Variables: 기준선(0);
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
Plot1(기준선, "기준선");
var1 = TimeToMinutes(stime);
var2 = TimeToMinutes(time);
if crossup(h,기준선) or CrossDown(l,기준선) Then
{
if var2 >= var1+50 then
PlaySound("C:₩예스트레이더₩data₩Sound₩60분기준선.wav");
}
(수식 2)
var : CC(0,data1),HH(0,data1),LL(0,data1),OO(0,data1);
var : C1(0,data1),H1(0,data1),L1(0,data1),O1(0,data1);
var : C2(0,data1),H2(0,data1),L2(0,data1),O2(0,data1);
CC = (data1(c)+data2(c))/2;
if data1(date != date[1]) Then
{
HH = CC;
LL = CC;
OO = (data1(O)+data2(O))/2;
O1 = OO[1];
O2 = O1[1];
C1 = CC[1];
C2 = C1[1];
H1 = HH[1];
H2 = H1[1];
L1 = LL[1];
L2 = L1[1];
}
if CC > HH Then
HH = CC;
if CC < LL Then
LL = CC;
plot1(HH,"중간값 중 당일 최고값");
plot2(LL,"중간값 중 당일 최저값");
plot3(C1,"전일종가합/2");
plot4(H1,"전일 중간값 중 당일 최고값");
plot5(L1,"전일 중간값 중 당일 최저값");
plot6(C2,"전전일종가합/2");
plot7(H2,"전전일 중간값 중 당일 최고값");
plot8(L2,"전전일 중간값 중 당일 최저값");
2020-06-10
2114
글번호 139670
답변완료
문의드립니다
긴시간의 분봉을 이용하여 Onclose 주문을 이용한 시스템을 작성하였을 때에
시뮬레이션상으로는 해당 봉의 종가에 청산되는 것으로 나오는데
예를 들어 120분봉을 사용한다고 가정하였을때에 하루에 봉은 4개입니다.
1번봉 9시~11시 / 2번봉 11시~1시 / 3번봉 1시~3시 / 4번봉 3시~5시
코스피 200 선물의 경우 만기일이 아닌 경우 3시36분~45분 종가 단일가인데
4번봉에서 Onclose주문이 나갔을 때에 몇시 몇분에 주문이 나가는지 궁금합니다.
만기일일 경우와 만기일이 아닐 경우에 자동적으로 알아서 분이 수정되는지도 궁금합니다.
만약 이런 기능을 제공하지 않는다면 해결법에 대해서도 알려주시면 감사하겠습니다.
2020-06-09
2057
글번호 139666
답변완료
수식 문의드려요.
과거 10개봉중 RSI(20)이하이며 전최저점인 봉을 현저점이 돌파하고 돌파한 종가의 RSI값이 전저점보다 높으면 매수 (최근 5개봉 이내 매수를 진입한 경우 재진입 금지)
과거 10개봉중 RSI(80)이상이며 전최고점인 봉을 현고점이 돌파하고 돌파한 종가의 RSI값이 전고점보다 낮으면 매도 (최근 5개봉 이내 매도를 진입한 경우 재진입 금지)
매수진입 이후 10개봉중 RSI(80)이상이며 전최고점인 봉을 현고점이 돌파하고 돌파한 종가의 RSI값이 전고점보다 낮으면 매수청산
매도진입 이후 10개봉중 RSI(20)이하이며 전최저점인 봉을 현저점이 돌파하고 돌파한 종가의 RSI값이 전저점보다 높으면 매도청산
2020-06-09
2057
글번호 139665