커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5457
글번호 230811
답변완료
문의
해선에서 밤10시 반에서 ~11시반 사이의 고점 저점을 표현하고 싶습니다
2020-06-09
2383
글번호 139685
레전드 님에 의해서 삭제되었습니다.
2020-06-09
0
글번호 139684
레전드 님에 의해서 삭제되었습니다.
2020-06-09
0
글번호 139683
답변완료
KP-ratio 수식 문의
1. DrawDown (낙폭기간, 낙폭)을 표현한 지표를 만들려고 하는데,
아래 수식을 작성했는데,
???? 으로 표시한 부분의 랭귀지로 표현이 어려워서 문의드립니다.
-------미완성 수식 인용-----
input: period(24);
var: 기간MDD(0), DD기간합(0),KPratio(0), SMscore(0),일별수익률(0), 누적수익률(0), DD기간(0),Count(0) ;
일별수익률 = (C/C[1]-1);
누적수익률 = accumN(일별수익률 , Period) ;
DD기간 = iff( (누적수익률- highest(누적수익률,period) < 0) ,
(누적수익률- highest(누적수익률,period)) , 0 ); //감소시
기간MDD = IFF(DD기간 <0, lowest(DD기간,"????????",0);
// ???? 누적수익률이 하락하여, 전고점 회복하는 데 걸리는 봉수
DD기간합 = countif( DD기간 < 0 , period ) ; //모든 DD의 기간 합계
KPratio = ( c / c[period]-1 )/
( (""-기간MDD???????") *sqrt( DD기간합 / period));
// 기간MDD=낙폭기간별 Max Drawdown의 합
----------------인용끝 ------
2. sm-score는 상기 KP-score를 산출후 , 표준정규분포로 가정하여, 확률을 산출 하는것인데
랭귀지로 표현이 가능할까요 (사진참조)
KP 평균, KP 표준편차는 예스트레이더의 시스템 포트폴리오(%형태의 편차)에서는 없는 기능 같아, 직접 구해야 할것 같아, 외부변수로 빼는것으로 가정)
2020-06-09
2923
글번호 139682
답변완료
시스템
***야~~~~~~호****
>표시가 나왔어요 신기해요!!!!
쌤은 천재예요!!!!!!!
헌데 기존 만들었던 바탕색이랑
기타 범위표시의 색이 다바뀌네요
이럴땐 어케해야하죠???
>sell표시는 나왔다가 사라졌어요
(다시 복귀 할때 보고 싶은데요)
sell을 구현하려면 지표에서는 불가 하다해서
시스템에서 적용해 보았는데
지표에서 sell의 표현아니고
화살표표시정도는 안되는 건간요
지표로 하면 시스템처럼
나왔다가 사라지지않고
표시가 남을 것 같기도 하구요
>솔직히 시스템에 들어가서 보니
좀 감깜하네요
***********************************
1>지표수시으로
sell/buy수식 될까요
************************************
2020-06-09
2309
글번호 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
2249
글번호 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
2029
글번호 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
2230
글번호 139676
답변완료
수식 수정 좀 부탁드립니다.
var1 = sum(V);
var2 = valuewhen(1, date(1)!=date, var1(1));
var3 = var1 - var2;
위에 있는... 영웅문에서 쓰던 수식을 예스랭귀지에 맞게 고쳐주시면 감사하겠습니다
2020-06-09
2420
글번호 139674