커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7788
글번호 230811
답변완료
문의 드립니다.
input : 익절틱수(200),손절틱수(30);
var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : ST(0),ET(0),entry(0);
if NextBarSdate != sDate Then
{
DD = DayOfWeek(NextBarSdate);
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = Sdate > (10000 * Year) + (100 * 3) + v2 and Sdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = 70000;
ET = 55000;
}
Else
{
ST = 80000;
ET = 65000;
}
}
if Year > 0 Then
{
IF ET > ST Then
SetStopEndofday(ET);
Else
{
if NextBarSdate != sDate Then
SetStopEndofday(ET);
}
if ((NextBarSdate != sDate and NextBarStime >= ST) or
(NextBarSdate == sDate and NextBarStime >= ST and sTime < ST)) Then
{
if ET < ST Then
SetStopEndofday(0);
if NextBarOpen != c Then
{
Buy("b",AtStop,NextBarOpen+PriceScale*10);
Sell("s",AtStop,NextBarOpen-PriceScale*10);
}
}
Else
{
if h < DayOpen+PriceScale*10 Then
Buy("b1",AtStop,DayOpen+PriceScale*10);
if l > DayOpen-PriceScale*10 Then
Sell("s1",AtStop,DayOpen-PriceScale*10);
}
}
if NextBarOpen != c Then
{
Buy("bb",AtStop,NextBarOpen+PriceScale*10);
Sell("ss",AtStop,NextBarOpen-PriceScale*10);
}
Else
{
if h < DayOpen+PriceScale*10 Then
Buy("b11",AtStop,DayOpen+PriceScale*10);
if l > DayOpen-PriceScale*10 Then
Sell("s11",AtStop,DayOpen-PriceScale*10);
}
if NextBarOpen != c Then
{
Buy("bbb",AtStop,NextBarOpen+PriceScale*10);
Sell("sbb",AtStop,NextBarOpen-PriceScale*10);
}
Else
{
if h < DayOpen+PriceScale*10 Then
Buy("b111",AtStop,DayOpen+PriceScale*10);
if l > DayOpen-PriceScale*10 Then
Sell("s111",AtStop,DayOpen-PriceScale*10);
}
if NextBarOpen != c Then
{
Buy("bbbb",AtStop,NextBarOpen+PriceScale*10);
Sell("bbbs",AtStop,NextBarOpen-PriceScale*10);
}
Else
{
if h < DayOpen+PriceScale*10 Then
Buy("b1111",AtStop,DayOpen+PriceScale*10);
if l > DayOpen-PriceScale*10 Then
Sell("s1111",AtStop,DayOpen-PriceScale*10);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
----------------------
위 수식어에
60분선 위(바이 > 40틱 청산),아래(셀 > 40틱 청산)
60분선 골든 데드시 손절후 반대 포지션 진입
청산의 수식어로 변경을 부탁드립니다.
2022-10-19
1311
글번호 163094
답변완료
옵션 시뮬레이터
안녕하세요. 혹시 옵션 시뮬레이터에서 옵션 포지션 성과를 볼때 mdd 혹은 최대하락폭을 단번에 볼 수 있는 방법이 있을까요?
그리고 예스트레이더 성과표처럼 일별 손익, 주별, 월별 손익을 볼 수 있는지 궁금합니다. 예를들면 만기일 하루 후 풋옵션 등가격 매도 후 만기일날 손익을 보는데 딱 그 만기날만 손익을 볼 수 있던데, 일별 손익을 모두 보고 싶습니다.(옵션시뮬레이터 가동 안하고 한번에 성과표를 보고 싶습니다) 방법이 있을까요?
2022-10-19
1185
글번호 163093
답변완료
검색식 부탁합니다
당일 양봉이면서 거래량이 20일평균거래량의 250% 발생한 캔들의 검색식 부탁합니다
2022-10-18
1238
글번호 163090
답변완료
문의드립니다
특정일이후 n일의 데이타를 구하는 지표식에서
n일은 주식시장이 열리는 날만 카운트하는건가요? 토일, 공휴일은 제외한?
2022-10-18
1326
글번호 163089
답변완료
수식 부탁드립니다.
안녕하세요.
수식 하나 부탁 드리겠습니다.
1분봉에서
1.09시 10분 지수가 12:00분 지수보다 높으면은 12:01분에 매수후에 15:00분 청산
2.09시 10분 지수가 12:00분 지수보다 낮으면은 12:01분에 매도후에 15:00분에 청산
하는 식입니다.
감사합니다.
2022-10-18
1422
글번호 163088
답변완료
주석부탁드립니다
수고하십니다
아래수식을 자세하게 주석부탁드립니다 CS[7](0), ==5같다 ,==0같다 , +0.5을 왜 더하는지? cnt ,[cnt],(SymbolCode,1),StrToNum...등등
var : V1(0,Data1),V2(0,Data1),ATM(0,Data1);
var : cnt(0,Data1);
var : Ci(0,Data1),Pi(0,Data1),count(0,Data1);
Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0),CT[7](0),PT[7](0);
CC[2] = Data2(H);
CC[3] = Data4(H);
PP[2] = Data3(L);
PP[3] = Data8(L);
CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5));
var1 = 0;
Var2 = 0;
Var3 = 0;
For cnt = 2 to 6
{
if CS[cnt] == ATM Then
var1 = cnt;
if CS[cnt] == ATM+2.5 Then
Var2 = cnt;
if CS[cnt] == ATM-2.5 Then
Var3 = cnt;
if PS[cnt] == ATM Then
value1 = cnt;
if PS[cnt] == ATM+2.5 Then
Value2 = cnt;
if PS[cnt] == ATM-2.5 Then
2022-10-18
1743
글번호 163087
매치다는 님에 의해서 삭제되었습니다.
2022-10-18
3
글번호 163086
답변완료
파동의 저점과 고점 위치
안녕하십니까.
아래 프로그램으로 장중 파동의 고점과 저점의 봉의 데이터 값, 즉 첨부된 그름 파일에서 붉은 색 값인 경우 +1로 출력하고 푸른색의 값인 경우 -1로 리턴하는 함수를 작성하고자 합니다. 도움 좀 부탁드립니다.
사용 목적은 파동의 고점과 저점 봉의 데이터 출력하고자 합니다.
(죄송스럽게도 제가 로직 이해가 부족해서 인지 정확히 숫자 찍히는 고점과 저점 지점을 잡을 수가 없네요)
Input:P(0),length(10);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),
Text1(0),처리구분(""),T(0),TL3(0),TL4(0),TL5(0);
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L
Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL2 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL3 = TL_New(sDate[sBar],sTime[sBar],저점[1,1]+(고점[1,1]-저점[1,1])*0.382,sDate[eBar],sTime[eBar],저점[1,1]+(고점[1,1]-저점[1,1])*0.382);
TL4 = TL_New(sDate[sBar],sTime[sBar],저점[1,1]+(고점[1,1]-저점[1,1])*0.500,sDate[eBar],sTime[eBar],저점[1,1]+(고점[1,1]-저점[1,1])*0.500);
TL5 = TL_New(sDate[sBar],sTime[sBar],저점[1,1]+(고점[1,1]-저점[1,1])*0.618,sDate[eBar],sTime[eBar],저점[1,1]+(고점[1,1]-저점[1,1])*0.618);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],P));
Var1 = 고점[1,1];
Text_SetStyle(Text1, 2, 1);
Text_SetColor(Text1,Blue);
} # End of If 고점[1,2] < 저점[1,2] or 고점[1,1] < H
} # End of If 처리구분 == "고점처리"...
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
} # End of If TL_GetBeginDate(TL1) ==
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL2 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL3 = TL_New(sDate[sBar],sTime[sBar],고점[1,1]-(고점[1,1]-저점[1,1])*0.382,sDate[eBar],sTime[eBar],고점[1,1]-(고점[1,1]-저점[1,1])*0.382);
TL4 = TL_New(sDate[sBar],sTime[sBar],고점[1,1]-(고점[1,1]-저점[1,1])*0.500,sDate[eBar],sTime[eBar],고점[1,1]-(고점[1,1]-저점[1,1])*0.500);
TL5 = TL_New(sDate[sBar],sTime[sBar],고점[1,1]-(고점[1,1]-저점[1,1])*0.618,sDate[eBar],sTime[eBar],고점[1,1]-(고점[1,1]-저점[1,1])*0.618);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],P));
Var2 = 저점[1,1];
Text_SetStyle(Text1, 2, 8);
Text_SetColor(Text1,Red);
} # End of If 저점[1,2] < 고점[1,2] or 저점[1,1] > L
} # End of If 처리구분 == "저점처리"
TL_SetSize(TL1,0);
TL_SetColor(TL1,GRAY);
2022-10-18
1578
글번호 163085
답변완료
수식 문의 드립니다.
IF marketposition == 1 and OpenPositionProfit>loss*5 and data2(C)<entry2 Then
SetStopTrailing(loss,loss*5,PointStop);
SetStopLoss(loss,PointStop);
loss는 ATR(10)이고
data2는 코스피 5분봉이며
entry는 data2의 당일매도역치 설정 기준입니다.
의도는 수익이 loss*5 이상인 상황에서 loss 만큼 빠지면 이익청산한다 입니다.
이때 혹시 트레일링스탑 과최적화가 발생할 수 있습니까?
https://blog.naver.com/chartist/30035941729
이 글을 읽고 혹시나 싶어서 질문 드립니다.
항상 감사합니다.
2022-10-18
1583
글번호 163080