커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4421
글번호 230811
답변완료
시스템문의
수고하십니다.
하기 관련 예스스탁으로 매매가 가능할지요?
1. 해외파생상품으로 셋팅하고 싶으며
2. 문자 수신시(PC에서도 문자수신가능) 특정종목 매수나 매도신호시 자동으로 매매가 이뤄지는 방식입니다.
진입가격은 시장가로 집입조건입니다.
해당부분이 구현이 가능한지요?
그럼 확인 부탁드립니다.
2017-03-16
110
글번호 107871
답변완료
부탁드립니다.
질문드립니다.
9시 5분까지의 모든 봉의 저가가
9시 1분봉(첫봉)의 저가를 돌파하지 않았을때,
매도 진입.
하는 식을 부탁들비니다.
감샇바니다.
2017-03-16
100
글번호 107870
답변완료
다음 수식 부탁드립니다.
1. 50틱 수익후 진입자리로 돌아올시 1틱 청산
if MarketPosition == 1 and highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*50 Then
ExitLong("bx",AtStop,EntryPrice+PriceScale*2);
if MarketPosition == -1 and Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*50 Then
ExitShort("sx",AtStop,EntryPrice-PriceScale*2);
위 수식을 사용하고 있습니다.
2. 100틱 수익후 진입자리로 돌아올시 50틱 청산
150틱 수익후 진입자리로 돌아올시 100틱 청산
200틱 수익후 진입자리로 돌아올시 150틱 청산
250틱 수익후 진입자리로 돌아올시 200틱 청산
이렇게 순차적으로 청산하려면 어떤수식을 넣어야 하나요?
2017-03-16
102
글번호 107869
답변완료
다음 시스템식 부탁드립니다.
안녕하세요.
다음의 조건으로 2개의 시스템식을 신호가 나오게 수정 부탁합니다.
항상 감사합니다.
(1식)
1. macd(9, 12. 26)식의 MACD선(시그널선은 무시)이 0 기준선을 상향하고,
스톡케스틱이 50 이하에서 골든크로스가 나오면 매수.
2. macd(9, 12. 26)식의 MACD선(시그널선은 무시)이 0 기준선을 하향하고,
스톡케스틱이 50 이상에서 데드크로스가 나오면 매도.
(2식)
다음의 합성식에서
기준선 50 이하에서만 매수(기준선 50 이하에서는 매도금지)신호가 나오고,
기준선 50 이상에서만 매도(기준선 50 이상에서는 매수금지)신호가 나오게 수식 부탁합니다.
input : short(12),long(26),sto1(14),sto2(3),sto3(3);
var : HH(0),LL(0),FK(0),SK(0),SD(0),T(0);
var1 = MACD(short,long);
HH = Highest(var1, sto1);
LL = Lowest(var1, sto2);
FK = (var1 - LL) / (HH-LL) * 100;
SK = ema(FK,sto1);
SD = ema(SK,sto2);
if SK > SK[1] and SK[1] < Sk[2] Then
buy();
if SK < SK[1] and SK[1] > Sk[2] Then
sell();
2017-03-16
108
글번호 107868
답변완료
지표식 부탁드립니다
안녕하세요
아래식에서 고점저점표시가 발생될때 소리가 발생되도록 수정부탁드립니다 감사합니다
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);
TL_SetSize(TL1,1);
TL_SetColor(TL1,BLACK);
2017-03-16
127
글번호 107867
답변완료
거래량을 이용한 지표식 부탁드립니다.
안녕하세요. 오래간만에 인사드립니다.
거래량을 이용한 지표를 2개 만들고자 합니다.
다음과 같은 포맷으로 부탁드립니다.
input : 카운팅시작일자(20170315), 카운팅시작시간(090000);
input : 유통물량주식수(12900); #천단위
1. 지표1 : 순누적거래량
1) 누적거래량은 카운팅시작일자 & 시작시간부터 카운팅함.
2) 양봉일때의 거래량만 누적
3) 음봉일때의 거래량만 누적
4) 도지봉(시가=종가) 발생시 거래량 카운팅하지 않음.
5) 2),3)항목을 가지고 '(양봉일때의 누적거래량 - 음봉일때의 누적거래량)'을
순누적거래량 지표로 표시
6) 첨부한 그림처럼 0을 기준으로 +와 -로 표시되도록 부탁드립니다.
2. 지표2 : 누적거래량비
1) 유통물량주식수 대비 순누적거래량의 비율을 지표로 표시
2) 즉, 지표1에서 구한 순누적거래량을 이용해 (순누적거래량/유통물량주식수)*100(%)로 계산해서
지표로 표시
3) 누적거래량비의 최대한계값은 100%이며 100%를 넘는 경우 계산을 멈추고 음봉거래량이 나와
100%이하가 되면 다시 계산을 시작해서 누적거래량비를 계산한다.
(유통물량주식수가 한정되어있기 때문에 누적거래량비가 100%를 초과할수 없기 때문입니다.)
0%이하 즉 -값이 나오는 경우도 만찬가지로 반대의 개념입니다. 0%가 최저한계값입니다.
4) 50%를 수평기준선으로 잡고 퍼센티지를 그래프로 표현해 주세요.
좋은하루 되세요.
2017-03-16
243
글번호 107864
답변완료
문의드립니다
안녕하세요
지표문의드립니다
1. 당일시가 기준으로 상하변폭 가로선을 표현하고자합니다.
당일시가 기준에서 상방으로 12틱 27틱 35틱 68틱 89틱 127틱
당일시가 기준에서 하방으로 12틱 27틱 35틱 68틱 89틱 127틱 가로선을 부탁드립니다
가로선위에 가격대를 표현해주시면 더욱감사합니다
2. 특정가격대에 상반으로 12틱 35틱 68틱 89틱
하방으로 12틱 35틱 68틱 89틱 가로선을 부탁드립니다
가로선위에 가격대를 표현해주시면 더욱감사합니다
2017-03-16
127
글번호 107863
답변완료
이동평균선 기준 바탕색 지정
안녕하세요.
문의드릴 사항은
20이평 기준으로 위 아래 바탕색색을 다르게 지정되도록 부탁드립니다.
수고하세요.
2017-03-16
149
글번호 107860
답변완료
수식부탁드림니다=================
추세선이그어질때 소리나게할순없나요?부탁드립니다
Input:length(12),X(2);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),tx(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때;
// 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때;
// 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
// 전환점구분 null값으로 초기화;
turnPntBit = "";
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환점구분 = 저점;
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 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 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 신규 전환점구분이 현재(전환점배열 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) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 0값 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
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]);
#텍스트 출력
if turnPntArr[1][0] == "Hi" then#저점
tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-PriceScale*X,NumToStr(valArr[2],2));
if turnPntArr[1][0] == "Lo" then #고점
tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+PriceScale*X,NumToStr(valArr[2],2));
Text_SetStyle(tx,2,2);
}
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,BLUE);
2017-03-16
137
글번호 107859