커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6398
글번호 230811
답변완료
수식문위드립니다,매번감사드립니다
1,노란색선 plot1 이 바꿜때 마다 시스템 매수 매도가 나오게할수 있으면 합니다
2,봉색갈도 노란색 선에 따라서 상승방향이면 빨강 하락이면 파랑으로 부탁드립니다
Input:Rsi변동폭(0.5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
Input : RSIP(14), Period(50),dv(2.1);
var : RSIV(0),Mid(0),BBup(0),BBdn(0),RSIBandB(0);
RSIV = RSI(RSIP);
Mid = ma(RSIV,Period);
BBup = Mid+STD(RSIV,Period)*dv;
BBdn = Mid-STD(RSIV,Period)*dv;
RSIBandB = (RSIv - BBdn)/(BBup - BBdn);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RSIBandB || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RSIBandB || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RSIBandB[1] &&
Rsi저[0][1] + Rsi변동폭 <= RSIBandB Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RSIBandB[1] &&
Rsi고[0][1] - Rsi변동폭 >= RSIBandB Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RSIBandB[1] &&
Rsi고[0][1] - Rsi변동폭 > RSIBandB Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RSIBandB[1] &&
Rsi저[0][1] + Rsi변동폭 < RSIBandB Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then {
Plot1(파동선); //적당껏 수평이동
# PlaySound("C:₩예스트레이더₩data₩Sound₩sound6.wav");
}
Else If LastBarOnChart == 1 Then {
plot1(Iff(방향 == 상승,고[0],저[0]));
#PlaySound("C:₩예스트레이더₩data₩Sound₩sound6.wav");
}
/*
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] && Rsi저[2] < Rsi저[1] Then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선,"상승다이버전스");
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] && Rsi고[2] > Rsi고[1] Then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선,"하락다이버전스");
}
*/
var1 = 고[1]-저[1];
plot21(고[1]+var1*1.000);
plot22(고[1]+var1*0.618);
plot23(고[1]+var1*0.236);
plot24(고[1]);
plot25(저[1]+var1*0.724);
plot26(저[1]+var1*0.618);
plot27(저[1]+var1*0.500);
plot28(저[1]+var1*0.382);
plot29(저[1]+var1*0.236);
plot30(저[1]);
plot31(저[1]-var1*0.236);
plot32(저[1]-var1*0.618);
plot33(저[1]-var1*1.000);
2016-08-30
160
글번호 101450
답변완료
시스템식 부탁드립니다
매수조건:
5일선 10일선에 위면 매수(2계약 진입)
매수청산:
20틱청산
5일선이 20일선과 같으면 청산
청산후 지연시간600초후 재진입
하루 20틱 수익이면 매매중단
매도조건은 반대입니다.
부탁드려요~~
2016-08-29
108
글번호 101449
ivory 님에 의해서 삭제되었습니다.
2016-08-30
19
글번호 101448
생생파생 님에 의해서 삭제되었습니다.
2016-08-29
6
글번호 101447
답변완료
문의 있습니다.
시스템 문의 입니다.
위 그림은 금일 보성파워텍 3분봉 입니다.
1. 지표식 중에서 위와 같이 빨간색(전일 고점) 핑크색(금일 시가)를 선으로 표시해 주는
수식 좀 부탁 드리겠습니다.
2. 봉 밑에 있는 화살표는 전일대비 거래량를 표시한 것인데, 금일 거래량이 전일 거래량 대비 70% 일 경우는 연두색 칼라, 100% 일 경우는 푸른색 칼라 120% 일경우는 핑크색 칼라로 표시 할 수 있는 지표식 부탁 드립니다.
3. 시스템 매매식인데 돌파매매입니다.
3-1. 3분봉 상에서 전일 고가를 돌파할 때 매수
3-2. 그림 2와 같이 3분봉 상에서 전일 고가를 돌파하고 올라가다가 다시 주가가 내려와 전일 고가에서 지지할때 추가 매수
3-3. 만약 그림 2와 같은 상황에서 전일 고가 밑으로 떨어지면 손절
위와 같은 시스템 식좀 부탁 드리겠습니다.
2016-08-29
123
글번호 101446
고박사122 님에 의해서 삭제되었습니다.
2016-08-30
30
글번호 101445
답변완료
보조지표 수정좀 부탁드림니다.
Input : Period(5);
var : A(0),B(0);
A = ma(a,Period);
B = ma(b,Period);
Plot1(A, "a이평");
Plot2(B, "b이평");
이런 수식을 보조지표로 쓴다고 가정할때,
보조지표의 당일의
A의 시가가 100 이고
B의 시가가 200 이면,
B의 시가를 100으로 되게해서(즉,A의 시가와 똑같이) 시작하도록
하는 수식좀 부탁드림니다.
어떤식으로 계산하던지 A와 B를 같은 가격으로 시가를 출발하도록
하시면 됨니다.
2016-08-29
112
글번호 101442
답변완료
교재문의
예스랭귀지를 이용한 트레이딩시스템 구축 기초예제는 찾을 수 있는데 실제 시스템 구축사례 프로그램등을 볼 수 잇는 교제는 없는지요 ?
교육 박기는 일정상 쉽지 않는 경우 교재가 있으면 좋겠습니다.
2016-08-29
148
글번호 101436
답변완료
부탁드립니다.
다섯 개의 지표파일을(#1 #2, #3, #4, #5)를
하나의 지표파일로 만들고 싶습니다..
다섯 개라서 뭐가 뭔지 헤롱헤롱하네요 ㅠㅠ
합본 좀 부탁드릴꼐요! 감사합니다!
#1
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : value(0) , macdosc(0) ;
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
Plot1(value, "MACD");
Plot2(ema(value,Period), "MACDSignal");
PlotBaseLine1(0, "기준선1");
#2
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : macdVal(0), macdSig(0), macdOsc(0);
macdVal = MACD(shortPeriod, longPeriod);
macdSig = ema(macdVal,Period);
macdOsc = macdVal - macdSig;
Plot1(macdVal, "MACD");
Plot2(macdSig, "MACDSignal");
if macdOsc > macdOsc[1] then
Plot3(macdOsc*2, "MACDOscillator상승");
else
plot4(macdOsc*2, "MACDOscillator하락");
PlotBaseLine1(0, "기준선1");
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : value(0) , macdosc(0) ;
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
Plot1(value, "MACD");
Plot2(ema(value,Period), "MACDSignal");
PlotBaseLine1(0, "기준선1");
#3
input : j1(5), j2(10), j3(20), j4(60);
var : jw1(0), jw2(0), jw3(0), jw4(0) ;
var1 = ma(C,j1);
Var2 = ma(C,j2);
Var3 = ma(C,j3);
Var4 = ma(C,j4);
if var1 > var1[1] Then
jw1 = 1;
if var1 < var1[1] Then
jw1 = -1;
if jw1 == 1 Then
plot1(var1,"이평1",RGB(255,218,185));
Else
plot1(var1,"이평1",RGB(0,255,255));
if var2> Var2[1] Then
jw2 = 1;
if var2 < var2[1] Then
jw2 = -1;
if jw2 == 1 Then
plot2(var2,"이평2",RGB(255,218,185));
Else
plot2(var2,"이평2",RGB(0,255,255));
if var3 > var3[1] Then
jw3 = 1;
if var3 < var3[1] Then
jw3 = -1;
if jw3 == 1 Then
plot3(Var3,"이평3",RGB(255,218,185));
Else
plot3(var3,"이평3",RGB(0,255,255));
if var4 > var4[1] Then
jw4 = 1;
if var4 < var4[1] Then
jw4 = -1;
if jw4 == 1 Then
plot4(var4,"이평4",RGB(255,218,185));
Else
plot4(var4,"이평4",RGB(0,255,255));
#4
var1 = dayhigh()-(((dayhigh()-daylow())/100)*(-23.6));
Var2 = dayhigh()-((dayhigh()-daylow())/100);
Var3 = dayhigh()-(((dayhigh()-daylow())/100)*23.6);
Var4 = dayhigh()-(((dayhigh()-daylow())/100)*38);
Var5 = dayhigh()-(((dayhigh()-daylow())/100)*50);
Var6 = dayhigh()-(((dayhigh()-daylow())/100)*62);
Var7 = dayhigh()-(((dayhigh()-daylow())/100)*76);
Var8 = dayhigh()-(((dayhigh()-daylow())/100)*100);
Var9 = dayhigh()-(((dayhigh()-daylow())/100)*130);
Plot1(var1, "1", BLACK);
Plot2(var2, "2", BLACK);
Plot3(var3, "3", BLACK);
Plot4(var4, "4", BLACK);
Plot5(var5, "5", BLACK);
Plot6(var6, "6", BLACK);
Plot7(var7, "7", BLACK);
Plot8(var8, "8", BLACK);
Plot9(var9, "9", BLACK);
#5
input : N(0);
var : Tx1(0), Tx2(0), Tx3(0), Tx4(0), Tx5(0), Tx6(0), Tx7(0);
Plot1(dayOpen(N), "시가");
Plot2(dayHigh(N), "고가");
Plot3(dayLow(N), "저가");
plot4(DayClose(1),"전일종가");
Text_Delete(Tx2);
Text_Delete(Tx3);
tx2 = Text_New(sdate,stime,DayHigh,"고가");
tx3 = Text_New(sdate,stime,DayLow,"저가");
Text_SetStyle(tx1,0,1);
Text_SetStyle(tx2,0,1);
Text_SetStyle(tx3,0,1);
Text_SetStyle(tx4,0,1);
If DayClose(1) > DayOpen(1) Then
{
value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayLow(1);
value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayHigh(1);
}
Else If DayClose(1) < DayOpen(1) Then
{
value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayLow(1);
value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayHigh(1);
}
Else
{
value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayLow(1);
value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayHigh(1);
}
Plot5(value1, "디마크 상");
Plot6(value2, "디마크 하");
plot7((Value1+Value2)/2, "디마크 중");
Text_Delete(Tx5);
Text_Delete(Tx6);
Text_Delete(Tx7);
tx5 = Text_New(sdate,stime,value1, "디마크 상");
tx6 = Text_New(sdate,stime,value2, "디마크 하");
tx7 = Text_New(sdate,stime,(Value1+Value2)/2, "디마크 중");
Text_SetStyle(tx5,0,1);
Text_SetStyle(tx6,0,1);
Text_SetStyle(tx7,0,1);
2016-08-29
128
글번호 101432