커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6346
글번호 230811
답변완료
함수변환요청(키움)
안녕하세요?
아래는 키움에서 사용하였던
전략입니다.
YT언어로 변환 요청드립니다.
감사합니다.
Vars :
TickValue( 0 ),
RSI_value( 0 ),
RSI_period( 14 ),
MACD_OSC_value( 0 ),
MACD_period1( 12 ),
MACD_period2( 26 ),
MACD_signal_period( 9 ),
H_value1( 0 ),
H_bar1( 0 ),
L_value1( 0 ),
L_bar1( 0 ),
H_value2( 0 ),
H_bar2( 0 ),
L_value2( 0 ),
L_bar2( 0 ),
ShortPeriod( 9 ),
LongPeriod( 26 );
TickValue = OneTick * PriceScale;
RSI_value = RSI(C, RSI_period);
v0 = MACD(C, MACD_period1, MACD_period2);
v1 = Ema(v0, MACD_signal_period);
MACD_Osc_value = v0 - v1;
highestlowest(H, L, ShortPeriod, H_value1, H_bar1, L_value1, L_bar1);
highestlowest(H, L, LongPeriod, H_value2, H_bar2, L_value2, L_bar2);
Value1 = (H_value1 + L_value1)/2;
Value2 = (H_value2 + L_value2)/2;
If Value1 > Value2
And MACD_Osc_value > 0
And CrossUp(RSI_value, 70)
Then Buy("매수");
If Value1 < Value2
And MACD_Osc_value < 0
And CrossDown(RSI_value, 30)
Then Sell("매도");
If ContractProfit > TickValue * 10 Then
Begin
If CrossDown(RSI_value, 70) then ExitLong("매수청산");
If CrossUp(RSI_value, 30) Then ExitShort("매도청산");
End;
SetStopLoss(TickValue * 10);
2017-02-07
178
글번호 106599
답변완료
종목검색식 부탁드립니다.
일봉상 종가가 엔벨로프(20,2) 하단선 이탈되는 종목검색식 부탁드립니다.
2017-02-07
151
글번호 106592
답변완료
시스템식 문의드립니다
기본 지표를 바탕으로 시스템식 문의드립니다.
----------------------------------------------------------------
input : Period(20);
var : gb(0),V1(0),V2(0),V3(0),V4(0),V5(0);
var1 = highest(h,period);
var2 = lowest(L,Period);
if var1[1] < var1 Then
gb = (var1+var2)/2;
V1 = var1-((var1-gb)/8)*6;
V2 = var1-((var1-gb)/8)*7;
V3 = var1-((var1-gb)/8)*8;
V4 = var1-((var1-gb)/8)*9;
V5 = var1-((var1-gb)/8)*10;
plot1(var1,"최고점");
plot2(v1,"1타점");
plot3(v2,"2타점");
plot4(v3,"3타점");
plot5(v4,"4타점");
plot6(v5,"5타점");
---------------------------------------------------------------------------
변수선언
kh = 20일 신고가 & 20일 신고거래량
k1 = 20일 신고가 (20일 신고거래량은 총족 못함)
lowk = kh+1봉에서부터 다음 kh봉 발생 이전까지의 최저가
kk = v1-v2
buylow = 매수이후 최저가
매수조건
kh발생이후 kh발생이면
조건은 처음으로 돌아갑니다.
kh발생이후 kh나 k1 미발생이면
v1에 1차매수
kk만큼 반등없이 추가하락하면 v1 - kk 에 2차매수
kk만큼 반등없이 추가하락하면 v1 - kk*2 에 3차매수
kk만큼 반등없이 추가하락하면 v1 - kk*3 에 4차매수
kh발생이후 k1발생이면
buylow < v1 이면 buylow에 1차매수
kk만큼 반등없이 추가하락하면 buylow - kk 에 2차매수
kk만큼 반등없이 추가하락하면 buylow - kk*2 에 3차매수
kk만큼 반등없이 추가하락하면 buylow - kk*3 에 4차매수
매도조건
1,2차 매수했으면 buylow + kk에 매도.
3차이상 매수면 본절에 매도
한번 매수 매도 이후
kh가 발생하지 않고,
buylow 가
v1보다 작고 v2보다 크면 v2에 1차 매수
v2보다 작고 v3보다 크면 v3에 1차 매수
v3보다 작고 v4보다 크면 v4에 1차 매수
v4보다 작고 v5보다 크면 v5에 1차 매수
추매와 청산 조건은 kk만큼의 반등이 없으면 위의 상황과 동일 합니다.
kh가 발생하면 매수조건 처음으로 돌아갑니다.
모자라는 부분 말씀주시면 보충하겠습니다
2017-02-07
158
글번호 106591
답변완료
수식문의
2017-02-07
135
글번호 106590
답변완료
지표문의드립니다
안영하세요?
아래첨부된지표는 추세선관련지표인데요
추세선이 그려지고 가격이추세선근처에적히는 수식입니다
그런데 가격이없이 단지 추세선만그려지는것을원합니다
감사합니다
Input:length(5);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),
TL_Val1(0),TL_Val2(0);
Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0);
Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(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;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then
TL_Delete(TL2);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
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;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then
TL_Delete(TL3);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
mav = ma(C,20);
2017-02-07
137
글번호 106589
softtoug 님에 의해서 삭제되었습니다.
2017-02-07
0
글번호 106583
답변완료
수식부탁드립니다.
매수
- 시가에 매수
매수 주문수량이 == 1 이면
익절 PriceScale*10
매도
- 시가에 매도
매도 주문수량이 == 1 이면
익절 PriceScale*10
2017-02-07
114
글번호 106582
답변완료
수식 문의 드립니다.
아침저녁으로 쌀쌀합니다. 감기조심하시구요^^ 수식좀 부탁드립니다.
input : P1(1),P2(2),P3(3);
input : Period11(1),Period12(2),Period13(3);
input : Period21(4),Period22(5),Period23(2);
input : Period31(6),Period32(7),Period33(2);
input : Period41(8),Period42(9),Period43(2);
var : wma1(0),wma2(0),wma3(0);
var : SMI1(0),SMI2(0),SMI3(0),SMI4(0);
wma1 = wma(c,P1);
wma2 = wma(c,P2);
wma3 = wma(C,P3);
SMI1 = SMI(Period11,Period12,Period13);
SMI2 = SMI(Period21,Period22,Period23);
SMI3 = SMI(Period31,Period32,Period33);
SMI4 = SMI(Period41,Period42,Period43);
if
SMI3 > 0 and SMI4 > 0 and SMI3 > SMI4 and
((SMI2 > 0 and crossup(SMI1,0)) or (SMI1 > 0 and crossup(SMI2,0))) Then
buy();
if
SMI3 < 0 and SMI4 < 0 and SMI3 < SMI4 and
((SMI2 < 0 and CrossDown(SMI1,0)) or (SMI1 < 0 and CrossDown(SMI2,0))) Then
sell();
if MarketPosition == 1 and wma1 < wma2 Then
exitlong();
if MarketPosition == -1 and wma1 > wma2 Then
ExitShort();
위 조건식에서요 RSI조건을 추가 하고 싶습니다.
매수조건 :위 조건식을 만족하면서(동시에) RSI 기준선 70이상일때
매도조건 :위 조건식을 만족하면서(동시에) RSI 기준선 30이하일때
부탁드립니다.~~~~~
2017-02-07
130
글번호 106580
답변완료
지표와 속도
안녕하세요?
장 초반이나 시세가 급변할때 무거운 지표를 사용할 경우 속도가 느려지는데
가급적 지표를 단순화 하고자 합니다.
다음 몇가지 중 속도개선에 더 도움이 되는 것이 어떤 것인지 알고 싶습니다.
(지표 한개일때는 속도 차이가 별로 없지만 여러차트에 여러지표를 적용할 때에는
차이가 커지므로 가급적 줄이고 싶습니다)
1. 이동평균 식에서 ma(c,20); 과 accumn(c,20)/20; 중 어떠것이 조금이나마 더 빠른지
2. if c>ma(c,20) then sig=1; else sig=0; 와 signal=iff(c>ma(c,20),1,0); (sig는 변수)
3. 여러 변수를 var 와 array 중 어느 것을 통해 선언하는 것이 더 빠른지
4. 사용자 함수를 만드는 것이 더 빠른지
5. for문(엄청나게 속도를 저해하네요) 등 속도를 저하시키는 함수에는 어떤 것들이 있는지
6. 한 봉이 만들어질 때 마지막 한 번만 연산하게 하는 방법
7. 기타 속도를 향상시킬 수 있는 팁
질문이 너무 많아서 죄송합니다.
장초반이나 시세 급변시 차트가 현재가창의 시세보다 한참 뒤에서 뒤따라가며
그려지는걸 볼 수 있는데요 조금이라도 더 속도를 개선시키는 방법을 알고 싶습니다.
새해 복 많이 받으시고요. 행복한 하루 되세요!
2017-02-07
157
글번호 106579