커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4726
글번호 230811
답변완료
If 조건 사용법
아래와 같은 조건도 가능한가요?
5틱 손실이면 2수익시 매수청산
If MarketPosition == 1 and PositionProfit <= PriceScale*(-5) Then
{ If OpenPositionProfit >= PriceScale*2 Then ExitLong("EL"); }
2015-11-18
162
글번호 92525
답변완료
문의드립니다...
년봉에서 이동평균선 정배열 10일선.20일선30일선 정배열을 찾고 싶습니다..
정배열이 계속 유지되면 종목이 검색되게 해주세요
감사합니다..
2015-11-18
174
글번호 92520
답변완료
문의드립니다
아래수식은 45063번 질문에 답해주신거 입니다
실행해보니 지표가 나오지 않습니다
plot1 를사용하니 지표가 나오지 않습니다
1-3=값이 2에+하여 지표가직선으로 나와야합니다
확인검도 부탁드립니다
Input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0),TL2(0),TL3(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] and valArr[3] > 0 Then{
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL2 = TL1[1];
TL3 = TL2[1];
if turnPntArr[1][0] == "Hi" and valArr[1] > valArr[3] Then{
TL_SetEnd(TL2,TL_GetEndDate(TL2),TL_GetEndTime(TL2),TL_GetEndVal(TL2)+abs(valArr[1]-valArr[3]));
TL_SetBegin(TL1,TL_GetBeginDate(TL1),TL_GetBeginTime(TL1),TL_GetEndVal(TL2));
}
if turnPntArr[1][0] == "Lo" and valArr[1] < valArr[3] Then{
TL_SetEnd(TL2,TL_GetEndDate(TL2),TL_GetEndTime(TL2),TL_GetEndVal(TL2)-abs(valArr[1]-valArr[3]));
TL_SetBegin(TL1,TL_GetBeginDate(TL1),TL_GetBeginTime(TL1),TL_GetEndVal(TL2));
}
}
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
plot1(TL1);
plot2(TL2);
plot3(TL3);
2015-11-18
195
글번호 92516
답변완료
지표 값의 숫치 표시
항상 신속하고 상세하게 답변 주셔서 많은 도움을 받고 있습니다.
감사합니다.
혹시 전략 차트 한쪽에
(상단 또는 하단 또는 차트의 중간 등)
어떤 지표의 값을 (예를 들면 시가, 중심가, 전일고가 등)
수치로 표시할 수 있을까요?
차트로 구현할 수 있지만
화면을 많이 차지 하여 가능하지 여부를 여쭈어 봅니다.
(DDE 말구요!)
부탁드립니다.
2015-11-18
177
글번호 92511
답변완료
부탁 드립니다.
항상 도움 주셔서 감사 드립니다.
번거럽게 해서 송구 스럽습니다.
대륙별 지표 관련 마지막 질문 입니다.
수식1,2,3을 합성하여
그림과 같이 한개의 지표로 가능 하겠는지요?
수식1) 아시아장
input : 시작일(20151117),시작시간(080000);
input : 종료일(20151117),종료시간(153000);
var : cond(false);
if sdate == 시작일 and (stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간)) then
Cond = true;
if sdate == 종료일 and (time == 종료시간 or (time > 종료시간 and time[1] < 종료시간)) then
Cond = false;
if sdate > 종료일 then
Cond = false;
if cond == true then{
var1 = var1+(IFF(C>=O,V,0));
var2 = var2+(ifF(C<O,V,0));
VAR3 = VAR1 - VAR2;
plot10(var3,"var3");
PlotBaseLine1(0,"0");
}
수식2) 유럽장
input : 시작일(20151117),시작시간(153000);
input : 종료일(20151117),종료시간(213000);
var : cond(false);
if sdate == 시작일 and (stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간)) then
Cond = true;
if sdate == 종료일 and (time == 종료시간 or (time > 종료시간 and time[1] < 종료시간)) then
Cond = false;
if sdate > 종료일 then
Cond = false;
if cond == true then{
var1 = var1+(IFF(C>=O,V,0));
var2 = var2+(ifF(C<O,V,0));
VAR3 = VAR1 - VAR2;
plot10(var3,"var3");
PlotBaseLine1(0,"0");
}
수식3)미국장
input : 시작일(20151116),시작시간(213000);
input : 종료일(20151117),종료시간(070000);
var : cond(false);
if sdate == 시작일 and (stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간)) then
Cond = true;
if sdate == 종료일 and (time == 종료시간 or (time > 종료시간 and time[1] < 종료시간)) then
Cond = false;
if sdate > 종료일 then
Cond = false;
if cond == true then{
var1 = var1+(IFF(C>=O,V,0));
var2 = var2+(ifF(C<O,V,0));
VAR3 = VAR1 - VAR2;
plot10(var3,"var3");
PlotBaseLine1(0,"0");
}
참고 수식)
input: p1(14);
input : 아시아시작(081000),아시아종료(153000);
input : 유럽시작(153000),유럽종료(213000);
input : 미국시작(213000),미국종료(070000);
var : Tcond1(false),Tcond2(false),Tcond3(false);
var : V1(0),V2(0),V3(0);
Var1 =rsi(p1);
If stime == 아시아시작 or (stime > 아시아시작 and stime[1] < 아시아시작) Then
{
Tcond1 = true;
V1 = Var1;
}
If stime == 아시아종료 or (stime > 아시아종료 and stime[1] < 아시아종료) Then
{
Tcond1 = false;
}
If stime == 유럽시작 or (stime > 유럽시작 and stime[1] < 유럽시작) Then
{
Tcond2 = true;
V2 = Var1;
}
If stime == 유럽종료 or (stime > 유럽종료 and stime[1] < 유럽종료) Then
{
Tcond2 = false;
}
If stime == 미국시작 or (stime > 미국시작 and stime[1] < 미국시작) Then
{
Tcond3 = true;
V3 = Var1;
}
If stime == 미국종료 or (stime > 미국종료 and stime[1] < 미국종료) Then
{
Tcond3 = false;
}
plot1(var1,"updn");//속성에서 그래프종류는 선그래프
if Tcond1 == true Then
plot2(V1,"아시아기준");//속성에서 그래프종류는 일자그래프
if Tcond2 == true Then
plot3(V2,"유럽기준");//속성에서 그래프종류는 일자그래프
if Tcond3 == true Then
plot4(V3,"미국기준");//속성에서 그래프종류는 일자그래프
plotbaseline2(50,"50");
2015-11-18
239
글번호 92507
답변완료
문의 드립니다.
input: p20(20);
var: bdy(0), mid(0), hb(0);
bdy=abs(c-0);
mid=(h+l)/2;
hb=highest(bdy,p20);
if hb == bdy then var1=mid;
plot1(var1[1], "중심값");
반대 되는 수식을 문의 드립니다.
대칭 되는 수식입니다. 수고 하세요
2015-11-18
164
글번호 92503
답변완료
시스템성능보고서
복수의 매수(예 b1.......b10) 및 매도(예 S1......S10 )의 진입 조건이 설정된 시스템식을
일봉차트에 적용하는경우
실제 주문과 신호가 여러차례 발생 하고
그에 따라 성능보고서 상에도 동일하게 표시되고 있습니다.
그런데 다시 부팅을 하게 되면 기 발생 하였던 여러차례의 신호 발생내역이 대부분 삭제되고
한 두개 또는 서너개 정도의 신호발생 내역만 차트와 성능보고서 상에 나타납니다.
이때에 잔존하는 신호와 삭제되는 신호는
각기 어떠한 원인으로 달리 나타나는 것인가요?
기 발생한 모든 거래내역이 성능보고서와 차트상에서 재 부팅 후에도 삭제되지 아니하고
실제 발생한 내역과 동일하게 나타 날 수 있도록 하려면
시스템식의 작성을 어떻게 하여야 합니까?
2015-11-18
167
글번호 92500
세발낚지 님에 의해서 삭제되었습니다.
2015-11-17
0
글번호 92499
답변완료
글번호 45050 재질문
안녕하세요?
글번호 45050번 재질문합니다.
기존에 요청드렸던 함수에 매수신호와 매도신호를 바꾸고자 합니다.
그런데 답신 주신 함수를 돌려보면 전혀 다른 신호가 발생됩니다.
기존 시나리오에 매수를 매도로 매수청산을 매도청산으로 매도를 매수로 매도청산을 매수청산으로 바꾸고 싶은데 기술적으로 의도하지 않은 또 다른 함수가 생성되버리는 이유가 왜 일까요?
2015-11-17
154
글번호 92498