커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1552
글번호 230811
답변완료
안녕하세요 수식 부탁 좀 드리겠습니다 ㅠ
초보라... 부디 부탁 좀 드리겠습니다 ㅠ
​
진입1 : 60일 신고가에 진입 (진입수량 100주로 기본 설정)
진입2 : 진입1을 한 상태에서, 이전 진입가격*1.1 (10% 상승) 할때마다 계속 진입 (이전 진입 물량 * 0.9)
진입3 : 진입2을 한 상태에서, 이전 진입가격*1.1 (10% 상승) 할때마다 계속 진입 (이전 진입 물량 * 0.9)​
진입4 : 진입3를 한 상태에서, 이전 진입가격*1.1 (10% 상승) 할때마다 계속 진입 (이전 진입 물량 * 0.9)​
​
​
청산1 : 개별 진입 별로 청산선이 개별로, 진입가 - n*atr(20)보다 하락하면 손절하도록.
예시) 청산1 : 종가가 진입1의 진입 가격 - n*atr(20) 보다 하락하면 손절 (진입1때 진입한 물량 손절)
청산2 : 종가가 진입2의 진입 가격 - n*atr(20) 보다 하락하면 손절(진입2때 진입한 물량 손절)
청산3 : 종가가 진입3의 진입 가격 - n*atr(20) 보다 하락하면 손절(진입3때 진입한 물량 손절)​
청산4 : 종가가 진입4의 진입 가격 - n*atr(20) 보다 하락하면 손절(진입4때 진입한 물량 손절)​
​
2023-03-07
1038
글번호 166965
답변완료
문의
A=RSI(9)-50;
B=CMO(12)*0.5;
C=A+B;
여기에서 CMO(12)*0.5의 의미를 해석해 주셔요..
2023-03-06
1633
글번호 166964
답변완료
부탁드립니다 120일 이평을 추가하여부탁드립니다
input : n(60),factor(1),비율(1);
var : th(0),tl(0),tr(0),ka(0),keltner(0);
th = iff(c[1] > h,c[1],h);
tl = iff(c[1] < l,c[1],h);
tr = th - tl;
ka = ma(tr,n);
keltner = ma(c,n) + atr(n)*factor;
var1 = keltner + ka*비율;
Plot1(var1);
@@@@@
120일이평을 추가 부탁드립니다
2023-03-06
1304
글번호 166963
답변완료
함수요청
안녕하세요?
아래의 전략에 대해 스크립트 작성 요청드립니다.
볼린저밴드 상단이 5회 상승하고 볼린저밴드 하단이 5회 연속 하락할 때 현주가가 20ma 상단에 위치하면 익봉시가 매수 진입
볼린저밴드 상단이 5회 상승하고 볼린저밴드 하단이 5회 연속 하락할 때 현주가가 20ma 하단에 위치하면 익봉시가 매도 진입
매수 진입 이후 볼린저밴드 상단이 하락한 적이 없고 볼린적 밴드 하단이 상승하면 익봉 시가에 매수 청산
매도 진입 이후 볼린저밴드 하단이 상승한 적이 없고 볼린적 밴드 상단이 하락하면 익봉 시가에 매도 청산
2023-03-06
1006
글번호 166962
답변완료
함수요청
안녕하세요?
아래의 전략에 대해 스크립트 작성 요청드립니다.
최근 5개봉의 종가가 밴드 하단 아래로 간적이 2회 이상이고 RSI가 30을 상향돌파하거나 스토캐스틱 80이상에서 교차되면 익봉 시가 매수진입
최근 5개봉의 종가가 밴드 상단 위로 간적이 2회 이상이고 RSI가 80을 하향돌파하거나 스토캐스틱 30이하에서 교차되면 익봉 시가 매도진입
2023-03-06
978
글번호 166961
답변완료
종목 검색식 부탁 드립니다.
안녕하십니까
종목 검색식 부탁드립니다.
s=sum(1);
m=ma(c,기간);
mh=valuewhen(1,m>m(1),m);
hh=highestsince(1,crossup(s,전체봉수-표시봉수),mh);
crossup(c,hh) &&
hh=hh(1) && hh(1)==hh(2)
전체봉수 600
기간 25
표시봉수 120
최대한 비슷하세라도 부탁 드립니다.
항상 감사합니다.
2023-03-06
858
글번호 166957
답변완료
손절 라인 표시 문의
안녕하세요.
아래를 수식으로 문의 드립니다.
input : n틱
1-1. 매수 진입 후, n틱 구간에서 최저점을 손절 라인으로 표시
1-2. 매도 손절 이후 진입가를 돌파하여 종가 마감시 매수 재진입
2-1. 매도 진입 후, n틱 구간에서 최저점을 손절 라인으로 표시
2-2. 매도 손절 이후 진입가를 돌파하여 종가 마감시 매도 재진입
3. 손절 라인 표시를 캔들과 겹치지 않게 표시 가능한가요?
2023-03-06
1148
글번호 166955
답변완료
수정 부탁드려요.
81086 수정부탁드립니다.
해선 당일시가 에서 n봉후 박스생성.
n봉후 박스생성한 종가에서 출발 또 n 봉후 2번째 박스 생성...
이렇게 독립된 박스 생성해 주세요. 2,3...박스가 당일 시가출발이 아니라 이전박스 종가 출발.
감사합니다.
2023-03-06
1251
글번호 166949
답변완료
수식보완부탁드립니다
수고하십니다.
아래 수식(그림)에서 파동의 꼭지점에 HH, HL, LL, LH 문자를 표시하는 식을 첨가부탁드립니다.
HH, HL 은 빨강색문자
LL, LH 는 라임색문자
============
//수식
Input:length(20),굵기(1),중간선굵기(2);
input : Per1(0),Per2(23.6),Per3(38.2),Per4(50.0),Per5(61.8),Per6(76.4),Per7(100),Per8(123.6),Per9(161.8);
Var : j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
var : HV(0),LV(0);
var : TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0);
var : Tx11(0),Tx12(0),Tx13(0),Tx14(0),Tx15(0),Tx16(0),Tx17(0),Tx18(0),Tx19(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
HV = highest(h,length);
LV = lowest(l,length);
Condition1 = HV > HV[1] ;
Condition2 = LV < LV[1] ;
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
{
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
value1 = valArr[2]-valArr[3];
TL_Delete(TL11);
TL_Delete(TL12);
TL_Delete(TL13);
TL_Delete(TL14);
TL_Delete(TL15);
TL_Delete(TL16);
TL_Delete(TL17);
TL_Delete(TL18);
TL_Delete(TL19);
TL_SetExtRight(TL11,False);
TL_SetExtRight(TL12,False);
TL_SetExtRight(TL13,False);
TL_SetExtRight(TL14,False);
TL_SetExtRight(TL15,False);
TL_SetExtRight(TL16,False);
TL_SetExtRight(TL17,False);
TL_SetExtRight(TL18,False);
TL_SetExtRight(TL19,False);
TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per1/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per1/100));
TL12 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per2/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per2/100));
TL13 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per3/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per3/100));
TL14 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per4/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per4/100));
TL15 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per5/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per5/100));
TL16 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per6/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per6/100));
TL17 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per7/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per7/100));
TL18 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per8/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per8/100));
TL19 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[2]-value1*(per9/100),sDate[barArr[2]],sTime[barArr[2]],valArr[2]-value1*(per9/100));
TL_SetExtRight(TL11,true);
TL_SetExtRight(TL12,true);
TL_SetExtRight(TL13,true);
TL_SetExtRight(TL14,true);
TL_SetExtRight(TL15,true);
TL_SetExtRight(TL16,true);
TL_SetExtRight(TL17,true);
TL_SetExtRight(TL18,true);
TL_SetExtRight(TL19,true);
TL_SetColor(TL11,RED);
TL_SetColor(TL12,GRAY);
TL_SetColor(TL13,GRAY);
TL_SetColor(TL14,GRAY);
TL_SetColor(TL15,YELLOW);
TL_SetColor(TL16,GRAY);
TL_SetColor(TL17,BLUE);
TL_SetColor(TL18,GRAY);
TL_SetColor(TL19,YELLOW);
TL_SetSize(TL11,굵기);
TL_SetSize(TL12,굵기);
TL_SetSize(TL13,굵기);
TL_SetSize(TL14,굵기);
TL_SetSize(TL15,중간선굵기);
TL_SetSize(TL16,굵기);
TL_SetSize(TL17,굵기);
TL_SetSize(TL18,굵기);
TL_SetSize(TL19,굵기);
Text_Delete(Tx11);
Text_Delete(Tx12);
Text_Delete(Tx13);
Text_Delete(Tx14);
Text_Delete(Tx15);
Text_Delete(Tx16);
Text_Delete(Tx17);
Text_Delete(Tx18);
Text_Delete(Tx19);
tx11 = Text_New(sdate,stime,TL_GetValue(TL11,sdate,stime),NumToStr(Per1,2)+"%("+NumToStr(TL_GetValue(TL11,sdate,stime),2)+")");
tx12 = Text_New(sdate,stime,TL_GetValue(TL12,sdate,stime),NumToStr(Per2,2)+"%("+NumToStr(TL_GetValue(TL12,sdate,stime),2)+")");
tx13 = Text_New(sdate,stime,TL_GetValue(TL13,sdate,stime),NumToStr(Per3,2)+"%("+NumToStr(TL_GetValue(TL13,sdate,stime),2)+")");
tx14 = Text_New(sdate,stime,TL_GetValue(TL14,sdate,stime),NumToStr(Per4,2)+"%("+NumToStr(TL_GetValue(TL14,sdate,stime),2)+")");
tx15 = Text_New(sdate,stime,TL_GetValue(TL15,sdate,stime),NumToStr(Per5,2)+"%("+NumToStr(TL_GetValue(TL15,sdate,stime),2)+")");
tx16 = Text_New(sdate,stime,TL_GetValue(TL16,sdate,stime),NumToStr(Per6,2)+"%("+NumToStr(TL_GetValue(TL16,sdate,stime),2)+")");
tx17 = Text_New(sdate,stime,TL_GetValue(TL17,sdate,stime),NumToStr(Per7,2)+"%("+NumToStr(TL_GetValue(TL17,sdate,stime),2)+")");
tx18 = Text_New(sdate,stime,TL_GetValue(TL18,sdate,stime),NumToStr(Per8,2)+"%("+NumToStr(TL_GetValue(TL18,sdate,stime),2)+")");
tx19 = Text_New(sdate,stime,TL_GetValue(TL19,sdate,stime),NumToStr(Per9,2)+"%("+NumToStr(TL_GetValue(TL19,sdate,stime),2)+")");
Text_SetStyle(tx11,2,1);
Text_SetStyle(tx12,2,1);
Text_SetStyle(tx13,2,1);
Text_SetStyle(tx14,2,1);
Text_SetStyle(tx15,2,1);
Text_SetStyle(tx16,2,1);
Text_SetStyle(tx17,2,1);
Text_SetStyle(tx18,2,1);
Text_SetStyle(tx19,2,1);
}
}
value1 = valArr[2]-valArr[3];
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
//TL_SetBegin(TL11,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per1/100));
TL_SetEnd(TL11,sDate,sTime,valArr[2]-value1*(per1/100));
//TL_SetBegin(TL12,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per2/100));
TL_SetEnd(TL12,sDate,sTime,valArr[2]-value1*(per2/100));
//TL_SetBegin(TL13,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per3/100));
TL_SetEnd(TL13,sDate,sTime,valArr[2]-value1*(per3/100));
//TL_SetBegin(TL14,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per4/100));
TL_SetEnd(TL14,sDate,sTime,valArr[2]-value1*(per4/100));
//TL_SetBegin(TL15,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per5/100));
TL_SetEnd(TL15,sDate,sTime,valArr[2]-value1*(per5/100));
//TL_SetBegin(TL16,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per6/100));
TL_SetEnd(TL16,sDate,sTime,valArr[2]-value1*(per6/100));
//TL_SetBegin(TL17,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per7/100));
TL_SetEnd(TL17,sDate,sTime,valArr[2]-value1*(per7/100));
//TL_SetBegin(TL18,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per8/100));
TL_SetEnd(TL18,sDate,sTime,valArr[2]-value1*(per8/100));
//TL_SetBegin(TL19,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per9/100));
TL_SetEnd(TL19,sDate,sTime,valArr[2]-value1*(per9/100));
Text_SetLocation(Tx11,sdate,stime,TL_GetValue(TL11,sdate,stime));
Text_SetLocation(Tx12,sdate,stime,TL_GetValue(TL12,sdate,stime));
Text_SetLocation(Tx13,sdate,stime,TL_GetValue(TL13,sdate,stime));
Text_SetLocation(Tx14,sdate,stime,TL_GetValue(TL14,sdate,stime));
Text_SetLocation(Tx15,sdate,stime,TL_GetValue(TL15,sdate,stime));
Text_SetLocation(Tx16,sdate,stime,TL_GetValue(TL16,sdate,stime));
Text_SetLocation(Tx17,sdate,stime,TL_GetValue(TL17,sdate,stime));
Text_SetLocation(Tx18,sdate,stime,TL_GetValue(TL18,sdate,stime));
Text_SetLocation(Tx19,sdate,stime,TL_GetValue(TL19,sdate,stime));
Text_SetString(Tx11,NumToStr(Per1,2)+"%("+NumToStr(TL_GetValue(TL11,sdate,stime),2)+")");
Text_SetString(Tx12,NumToStr(Per2,2)+"%("+NumToStr(TL_GetValue(TL12,sdate,stime),2)+")");
Text_SetString(Tx13,NumToStr(Per3,2)+"%("+NumToStr(TL_GetValue(TL13,sdate,stime),2)+")");
Text_SetString(Tx14,NumToStr(Per4,2)+"%("+NumToStr(TL_GetValue(TL14,sdate,stime),2)+")");
Text_SetString(Tx15,NumToStr(Per5,2)+"%("+NumToStr(TL_GetValue(TL15,sdate,stime),2)+")");
Text_SetString(Tx16,NumToStr(Per6,2)+"%("+NumToStr(TL_GetValue(TL16,sdate,stime),2)+")");
Text_SetString(Tx17,NumToStr(Per7,2)+"%("+NumToStr(TL_GetValue(TL17,sdate,stime),2)+")");
Text_SetString(Tx18,NumToStr(Per8,2)+"%("+NumToStr(TL_GetValue(TL18,sdate,stime),2)+")");
Text_SetString(Tx19,NumToStr(Per9,2)+"%("+NumToStr(TL_GetValue(TL19,sdate,stime),2)+")");
}
TL_SetSize(TL1,굵기);
TL_SetColor(TL1,black);
2023-03-06
1896
글번호 166945