커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7216
글번호 230811
답변완료
문의드립니다.
1. 기타
이거 사용자 함수로 만들어 주실 수 있나요?
변동계수
https://terms.naver.com/entry.nhn?docId=293901&cid=60262&categoryId=60262
2019-01-31
215
글번호 125797
답변완료
항생진폭
안녕하세요?
아래의 수식은 항생진폭을 계산하는 수식입니다,
질문 : 항생진폭(당일고가-당일저가)을 계산하는 함수를 추가하여 주시기 바랍니다,
즉 한국시간 10:15분부터 17:30까지 계산된 진폭이 출력되도록 추가 부탁드립니다.
var : TX(0), TX1(0);
Var80 = dayhigh()-daylow();
Text_Delete(tx);
tx = Text_New(sdate,stime,C-PriceScale*240,NumToStr(var80,2));
Text_Delete(tx1);
tx1 = Text_New(sdate,stime,C+PriceScale*240,NumToStr(var80,2));
2019-01-31
171
글번호 125795
번성 님에 의해서 삭제되었습니다.
2019-02-01
18
글번호 125786
답변완료
문의 드립니다.
안녕하세요
아래 파동식에서 파동의 고점과 저점이 확정이 되고
정해진후 캔들의 종가가 파동의 고점을 상향 돌파 또는
파동의 저점을 하향 돌파 할 때 소리가 나게 부탁드립니다.
감사합니다.
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,white);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,white);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
2019-01-31
197
글번호 125785
회원 님에 의해서 삭제되었습니다.
2019-01-31
27
글번호 125784
답변완료
지표를 시스템으로 변경 문의 입니다.
안녕하세요 아래와 지표 2개를 사용하여 시스템을 만들려고 하는데
지표 1,2 가 동시에 상승할때 매수
지표 1,2 가 동시에 하락할때 매도로 구현이 가능한가요 ?
지표1
Input : short(6), longPeriod(26);
Var : value(0);
value = MACD(short, longPeriod);
if value > value[1] Then
plot1(value,"macd",YELLOW);
Else
plot1(value,"macd",CYAN);
지표2
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : value(0) , macdosc(0), MACD전저점(0), 가격전저점(0), 예비저(0), 예비봉저(999), macdplot(0),
macd전고점(0), 가격전고점(0), 예비고(0), 예비봉고(0);
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
if macdosc > 0 then
{
plot3(macdosc * 2, "MACDOscillator", RED);
if(macdosc[1] <= 0) then
{ // 이전 봉 까지는 음수인 경우 전저점이 확정된다.
// 다이버전스 조건이 충족 되었는지 검증한다.
if(macd전저점 <= -0.01 ) and (macd전저점 <= 예비저) and (가격전저점 >= 예비봉저) then
{
macdPlot = macd전저점 * -1;
MessageLog("macd전저점 %.0f 가격전저점%.0f 예비저%.0f 예비봉저%.0f 다이버젼스 발견", macd전저점, 가격전저점, 예비저, 예비봉저);
}
else
macdPlot = 0;
if(예비저 <= -0.01) then
{
macd전저점 = 예비저;
가격전저점 = 예비봉저;
}
}
else
{
macdPlot = 0;
}
예비저 = 0;
예비봉저 = 999;
if(예비고 < macdosc) then
{
예비고 = macdosc;
}
예비봉고 = max(예비봉고, c);
}
else
{
Plot3(macdosc * 2, "MACDOscillator", BLUE);
macdPlot = 0;
if(예비저 > macdosc) then
{
예비저 = macdosc;
}
if(macdosc[1] >= 0) then
{ // 이전 봉 까지는 양수인 경우 전고점이 확정된다.
// 다이버전스 조건이 충족 되었는지 검증한다.
if(macd전고점 >= 0.01 ) and (macd전고점 > 예비고) and (가격전고점 <= 예비봉고) then
{
macdPlot = macd전고점 * -1;
MessageLog("macd전고점 %.0f 가격전고점%.0f 예비고%.0f 예비봉고%.0f 다이버젼스 발견", macd전고점, 가격전고점, 예비고, 예비봉고);
}
else
macdPlot = 0;
if(예비고 >= 0.01) then
{
macd전고점 = 예비고;
가격전고점 = 예비봉고;
}
}
else
{
macdPlot = 0;
}
예비고 = 0;
예비봉고 = 0;
예비봉저 = min(예비봉저, c);
}
PlotBaseLine1(0, "기준선1");
plot1(macdPlot);
//MessageLog("macd전저점 %.0f 가격전저점%.0f 예비저%.0f 예비봉저%.0f", macd전저점, 가격전저점, 예비저, 예비봉저);
2019-01-31
213
글번호 125783
답변완료
봉완성전
봉완성전에 다른값을 그리다가
봉완성이 되면 또다른값으로 그리고 싶은데
가능한가요 ?
2019-01-31
178
글번호 125782
답변완료
처음으로 수식작성 문의드립니다.
1월에 하이투자 교대에서 교육받고 열심히 예스랭귀지 셀프 스터디하고 있습니다...^^
현재까지의 지식으로 도저히 방법이 나오지 않아 문의드립니다.
ETF 부터 시작하기 위해 무조건 매수-매도 시스템을 구상중입니다.
생각하는 조건 중 매수 조건은 가격을 가지고 어찌어찌 만들었습니다만....매도 조건을 수식화하기 어렵습니다.
매수한 이후....
1. 연속하여 나오는 첫 번째 음봉의 종가에서 매도하기
ex) 양봉(1, 매수) - 양봉(2) - 양봉(3) - 음봉(4, 매도)
2. 연속하여 나오는 두 번째 음봉의 종가에서 매도하기
ex) 양봉(1, 매수) - 양봉(2) - 음봉(3) - 양봉(4) - 음봉(5, 매도)
3. 연속하여 나오는 세 번째 음봉의 종가에서 매도하기
ex) 양봉(1, 매수) - 양봉(2) - 음봉(3) - 양봉(4) - 음봉(5) - 음봉(6, 매도)
시가=종가인 도지봉은 양봉으로 간주하시면 됩니다.
이런 식으로 음봉의 종가에서 매도하는 수식 작성 문의드립니다...^^
미리 감사드립니다.
2019-01-30
238
글번호 125781
답변완료
수식문의
어제 질문드린 내용입니다
수식의 해석과 시스템식으로의 변형
시스템식은 조건이 있어야 한다고 하셔서 재자 질문드립니다
다 아시겠지만 첨부파일을 보시면 수치와 꺽인선이 보이실겁니다
그냥 단순하게 저 꺽이는 선과 숫자가 나오는 선에서 매수 매도 입니다
첫 숫자가 출현하고도 상하로 더 운동을 하는것을 볼수잇는데
첫 숫자 출현후 10틱 손절과 첫 숫자 표현자리가 표현되었으면 좋겠습니다
첫 숫자 출현후 출현 가격에 매수도가 사람은 불가능해도 시스템적으로 가능할거
같은데 ..........
또한 10틱 손절후 재차 진입이 가능한지 궁금합니다
화면상에는 보이지 않지만 꺽인선보다 숫자가 가 우선입니다 숫자 표현시
매수도 손익절입니다 지속적으로 스위칭이 일어나게 했으면 합니다
손절틱은변형이 가능하다면 같이 부탁드려봅니다 감사합니다
input : af(0.02), maxAF(0.2);
input : 텍스트출력(1);
var : T(0),cnt(0),count(0);
var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0),day1(0),day0(0);
var : TL1(0),TL2(0),tx1(0),tx2(0),tx11(0),tx22(0);
Array : HD[20](0),HT[20](0),HH[20](0),LD[20](0),LT[20](0),LL[20](0);
var1 = CSar(af,maxAF);
if bdate != bdate[1] Then
{
day0 = sdate;
day1 = day0[1];
}
if crossup(c,var1) Then
{
T = 1;
HH[0] = H;
HD[0] = sdate;
HT[0] = stime;
for cnt = 1 to 19
{
HD[cnt] = HD[cnt-1][1];
HT[cnt] = HT[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
}
if LL[0] > 0 Then
{
if 텍스트출력 == 1 then
{
Tx11 = Text_New(HD[1],HT[1],HH[1],NumToStr((HH[1]-LL[1])/PriceScale,0)+NewLine+NumToStr(HH[1],2));
Text_SetStyle(tx11,2,1);
Text_SetColor(tx11,BLACK);
Text_Delete(tx1);
Tx1 = Text_New(HD[0],HT[0],HH[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(HH[0],2));
Text_SetStyle(tx1,2,1);
Text_SetColor(tx1,GRAY);
Condition1 = false;
for cnt = 1 to 19
{
if Condition1 == false and abs(LL[0]-LL[cnt]) <= PriceScale*1 and LD[cnt] >= day1 Then
{
Condition1 = true;
TL1 = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]);
}
}
}
}
}
if CrossDown(c,var1) Then
{
T = -1;
LL[0] = L;
LD[0] = sdate;
LT[0] = stime;
for cnt = 1 to 19
{
LD[cnt] = LD[cnt-1][1];
LT[cnt] = LT[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
if HH[0] > 0 Then
{
if 텍스트출력 == 1 then
{
Tx22 = Text_New(LD[1],LT[1],LL[1],NumToStr((HH[1]-LL[1])/PriceScale,0)+NewLine+NumToStr(LL[1],2));
Text_SetStyle(tx22,2,0);
Text_SetColor(tx22,RED);
Text_Delete(tx2);
Tx2 = Text_New(LD[0],LT[0],LL[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(LL[0],2));
Text_SetStyle(tx2,2,0);
Text_SetColor(tx2,MAGENTA);
Condition2 = false;
for cnt = 1 to 19
{
if Condition2 == false and abs(HH[0]-HH[cnt]) <= PriceScale*1 and HD[cnt] >= day1 Then
{
Condition2 = true;
TL2 = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]);
}
}
}
}
}
if T == 1 then
{
if H > HH[0] Then
{
HH[0] = H;
HD[0] = sdate;
HT[0] = stime;
if 텍스트출력 == 1 then
{
Text_Delete(tx1);
Tx1 = Text_New(HD[0],HT[0],HH[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(HH[0],2));
Text_SetStyle(tx1,2,1);
Text_SetColor(tx1,BLACK);
}
}
}
if T == -1 then
{
if L < LL[0] Then
{
LL[0] = L;
LD[0] = sdate;
LT[0] = stime;
if 텍스트출력 == 1 then
{
Text_Delete(tx2);
Tx2 = Text_New(LD[0],LT[0],LL[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(LL[0],2));
Text_SetStyle(tx2,2,0);
Text_SetColor(tx2,RED);
}
}
}
2019-01-31
196
글번호 125780