커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8103
글번호 230811
답변완료
오늘의 주가표시6
안녕하세요 관리자님 날씨가 무지 덮습니다.
이번주가 아닌 前주의 시가, 최고가, 최저가에서 오늘의 주가가 각각 표현되도록 하는 이격도를 구현하고 싶습니다. 부탁드립니다.
2018-07-16
282
글번호 120649
답변완료
피보나치 지표 부탁드립니다.
1. 일봉챠트 상에 120봉 기준으로 최고가와 최저가를 잊는 피보나치 조정대를
연속되는 선으로 봉챠트 위에 보이게 할수 있을까요??
2. 분봉챠트 상에서 하루 이내에 피보나치 조정대를
연속되는 산으로 봉챠트 위에 보이게 할수 있을까요??
2018-07-16
344
글번호 120648
답변완료
에러 수정 요망
1.어느날 우연히 통화 중에 김**차장님이 알려준 시스템 성능보고서를 보는 법과 print하는 법을 배워서 고맙게 활용하다 일년전에 물어봤던 수식지왕님의 시스템을 활용하고자 합니다
2. 질문(1번,2번) 내용은 해당 위치에 써 놓았음(//를 지워서 검증이 에러가 나도록 했음)
3. 전략챠트에 어떤 시스템을 띄워놓으면 신호가 해당되면 알려주던데 오늘 화면분할을 실행시켜 25개 띄워놓고 전체를 누르고 적응시켜봤는데 어떤 신호도 안나오던데 혹시 한종목만 나오는 것인지요?
4.마지막으로 검색 종목을 엑셀로 보내지던데 역으로 엑셀의 종목을 관심종목으로 가져오는 방법이 있는지요??
#==========================================#
# 시스템명 : 고저라인_자동추세선_ver_15
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
#==========================================#
Input:length(10),추세선연장(5),추세판단범위(10),진입횟수제한(1),시작(20170601),종료(20180716),
#ssssssssssssssssssssssssssssssssss
파동선두께(7),추세선두께(0),파동선색(red),수치표시(1);
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Var:j(0),jj(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),진입횟수(0),
TL1(0),TL2(0),TL3(0),Text1(0),
고추세최종(0),저추세최종(0),고ID(0),저ID(0);
Array:고[100,4](0),저[100,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
if sDate == 시작 or (sDate > 시작 and sDate[1] <시작) Then{
질문1) 50일 정도만 검색하려는데 맞는지??
#ssssssssssssssssssssssssssssssssss
If Index == 0 Then
{
고[1,1] = C;
저[1,1] = C;
}
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Condition1 = Highest(C,length) == C and 최종고가 <> C;
Condition2 = Lowest (C,length) == C and 최종저가 <> C;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = C; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
진입횟수 = 0;
For j = 100 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = C;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
#ssssssssssssssssssssssssssssssssss
If 수치표시 == 4 Then
{
Text1 = Text_New(sDate,sTime,고[1,3],NumToStr(고[1,4],2));
Text_SetStyle(text1,2,2);#중앙에 위치(기본은 봉의 좌측에 표시됩니다);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,파동선색);
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
}
Else If 고[1,1] < C Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = C;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
#ssssssssssssssssssssssssssssssssss
If 수치표시 == 4 Then
{
Text_SetLocation(Text1,sDate,sTime,고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
}
/* 고점추세선 */
If 고[2,2][1] <> 고[2,2] Then // 고2의 Index값이 변동 없음 즉, 새로운 고점이 생기지 않았음
{
고추세최종 = 0;
For j = 3 To 추세판단범위
{
If 고[2,1] < 고[j,1] Then
{
고추세최종 = (고[2,1] - 고[j,1])/(고[2,2] - 고[j,2]) * (Index - 고[j,2]) + 고[j,1];
TL2 = TL_New(고[j,3],고[j,4],고[j,1],sDate,sTime,고추세최종);
고ID = j;
#ssssssssssssssssssssssssssssssssss
TL_SetSize(TL2,추세선두께);
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetColor(TL2,RED);
j = 100;
}
}
}
Else If 고추세최종[1] > 0 Then
{
고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1];
TL_SetEnd(TL2,sDate,sTime,고추세최종);
}
If 저추세최종[1] > 0 Then
{
저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1];
TL_SetEnd(TL3,sDate,sTime,저추세최종);
}
최종꼭지점 = "고점";
If 진입횟수 < 진입횟수제한 and
고추세최종 > 0 and 고추세최종 < C and c>3000 and v>100000 Then
{ Text1 = Text_New(sDate,sTime,고[1,3],NumToStr(고[1,4],2));
Text_SetStyle(text1,2,2);#중앙에 위치(기본은 봉의 좌측에 표시됩니다);
Buy("매수");
}
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = C;
If 최종꼭지점 == "고점" then
{
진입횟수 = 0;
For j = 100 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = C;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
#ssssssssssssssssssssssssssssssssss
If 수치표시 == 4 Then
{
Text1 = Text_New(sDate,sTime,저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,파동선색);
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
}
Else If 저[1,1] > C then
{
저[1,1] = C;
저[1,3] = sDate;
저[1,4] = sTime;
저[1,2] = Index;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
#ssssssssssssssssssssssssssssssssss
If 수치표시 == 4 Then
{
Text_SetLocation(Text1,sDate,sTime,저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
}
/* 저점추세선 */
If 저[2,2][1] <> 저[2,2] Then
{
저추세최종 = 0;
For j = 3 To 추세판단범위
{
If 저[2,1] > 저[j,1] and 저[j,1] > 0 Then
{
저추세최종 = (저[2,1] - 저[j,1])/(저[2,2] - 저[j,2]) * (Index - 저[j,2]) + 저[j,1];
TL3 = TL_New(저[j,3],저[j,4],저[j,1],sDate,sTime,저추세최종);
저ID = j;
#ssssssssssssssssssssssssssssssssss
TL_SetSize(TL3,추세선두께);
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetColor(TL3,green);
j = 100;
}
}
}
Else If 저추세최종[1] > 0 Then
{
저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1];
TL_SetEnd(TL3,sDate,sTime,저추세최종);
}
If 고추세최종[1] > 0 Then
{
고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1];
TL_SetEnd(TL2,sDate,sTime,고추세최종);
}
최종꼭지점 = "저점";
If 진입횟수 < 진입횟수제한 and
저추세최종 > 0 and 저추세최종 > C Then
{
Sell("매도");
}
}
#==========================================#
If 처리구분 == "" Then
{
If Index - 고[2,2] <= 추세선연장 Then
{
If 고추세최종[1] > 0 Then
{
고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1];
TL_SetEnd(TL2,sDate,sTime,고추세최종);
}
}
Else
{
고추세최종 = 0;
}
If Index - 저[2,2] <= 추세선연장 Then
{
If 저추세최종[1] > 0 Then
{
저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1];
TL_SetEnd(TL3,sDate,sTime,저추세최종);
}
}
Else
{
저추세최종 = 0;
}
If MarketPosition > 0 and TL2[1] == TL2 and
고추세최종 > 0 and 고추세최종[1] <= C[1] and 고추세최종 > C Then
ExitLong("매수유지");
If MarketPosition < 0 and TL3[1] == TL3 and
저추세최종 > 0 and 저추세최종[1] >= C[1] and 저추세최종 < C Then
ExitShort("매도필수");
}
If ((최종꼭지점 == "고점" and MarketPosition == 1) or
(최종꼭지점 == "저점" and MarketPosition == -1)) and
MarketPosition[1] != MarketPosition Then
{
진입횟수 = 진입횟수 + 1;
}
if TotalTrades > TotalTrades[1] Then
{
Print("0716.CSV",",%s,포지션,%.f,진입명,%.s,진입일,%.f,진입시간,%.f,진입가격,%.2f,청산명,%.s,청산일,%.f,청산시간,%.f,청산가격,%.2f,손익,%.2f",
SymbolName,MarketPosition(1),LatestEntryName(1),EntryDate(1),EntryTime(1),EntryPrice(1),LatestExitName(1),ExitDate(1),ExitTime(1),ExitPrice(1),PositionProfit(1));
}
질문2)
1.진입명과 청산명을 print해보고 싶고(제가 해보니까 공란으로나오네요)
2. 시스템 성능 보고서는 진입후 청산이 되기전에는 "평가"라고 나오는데
역시 출력될 때 보고서 처럼 청산 종류에 평가라고 나왔으면 합니다.
제가 엑셀을 보면 진입과 청산된 것 만 나오고 진입해서 진행중인 종목의 결과는 안나오네요.
2018-07-16
606
글번호 120647
답변완료
please check attaschment
please check attaschment.
always thank you.
2018-07-17
296
글번호 120646
답변완료
다시 문의 드립니다.
아래와 같이 여러번에 걸쳐 친절히 답을 주셨는데
제가 질문을 잘 못한것 같아 다시 질문 드립니다..
1,2,3,4...... 진행되다가 -1,-2,-3,-4.... 로 전환 될려면
전환 기준은 예를 들어 4번에서 전환되는 기준은 "4번이 만들어진 양봉의 시가보다 -1이 만들어지는 음봉의 종가가 낮아야 한다"를 기준으로 해서 전환되도록 부탁 드리겠습니다.
그 반대의 경우도 마찬가지입니다.
그러면 제일 처음 1 또는 -1이 만들어지는 기준이 필요한데 그 기준은
1이 발생되는 기준은 최근 20봉중에 최저점이 있었고 현재봉은 최저점 보다 높아야 한다.
이기준을 넣어서 부탁 드리겠습니다.
감사합니다.
var : tx(0);
if bdate != bdate[1] Then
{
var1 = 0;
var2 = 0;
var3 = 0;
}
Else
{
if C < O and C[1] > O[1] and (var1 == 0 or (var1 != 0 and C[1] > var1)) Then
{
var1 = C[1];
var2 = var2+1;
var3 = 0;
tx = Text_New(sdate,stime,L-PriceScale*1,NumToStr(var2,0));
Text_SetStyle(tx,2,0);
Text_SetColor(tx,red);
}
if C > O and C[1] < O[1] and (var1 == 0 or (var1 != 0 and C[1] < var1)) Then
{
var1 = C[1];
var2 = 0;
var3 = var3-1;
tx = Text_New(sdate,stime,H+PriceScale*1,NumToStr(var3,0));
Text_SetStyle(tx,2,1);
Text_SetColor(tx,BLUE);
}
}
2018-07-16
272
글번호 120633
답변완료
부탁 드립니다.
아래식에서
1분봉 차트에서 거래량이 없을경우 즉 k값이 zero일때
지표값이 비정상적인 값을 나타내고 있습니다.
이런 경우에는 어찌하면 좋은지요?
예를 든다면
즉 k=v가 0 일때는 건너뛰고 계산을 하지 않는 수식이 가능 하겠는지요?
미리 감사 드립니다.
input:period(10);
var:k(0),a(0);
k=v;
a=(avg((1/((OPEN/HIGH)/(CLOSE/(k*100))))*10,Period))
+ (avg(((CLOSE)/(CLOSE+(k*100)))*100,Period))
+ ((avg(OPEN,Period))/(avg(HIGH,Period))*10);
plot1(a);
2018-07-16
274
글번호 120632
답변완료
문의 합니다
안녕하세요
포지션의 진입이 이뤄진 날의 싯가 와 종가를 나타내는 수식을 부탁합니다
스위칭매매에서 사용하려고 합니다
감사합니다
2018-07-16
247
글번호 120631
답변완료
문의드립니다.
수고하십니다.
청산 수식 문의드립니다.
1. 매도 진입하고 최대수익이 50틱 이상 되고 MACD가 골든 크로스 되면 청산
2. 1번의 반대
2018-07-16
239
글번호 120630
답변완료
수식부탁드립니다
안녕하세요?
1. 옵션 두 행사가 가격이 30틱 벌어지면 상승쪽은 빨간색, 하락쪽은 파란색으로 나오게 부탁듧니다.(비교차트에서)
2.전일 종가와 달일 시가가 30틱 이상 벌어지면 선이 나오게 부탁드립니다.
또 당시가에서 30틱 벌어지면 선이 나오게.
감사합니다.
2018-07-16
263
글번호 120627