커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6558
글번호 230811
답변완료
전저/전고선에 수치가 표시되었으면 좋겠습니다.
안녕하세요?
42990으로 문의드렸던건데요, 사용하다보니 수평선 뿐만아니라 수치까지 같이 나와주면 더욱 유용하게 사용할 것 같습니다.
제공해 주신 수식 첨부하였으니 한번 더 부탁드립니다.
감사합니다.
=======================================================================
Input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9 {
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다
// 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt);
Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt);
// 전환점구분 null값으로 초기화;
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점;
// else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환전구분 = 저점;
turnPntBit = "";
If Condition1 and Condition2 Then {
If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 then
// 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다.
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
// if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
// if 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or
(turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then {
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 입력변수의 봉개수 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,4);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,MAGENTA);
TL_SetSize(TL11,3);
}
if turnPntArr[1][0] == "Lo" Then{
TL_Delete(TL12);
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,CYAN);
TL_SetSize(TL12,3);
}
2015-07-14
165
글번호 88424
답변완료
2번째 골든크로스
안녕하세요. 문의 드립니다.
MACD 지표를 가지고 문의 드립니다.
MACD 0선 상승 후 2번째 골든크로스 나오면 매도
MACD 0선 하락 후 2번째 데드크로스 나오면 매수
countif로 해볼려고 수식을 짜봤지만... 생각한 자리에 신호가 나오질 않네요 ㅠㅠ
2015-07-14
138
글번호 88415
답변완료
부탁드립니다.
아래 1번 지표를 바탕으로 2번 시스템을 1번 지표가 상승중일땐 매수진입만 하락중일땐 매도진입만하도록 수정 부탁드립니다.
그리고 1번 지표가 상승중 하락으로 하락중 상승으로 바뀌면 손절처리되도록 부탁드립니다..
감사합니다.
---------------------------------------------------------------------------
- 1번 -
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),tx(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,52) == H and lastHiVal <> H;
Condition2 = Lowest(L,52) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then{
Tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],NumToStr(valArr[2],2));
Text_SetStyle(tx,2,2);
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1[1],3);
TL_SetColor(TL1[1],RGB(20,255,255));
----------------------------------------------------------------------------------------
- 2번 -
if var2[1]>var2[0] and
OPEN[0]>var1 and
OPEN[0]>CLOSE[0] Then
T = -1;
if var2[1]<var2[0] and
OPEN[0]<var1 and
OPEN[0]<CLOSE[0] Then
T = 1;
if MarketPosition == 0 and T == -1 and countif(T == T[1],3) == 3 Then
sell();
if MarketPosition == 0 and T == 1 and countif(T == T[1],3) == 3 Then
buy();
SetStopProfittarget(PriceScale*80,PointStop);
SetStopLoss(PriceScale*100,PointStop);
2015-07-14
140
글번호 88414
답변완료
부탁드립니다.
차트상에 익절가라인 손절가라인을 나타내고 싶습니다. 익절라인은 빨간색 손절라인은 파란색으로 나타내고 청산후 앞에 라인은 사라지고 다음신호에서 나타내도록 부탁드립니다.
SetStopProfittarget(PriceScale*50,PointStop);
SetStopLoss(PriceScale*10,PointStop);
2015-07-14
139
글번호 88411
백진강 님에 의해서 삭제되었습니다.
2015-07-14
0
글번호 88408
답변완료
수식문의
5이평과20이평에서 골든크로스날때는매수만하는식과 데드때는 매도만하는식을 부탁합니다
합성을할려고 그러는데요 위에조건만 만족하게 만들어주세요
nput : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
} 위의식에서 조건을 골든때는 매수만 데드때는 매도만 하게하는 조건식을 만들어주세요
2015-07-14
127
글번호 88407
답변완료
부탁합니다
수식1
n=5;
(highest(HIGH,n) - lowest(HIGH,n))/2 + lowest(HIGH,n);
수식2
(highest(LOW,n) - lowest(LOW,n))/2 + lowest(low,n);
2015-07-14
135
글번호 88403
답변완료
문의드립니다
안녕하세요
43027과관련하여
지표식및 시스템식이 이상합니다
지표식은 작성되지않고 시스템식은 17시10분에서 매수매도청산발생
시작시간 17시제외하면 날자변경선에서 매수매도청산
다시한번검토부탁드립니다
========================================
식수정후 그시스템에 아래조건을 추가하여 별도로 시스템식 부탁드립니다.
기존시스템식1개
조건추가시스템식1개
총 2개 부탁드립니다
기존수식에서 매매횟수및 같은방향 진입제어가 되어있는데요
여기 다음수식을 추가하고자합니다.
재매수조건 = 당일 매수청산이 한번 발생한적이 있으면 당일 최고점돌파시매수
매매횟수 1회만발생하게해주세요.
그러면 기존수식에서 매수 1회 그리고 재매수에서 1회
당일 매수포지션에서만 총 2번 발생되게해주세요.
재매도조건 = 재매수반대.
감사합니다.
2015-07-14
130
글번호 88401
답변완료
옵션 과 선물
안녕하세요
호가창. 에서. 선물. 1번방
호가창에서. 콜 옵션. 2번방
호가창에서. 풋. 옵션. 3번방
을. 열어서. 볼때.
콜 이든. 풋이든. 선물이든
두 종목이. 상승방향으로. 빠르게. 스타트
상승시. 매수.
두. 종목이. 하락 방향으로. 빠르게 스타트
하락시. 매도
감사^^
2015-07-14
152
글번호 88400