커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4612
글번호 230811
답변완료
글번호 47992번 추가질문
안녕하세요?
글번호 47992번 답변 감사드립니다.
아래의 함수도 글번호 47992번 답변처럼 부탁드립니다.
아래의 함수 역시 20ma, 60ma 골든크로스 매수, 데드크로스 매도 전략입니다.
그런데 매수진입은 골든크로스 이후 골든크로스 상태가 유지된 상태(20ma>60ma)에서 현주가가 60ma를 하향이탈하면 익봉시가에 매수하고,
매도 진입은 데드크로스 이후 데드크로스 상태가 유지된 상태에서(20ma<60ma) 현주가가 60ma를 상향돌파하면 익봉 시가에 매도진입하고자합니다.
아울러 여기에 아래의 강제청산 조건을 넣고자 하는데
SetStopLoss(손절,PercentStop);
SetStopProfittarget(익절,PercentStop);
SetStopInactivity(익절,봉수,PercentStop);
손절과 익절 그리고 봉수의 계산은 실제로 진입한 상기의 눌림목 또는 기술적 반등을 이용한 가격을 기준으로 하는 것이 아니라
아래의 식에서 골든크로스의 매수가, 데드크로스의 매도가로 하고 싶습니다.
input : xtime(60000);
var : tcond(false),cond1(false),cond2(false);
if stime == xtime or (stime > xtime and stime[1] < Xtime) Then{
Tcond = false;
}
if bdate != bdate[1] Then{
Tcond = true;
Condition1 = false;
Condition2 = false;
}
var1 = ma(c,20);
var2 = ma(c,60);
cond1 = C > var1 and var1 > var2;
cond2 = C < var1 and var1 < var2;
if cond1 == true and cond1[1] == false then
Condition1 = true;
if cond2 == true and cond2[1] == false then
Condition2 = true;
if Tcond == true And
Condition1 == true and cond1 == true and
var1 > var1[1] and var2 > var2[1] Then
buy("B");
if Tcond == true And
Condition2 == true and Cond2 == true and
var1 < var1[1] and var2 < var2[1] Then
sell("S");
2016-06-01
114
글번호 98668
답변완료
고점과 저점 표시방법에 대해 문의드립니다.
항상 친절하고 빠른 답변에 감사드립니다.
아래와 같은 지그재그 변곡점 수식에서
고점과 저점의 표시 방법을 소숫점이하 1자리(50.1)에서
소숫점이하 2자리(50.06) 또는 4자리(50.0601)로 표시하는 방법을 알려 주시면 고맙겠습니다.
어느 부분에서 수정을 해야 하는지 주석을 달아 주시면 더욱 좋겠습니다.
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TT(0), TL1(0),
Text1(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);
}
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],1));
Text_SetStyle(Text1, 2, 1);
}
}
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);
}
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],1));
Text_SetStyle(Text1, 2, 0);
}
}
TL_SetSize(TL1, 5);
TL_SetColor(TL1, GRAY);
If 처리구분 == "고점처리" Then
TT = 1;
plot1(1,"저점",GREEN, def, 2);
If 처리구분 == "저점처리" Then
TT = -1;
plot2(2,"고점",YELLOW, def, 2);
2016-06-01
257
글번호 98667
답변완료
수정부탁드립니다^^
input : P(10);
var : MM(0),T(0);
MM = (highest(H,P)+lowest(L,P))/2;
if T == 0 and C > MM Then
T = 1;
if T == 0 and C < MM Then
T = -1;
if T == 1 and CrossDown(C,lowest(L,P)[1]) Then
T = 0;
if T == -1 and CrossUp(C,highest(H,P)[1]) Then
T = 0;
if dayindex == 0 and T == 1 then
buy();
if dayindex == 0 and T == -1 then
sell();
if dayindex > 0 then{
if T == 1 and T[1] != 1 Then
buy();
if T == 0 and T[1] == 1 Then
sell();
}
if T == -1 and T[1] != -1 Then
sell();
if T == 0 and T[1] == -1 Then
buy();
SetStopEndofday(150000);
위수식은 아침 9시부터 맞는 색깔에 신호가뜨는데
수정할 부분은
아침 10시 30분 부터 강조식에 색깔이 맞는 표시에 신호가 나왔으면좋겠습니다
10시 30분에 빨강색이면 매수 파랑색이면 매도
잘부탁드립니다
항상 감사합니다^^
2016-05-31
119
글번호 98666
답변완료
고가와저가매매보다05p더해매매
input : HP(5),LP(5);
var : cnt(0),HH(0),LL(0);
HH = dayhigh(1);
for cnt = 1 to HP{
if dayhigh(cnt) > HH Then
HH = dayhigh(cnt);
}
LL = dayLow(1);
for cnt = 1 to LP{
if daylow(cnt) < LL Then
LL = dayLow(cnt);
}
if crossup(c,HH) then
buy();
if CrossDown(c,LL) Then
sell();
위수식에서
5일간 고가보다0.5p 더오르면 매수
5일간 저가보다-0.5p 더내리면 매도 부탁합니다
매매시점을 0.5p늘려잡습니다
항상 감사힙니다.
2016-05-31
102
글번호 98665
답변완료
답변 좀 부탁드립니다.
이전 질문의 상세한 답변 감사드립니다.
1. 참조데이터를 일봉에 적용해서 검색식을 만들어 잘 적용했습니다.
그런데..참조데이터 안에 프로그램매매에 관한
차익거래 순매수 금액과 비차익거래 순매수 금액이 안보이더라구요..
이는 어떻게 적용할까요? (전 질문번호는 48001입니다.)
2. 조건만족시 조건만족봉에 점으로 표시가 되는데...
그날 일봉의 종가가 시가보다 높으면 위쪽 화살표가 봉의 아래쪽에 나타나고,
낮으면 아래쪽 화살표가 봉의 위쪽에 나타나게 표시가 가능할까요?
3. 그리고 실시간으로 검색시 소리가 나게 할 수도 있나요? 아니면 팝업창이라도...
2016-05-31
126
글번호 98664
답변완료
재문의 합니다.
47991번 재문의 합니다.
Envelope 중심선140 추가해주세요
5일이동평균이
Envelope 중심선을 기준으로 상승이면 매수만
하락이면 매도만 나오게 해주시고요 .
진입 신호만 있고 청산 신호는 없는 식으로 부탁드립니다.
매수신호 : 5일평균선이 Envelope 중심선을 상승으로 통과하고
1번+0.13선을 뚷고 올라가면 첫번째 매수신호
2번+0.21선을 뚷고 올라가면 두번째 매수신호
3번+0.34 선을 뚷고 올라가면 3번째 매수신호
매도신호 : 5일평균선이 Envelope 중심선을 하락으로 통과하고
1번-0.13선을 뚷고 내려가면 첫번째 매도신호
2번0.21선을 뚷고 내려가면 두번째 매도신호
3번0.34 선을 뚷고 내려가면 3번째 매도신호
첨부파일 올림니다.
감사합니다.
시스템 적용시 시스템 트레이딩 설정창의 피라미딩탭에서
다른진입신호만 허용으로 설정하고 적용하시면 됩니다.
input : P(5),per1(0.13),per2(0.21),per3(0.34);
var : T(0);
value1 = EnvelopeUp(p,per1);
value2 = EnvelopeUp(p,per2);
value3 = EnvelopeUp(p,per3);
value4 = EnvelopeDown(p,per1);
value5 = EnvelopeDown(p,per2);
value6 = EnvelopeDown(p,per3);
if crossup(C,value1) Then
buy("b1");
if crossup(C,value2) Then
buy("b2");
if crossup(C,value3) Then
buy("b3");
if CrossDown(C,value4) Then
Sell("s1");
if CrossDown(C,value5) Then
Sell("s2");
if CrossDown(C,value6) Then
sell("s3");
2016-05-31
138
글번호 98663
답변완료
타주기식 부탁드립니다.
아래식은 38697 질의에 답변해주셨던 내용인데요
타주기 식을 만들어 보려하니 잘 안되어 부탁드립니다.
감사합니다.
INPUTS:
TICKCHG(10), #{Change (number of ticks) required to set up a new swing high/low.}
PCTCHG(.2), #{Percent change in price to set up a new swing high/low}
OCCUR(1),
PLOTBARS(40),
ETALINE(true),
ZIGZAG(TRUE);
ARRAY:
PBAR[50](0),
P[50](0);
VARS:
X(0),
PP(1),
JA_SLOPE1(0),
JLA_CTR(0),
JLA_LINE(0),
JAIRHBAR(0), #{ LAST SWING HIGH BAR}
JAIRLBAR(0), #{LAST SWING LOW BAR}
LOWSEEK(FALSE), #{LOOKING FOR A LOW OR A HIGH?}
W(0), #{COUNTER}
JLA_IRH(0), #{LAST SWING HIGH VALUE}
JLA_IRL(99999), #{LAST SWING LOW VALUE}
JA_SLOPE2(0),
JA_SLOPE3(0),
JLA_PT1(0),
WOLFE(0);
#{==================MAIN
#PROGRAM=========================}
IF CURRENTBAR == 1 THEN P[50] = C;
IF LOWSEEK == FALSE AND P[50] <= H THEN
BEGIN
P[50] = H;
PBAR[50] = 0;
END;
IF LOWSEEK == TRUE AND P[50] >= L THEN
BEGIN
P[50] = L;
PBAR[50] = 0;
END;
IF (LOWSEEK == FALSE AND PBAR[50] <> 0) THEN
BEGIN
IF (TICKCHG == 0
AND L < P[50] * ( 1 - PCTCHG / 100) )
OR (TICKCHG <> 0
AND L < ( P[50] - tickchg * PriceScale)) THEN
BEGIN
IF ZIGZAG == TRUE THEN
PLOT4(P[50],"SWINGS");
LOWSEEK = TRUE;
FOR W = 1 TO 49
BEGIN
PBAR[W] = PBAR[W+1];
P[W] = P[W+1];
END;
P[50] = L;
PBAR[50] = 0;
END;
END;
IF (LOWSEEK == TRUE AND PBAR[50] <> 0) THEN
BEGIN
IF (TICKCHG == 0
AND H> P[50] * ( 1 + PCTCHG / 100))
OR (TICKCHG <> 0
AND H > (P[50] + tickchg * PriceScale )) THEN
BEGIN
IF ZIGZAG == TRUE THEN
PLOT4(P[50],"SWINGS");
LOWSEEK = FALSE;
FOR W = 1 TO 49
BEGIN
PBAR[W] = PBAR[W+1];
P[W] = P[W+1];
END;
P[50] = H;
PBAR[50] = 0;
END;
END;
IF P[48 - PP] <> 0 THEN
BEGIN
PP = -1;
WOLFE = 0;
WHILE WOLFE < OCCUR AND PP < 46
BEGIN
PP = PP + 1;
VALUE1 = P[47-PP];
VALUE2 = P[48-PP];
VALUE3 = P[49-PP];
VALUE4 = P[50-PP];
CONDITION1 =
VALUE2 > VALUE1
AND VALUE4 > VALUE3
AND VALUE4 < VALUE2
AND VALUE3 < VALUE1
AND VALUE4 > VALUE1;
CONDITION2 =
VALUE2 < VALUE1
AND VALUE4 < VALUE3
AND VALUE4 > VALUE2
AND VALUE3 > VALUE1
AND VALUE4 < VALUE1;
IF CONDITION1 OR CONDITION2 THEN
WOLFE = WOLFE + 1;
END;
JA_SLOPE1 = (P[49-PP] - P[47-PP]) / (PBAR[47-PP] - PBAR[49-PP]);
JA_SLOPE2 = (P[50-PP] - P[47-PP]) / (PBAR[47-PP] - PBAR[50-PP]);
#{LINE 1-3}
if PBAR[47-PP] >=0 and PBAR[49-PP] >= 0 and PBAR[49-PP]-PLOTBARS >=0 then
begin
TL_Delete(value90);
VALUE90 = TL_New(sDATE[PBAR[47-PP]],sTIME[PBAR[47-PP]],P[47-PP ],
sDATE[PBAR[49-PP]], sTIME[PBAR[49-PP]],P[49-PP]);
Value14=TL_SetColor(VALUE90, red);
#{VALUE93 = TL_SetExtRight(VALUE90,TRUE);}
VALUE94 =
TL_SETEND(VALUE90,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS],
TL_GetVALUE(VALUE90,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS])); //
end ;
#{LINE 1-4}
if PBAR[47-PP] >= 0 and PBAR[50-PP] >= 0 and PBAR[49-PP]-PLOTBARS >= 0 then
begin
TL_Delete(value91);
VALUE91 = TL_NEW(sDATE[PBAR[47-PP]],sTIME[PBAR[47-PP]],P[47-PP ],
sDATE[PBAR[50-PP]], sTIME[PBAR[50-PP]],P[50-PP]);
Value14=TL_SetColor(VALUE91, green);
TL_SETEND(VALUE91,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS],
TL_GETVALUE(VALUE91,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS]));
end ;
if PBAR[48-PP] >=0 and PBAR[50-PP]-PLOTBARS >= 0 then
begin
#{ETA LINE}
IF ETALINE THEN
BEGIN
TL_Delete(value92);
VALUE92 = TL_NEW(sDate[PBAR[48-PP]],sTime[PBAR[48-PP]],P[48-PP ],
sDate[PBAR[50-PP]],sTime[PBAR[50-PP]],P[50-PP]);
Value14=TL_SetColor(VALUE92, blue);
TL_SETEND(VALUE92,sDate[PBAR[50-PP]-PLOTBARS],sTime[PBAR[50-PP]-PLOTBARS],
TL_GETVALUE(VALUE92,sDate[PBAR[50-PP]-PLOTBARS],sTime[PBAR[50-PP] -PLOTBARS]));
END;
end;
END;
IF LastBarOnChart == 1
AND ZIGZAG == TRUE THEN
BEGIN
JA_SLOPE3 = (P[50] - P[49]) / (PBAR[49] - PBAR[50]);
FOR JLA_CTR = PBAR[49] DOWNTO PBAR[50] BEGIN
PLOT4(P[49] + (PBAR[49] - JLA_CTR) *
JA_SLOPE3,"Swings");
END;
END;
FOR W = 1 TO 50
BEGIN
PBAR[W] = PBAR[W]+1;
END;
2016-05-31
225
글번호 98662
답변완료
수식 부탁드립니다
(1)
주봉 바닥 가격 붕괴후 돌파시 매수
주봉 천정을 돌파하여 주봉 바닥~천정 진폭 대칭 상승시 매도
(2)
주봉 바닥 10틱 위에서 매수
주봉 천정을 돌파하여 주봉 바닥~천정 진폭 대칭 상승 10틱 아래에서 매도
(3)
주봉 바닥 10틱 위에서 매수
주봉 천정을 돌파하여 주봉 바닥~천정 진폭 대칭 상승 10틱 위에서 매도
감사합니다
2016-05-31
132
글번호 98661
답변완료
고가와저가그리고중간값의매매
3일간의고가를 상향돌파하면 매수하고 중간값 을하향돌파하면 정리함(포지숀무)
다시고가를 상향돌파면매수 중간값을 하향돌파하면 정리함(포지숀무) 반복함
(중간값은고가와저가의1/2 입니다)
매도는반대입니다
감사합니다
2016-05-31
133
글번호 98658