커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7504
글번호 230811
답변완료
지수볼린저밴드 수식 문의 드립니다.
수고하십니다.
일반볼린저밴드를 지수볼린저밴드로 변경하려고 16164에 있는 수식을 붙여 넣었는데 선언되지 않은 std-e나 price등이 있다며 수식에 에러가 자꾸 뜹니다.
아래는 제가 붙여넣은 수식인데 뭐가 잘못된건지 봐 주십시요
Input : Period(20), D(2);
var : Base(0), BollUp(0), BollDn(0);
Base = ema(C, period);
BollUP = ema(C, Period) + (D * std_e(C, Period));
BollDn = ema(C, Period) - (D * std_e(C, Period));
plot1(Base);
plot2(BollUp);
plot3(BollDn);
[사용자함수식 : std_e]
Input : Price(NumericSeries), Length(NumericSimple);
Var : SumSqrt(0), Avg(0), Counter(0);
If Length != 0 Then Begin
Avg = eMa(Price, Length);
SumSqrt = 0;
For Counter = 0 To Length - 1 Begin
SumSqrt = SumSqrt + (Price[Counter] - Avg) * (Price[Counter] - Avg);
End;
Std_e = SquareRoot(SumSqrt / Length);
End
Else
Std_e = 0;
2014-06-16
218
글번호 75879
답변완료
부탁드립니다..
안녕하세요..
2개의 지표에 의한 시스템식 부탁드립니다..
1. 지수이동평균에 의한 envelope 시스템식
- 매수 : 20일 지수이동평균에 의한 5% 지지선 도달시
- 매도 : 20일 지수이동평균에 의한 5% 저항선 도달시
2. BinaryWave Seven 시스템식
그럼..수고하세요..
2014-06-16
183
글번호 75861
답변완료
문의드립니다.!!!
수고하십니다.!
6101 전략실행차트에서 300틱차트 지수이동평균을 사용하고 있습니다.
지수이평 60선과 현재봉의 종가가 선물 '1point 이상' 이격이 생길때를 검색하고 싶습니다.
수식을 어떻게 작성해야 하는지요?
부탁드립니다.
감사합니다.!
2014-06-16
145
글번호 75860
답변완료
알람설정 부탁드립니다
감사합니다
주문이 없을때도 청산알람소리가 계속 나옵니다
1, 아래 시스템 청산 수식에서 반대주문이 있을때만 청산알람소리가 나게 부탁드립니다
주문 알람소리도 매수 = v1 > 0
매도 = v1 < 0 때만 나타나게 부탁드립니다
2, 야간장에서 야간장 시작첫번째봉부터 호가잔량 누적식 부탁드립니다
Input : Period(20);
var1 = ((Bids)-(Bids[1]) - (Asks)-(Asks[1]));
if date != date[1] Then
var2 = 0;
if dayindex >= 0 and dayindex <= Period Then
var2 = var2 + var1 ;
if dayindex >= Period Then
var2 = accumN(var1 ,Period);
시스템파일 첨부했습니다
좋은하루 되세요~
Input : vol(1000);
Input : vol2(3000);
var : V1(0), V2(0), V3(0), V4(0), V5(0), V6(0), V7(0), V8(0), V9(0), V10(0);
V1 = Upvol - DownVol;
V2 = V1 + V1[2];
V3 = V1 + V1[2] + V1[2] + V1[3];
V4 = V1 + V1[2] + V1[2] + V1[3] + V1[4];
V5 = V1 + V1[2] + V1[2] + V1[3] + V1[4] + V1[5];
V6 = V1 + V1[2] + V1[2] + V1[3] + V1[4] + V1[5] + V1[6];
V7 = V1 + V1[2] + V1[2] + V1[3] + V1[4] + V1[5] + V1[6] + V1[7];
V8 = V1 + V1[2] + V1[2] + V1[3] + V1[4] + V1[5] + V1[6] + V1[7] + V1[8];
V9 = V1 + V1[2] + V1[2] + V1[3] + V1[4] + V1[5] + V1[6] + V1[7] + V1[8] + V1[9];
V10 = V1 + V1[2] + V1[2] + V1[3] + V1[4] + V1[5] + V1[6] + V1[7] + V1[8] + V1[9] + V1[10];
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//value1-----------------------------------------------------------------------------------------------------------
if V1 >= vol
Or V2 >= vol
Or V3 >= vol
Or V4 >= vol
Or V5 >= vol
Or V6 >= vol
Or V7 >= vol
Or V8 >= vol
Or V9 >= vol
Or V10 >= vol
Then{
value1 = 1;
}
//파동선1-----------------------------------------------------------------------------------------------------------
if V1 <= -vol
Or V2 <= -vol
Or V3 <= -vol
Or V4 <= -vol
Or V5 <= -vol
Or V6 <= -vol
Or V7 <= -vol
Or V8 <= -vol
Or V9 <= -vol
Or V10 <= -vol
Then{
value1 = -1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//value1-----------------------------------------------------------------------------------------------------------
if V1 >= vol2
Or V2 >= vol2
Or V3 >= vol2
Or V4 >= vol2
Or V5 >= vol2
Or V6 >= vol2
Or V7 >= vol2
Or V8 >= vol2
Or V9 >= vol2
Or V10 >= vol2
Then{
value2 = 1;
}
//파동선1-----------------------------------------------------------------------------------------------------------
if V1 <= -vol2
Or V2 <= -vol2
Or V3 <= -vol2
Or V4 <= -vol2
Or V5 <= -vol2
Or V6 <= -vol2
Or V7 <= -vol2
Or V8 <= -vol2
Or V9 <= -vol2
Or V10 <= -vol2
Then{
value2 = -1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 매수0 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 0
&& !(V1 > 100)
Then{
Buy("0", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도0 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < 0
&& !(V1 < -100)
Then{
Sell("-0-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수1 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 100
&& !(V1 > 200)
Then{
Buy("1", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도1 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -100
&& !(V1 < -200)
Then{
Sell("-1-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수2 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 200
&& !(V1 > 300)
Then{
Buy("2", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도2 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -200
&& !(V1 < -300)
Then{
Sell("-2-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수3 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 300
&& !(V1 > 400)
Then{
Buy("3", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도3 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -300
&& !(V1 < -400)
Then{
Sell("-3-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수4 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 400
&& !(V1 > 500)
Then{
Buy("4", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도4 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -400
&& !(V1 < -500)
Then{
Sell("-4-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수5 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 500
&& !(V1 > 600)
Then{
Buy("5", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도5 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -500
&& !(V1 < -600)
Then{
Sell("-5-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수6 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 600
&& !(V1 > 700)
Then{
Buy("6", OnClose, DEF);
PlaySound("C:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도6 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -600
&& !(V1 < -700)
Then{
Sell("-6-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수7 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 700
&& !(V1 > 800)
Then{
Buy("7", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도7 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -700
&& !(V1 < -800)
Then{
Sell("-7-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수8 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 800
&& !(V1 > 900)
Then{
Buy("8", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도8 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -800
&& !(V1 < -900)
Then{
Sell("-8-", OnClose, DEF);
PlaySound("C:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수9 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 900
&& !(V1 > 1000)
Then{
Buy("9", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도9 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -900
&& !(V1 < -1000)
Then{
Sell("-9-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
// 매수10 ///////////////////////////////////////////////////////////////////
if value2 == 1
&&value1 == 1 && !(value1[1] == 1)
&& V1 > 1000
// && !(V1 > 1100)
Then{
Buy("10", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매수를고려하세요.wav");
}
// 매도9 //////////////////////////////////////////////////////////////////////////////////
if value2 == -1
&&value1 == -1 && !(value1[1] == -1)
&& V1 < -1000
// && !(V1 < -1100)
Then{
Sell("-10-", OnClose, DEF);
PlaySound("D:₩예스트레이더₩data₩Sound₩매도를고려하세요.wav");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//매수청산0 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < 0
&&!(V1 < -100)
Then{
ExitLong("-");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산0 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 0
&&!(V1 > 100)
Then{
ExitShort("+");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산100 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -100
&&!(V1 < -200)
Then{
ExitLong("-1");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산100 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 100
&&!(V1 > 200)
Then{
ExitShort("+1");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산200 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -200
&&!(V1 < -300)
Then{
ExitLong("-2");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산200 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 200
&&!(V1 > 300)
Then{
ExitShort("+2");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산300 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -300
&&!(V1 < -400)
Then{
ExitLong("-3");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산300 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 300
&&!(V1 > 400)
Then{
ExitShort("+3");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산400 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -400
&&!(V1 < -500)
Then{
ExitLong("-4");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산400 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 400
&&!(V1 > 500)
Then{
ExitShort("+4");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산500 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -500
&&!(V1 < -600)
Then{
ExitLong("-5");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산500 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 500
&&!(V1 > 600)
Then{
ExitShort("+5");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산600 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -600
&&!(V1 < -700)
Then{
ExitLong("-6");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산600 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 600
&&!(V1 > 700)
Then{
ExitShort("+6");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산700 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -700
&&!(V1 < -800)
Then{
ExitLong("-7");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산700 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 700
&&!(V1 > 800)
Then{
ExitShort("+7");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산800 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -800
&&!(V1 < -900)
Then{
ExitLong("-8");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산800 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 800
&&!(V1 > 900)
Then{
ExitShort("+8");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산900 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -900
&&!(V1 < -1000)
Then{
ExitLong("-9");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산900 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 900
&&!(V1 > 1000)
Then{
ExitShort("+9");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
////////////////////////////////////////////////////////////////////////////////////////
//매수청산1000 -----------------------------------------------------------------------------------------
if (value1 == -1
)
&& V1 < -1000
&&!(V1 < -1100)
Then{
ExitLong("-10");
PlaySound("D:₩예스트레이더₩data₩Sound₩매도신호.wav");
}
//매도청산1000 ------------------------------------------------------------------------------------------
if (value1 == 1
)
&& V1 > 1000
&&!(V1 > 1100)
Then{
ExitShort("+10");
PlaySound("D:₩예스트레이더₩data₩Sound₩매수신호.wav");
}
2014-06-16
189
글번호 75852
감사1 님에 의해서 삭제되었습니다.
2014-06-16
0
글번호 75851
태양같이 님에 의해서 삭제되었습니다.
2014-06-16
26
글번호 75850
오늘도수익 님에 의해서 삭제되었습니다.
2014-06-16
15
글번호 75849
답변완료
수식문의
Input : smooth(3), smooth2(5), smooth3(5) ;
Var: 상단(0),하단(0);
상단 =
하단 =
var1 = lowest(상단,5);
var2 = highest(var1,15);
var3 = ema(ema(ema((var2), smooth),smooth2),smooth3);
var4 = lowest(하단,5);
var5 = lowest(var4,15);
var6 = ema(ema(ema((var5), smooth),smooth2),smooth3);
var7 =(var3+var3+var6+var6)/4;
plot1(var7);
수고많으십니다
위의 수식을 250Tick챠트에사용하고있는데 100tick 챠트에사용할수있도록 부탁드림니다
항상신속하고 성실하게 답변줘서 고맙슴니다 감사합니다 ^^
2014-06-16
155
글번호 75847
답변완료
차팅할 봉의 갯수 자동 지정
항상 신속하고 상세하게 답변 주셔서 많은 도움을 받고 있습니다.
감사합니다.
분봉이나 틱봉으로 수급선을 적용할 때
당일 개장 후 끝날 때까지
수급선이 시가부터 종가까지 전체가 나타나게할 방법이 있는지요?
[분,틱봉 당일분만 적용]에 체크하면 당일분만 나오는것은 가능한데
차트에 출력할 봉의 갯수를 계속 조정해 주어야 하는 불편이 있습니다.
다른 회사 차트를 비교해서 죄송하오나
첨부한 이미지 처럼
개장 후 봉의 갯수가 늘어나는 만큼
화면에 출력할 봉의 갯수를 자동으로 증가시켜주는 방안이 있는지
도움을 요청합니다.
2014-06-16
225
글번호 75846