커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4443
글번호 230811
답변완료
수식 수정좀 부탁드립니다.
매번 빠른 답변 주셔서 감사드립니다.
아래 수식에 아래와 같은 조건의 청산식을 추가하고 싶습니다.
청산 조건
Stochastics 변수값을 period (22), period1(5), period2(5) 로 지정하고,
Stochastics 하단 기준선을 30, 상단 기준선을 70 으로 지정하여 아래 조건을 만족할 때 청산하고 싶습니다.
매도청산 : Stochastics 하단 기준선 30 아래에서 Stochastics K 선이 Stochastics D 선을 상향 돌파하고 2틱이 더 진행된 때
(StochasticsK 선과 StochasticsD 선이 모두 스톡 하단 기준선 30 아래에서 돌파한 경우입니다
가령StochasticsK 선은 30 아래까지 내려왔다가 30선 위에서 StochasticsD선을 돌파하였을 경우는 청산하면 안됩니다.)
매수청산 : Stochastics 상단 기준선 70 위에서 Stochastics K 선이 Stochastics D 선을 하향 이탈하고 2틱이 더 진행된 때
-------------------------
input : P(120);
var : T(0), moveLine(0), OrderValue(0);
moveLine = ma(C,P);
if (T <= 0 and (moveLine > moveLine[1])) Then
{
OrderValue = Close;
T = 1;
}
if (T >= 0 and (moveLine < moveLine[1])) Then
{
OrderValue = Close;
T = -1;
}
if T == 1 then
if (Close >= (OrderValue + (PriceScale * 1))) then
//buy("매수",AtStop,value1+PriceScale*1);
Buy("매수", OnClose);
if T == -1 then
//sell("매도",AtStop,value1-PriceScale*1);
if (Close <= (OrderValue - (PriceScale *1))) then
Sell("매도", OnClose);
if MarketPosition == 1 Then{
var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*3));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱");
}
if MarketPosition == -1 Then{
var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*3));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱");
}
2017-02-08
102
글번호 106606
khj012 님에 의해서 삭제되었습니다.
2017-02-08
17
글번호 106605
답변완료
수식 좀 부탁드립니다.
안녕하세요
완전 초보 입니다.
처음 수식을 작성해 볼려고 하는데 너무 막막하군요.
이런 수식을 작성하고 싶은데 도와 주세요.
-----
15분봉 2봉전 시가가 20선 밑에서 시작하고 볼린저 상단선 위에서 끝나는 봉이 나오면
지금 봉에서 매수.
단 1계약만 매수 하며, 그 매수된 계약이 청산되기 전까지는 다시 매수 금지.
매도는 산 가격에서 1%가 오르면 매도.
----
부탁 드립니다.
2017-02-07
115
글번호 106604
답변완료
문의드립니다
중간식 생략
if crossup(C,제4선) Then buy();
위식은 일봉에서 봉완성후 종가로 익일 매수신호가 발생시 전일날짜 일봉에 매수신호가
발생되어 할용할수가 없는데요
일봉에서 당일 봉완성전에 예비신호가 발생할때 실제매수신호가 발생되도록 가능한지
문의드립나다
또 한가지는 위식을 이분봉에서 적용하면 일봉에서 예비신호가 나올때 이분봉에서
실제매수신호가 동작하는것도 있고 안하는것도 있습니다
또한 일봉에서 예비매수신호가 없는데도 이분봉에서는 실제매수신호가 발생하는데
아마 일봉에서 예비매수신호가 발생하였다가 없어진것 같습니다
두번째 질문이 설명이 맞는지요 부탁합니다
2017-02-07
103
글번호 106602
답변완료
키움용 수식을 예스트레이더용으로 변환부탁드려요!
선으로 나타내는 수식
bull=O == L AND C > O;
valuewhen(1,bull,avg(c,5))
highest(if(c>o,eavg(c,10),0),20)
신호검색수식
매수
c>o and c>highest(c(1),10) and
avg(c,5)>avg(c,5,1)and c>avg(c,5)
매도
c<o and c<lowest(c(1),10) and
avg(c,5)<avg(c,5,1) and c<avg(c,5)
그림2 맨밑에 있는그림 수식
c-avg(c,100)
키움용 수식을 예스트레이더용으로 변환부탁드려요!
5분 챠트에 적용할 계획입니다
감사합니다!
2017-02-07
349
글번호 106601
답변완료
문의드립니다
안녕하세요
한가지만더 부탁드리겠습니다
아래수식에서 가격은 표시안되고 추세선막대기만 표시 되기를 원합니다
감사합니다
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
134
글번호 106600
답변완료
함수변환요청(키움)
안녕하세요?
아래는 키움에서 사용하였던
전략입니다.
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
160
글번호 106599
답변완료
종목검색식 부탁드립니다.
일봉상 종가가 엔벨로프(20,2) 하단선 이탈되는 종목검색식 부탁드립니다.
2017-02-07
135
글번호 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
137
글번호 106591