커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4762
글번호 230811
답변완료
시스템식 다시한번 검토부탁드립니다
안녕하세요
항상 빠른 답변에 감사드립니다.
지난번 질의때 강제청산된 봉에서 발생되는 진입신호를 제어하려면 진입식에
(TotalTrades == 0 or TotalTrades == TotalTrades[1]) 을 추가하면 된다고
해서 진입식에 위 조건을 추가하여 시물레이션을 해보았더니 신호 발생을 100% 제어하지
못하는것 같습니다. 일부신호는 강제청산되는 봉에서도 신호가 발생합니다.(그림 참조)
무엇이 잘못되었나요? 혹시 위 수식 말고 다른 방법은 없는지요?
수고하십시요..
2015-09-15
115
글번호 90331
답변완료
라인설정
안녕하세요.
당일고점저점의75%라인
당일고점저점의50%라인(중심라인)
당일고점저점의25%라인
수고하세요.꾸벅
2015-09-15
121
글번호 90330
yes 님에 의해서 삭제되었습니다.
2015-09-15
20
글번호 90329
답변완료
전전고 전전저에도 수평선 수식 추가 부탁드립니다.
안녕하세요? 수고 많으십니다.
첨부 수식은 전고/전저에 수평선이 그어지는 파동선 수식입니다.
여기에 고점이 낮아지거나 저점이 높아지는 것을 확인할 수 있도록 전전고/전전저에도 수평선이 추가로 그어져서 항상 4개의 수평선이 보이면 좋겠습니다. 전전고에는 Red 굵기2로, 전전저에는 Blue 굵기2로 수치는 없이 만들어 주시면 더욱 감사하겠습니다.어려우시면 지금처럼 해 주시구요.
부탁드립니다. 감사합니다.
======================================
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),Tx1(0),tx2(0),V1(0),V2(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);
v1 = valArr[1];
}
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);
v2 = valArr[1];
}
Text_Delete(Tx1);
Tx1 = Text_New(sdate,stime,V1+PriceScale,NumToStr(V1,2));
Text_SetColor(tx1,MAGENTA);
Text_SetStyle(tx1,0,1);
Text_Delete(Tx2);
Tx2 = Text_New(sdate,stime,V2-PriceScale,NumToStr(V2,2));
Text_SetColor(tx2,CYAN);
Text_SetStyle(tx2,0,0);
2015-09-15
152
글번호 90328
답변완료
시스템 수식 수정 부탁드립니다.
아래의 수식을 특정 날짜부터 적용 가능하도록 수정 부탁드립니다.
예를 들어서 10월 1일로 날짜를 지정하면 그 날짜부터 시스템이 적용되면 됩니다.
- 아 래 -
input : 수량 (100);
if stime == 144800 and C < DayOpen and C < DayClose(1) Then
buy("매수",OnClose,def,수량);
if MarketPosition == 1 Then{
if MarketPosition == 1 and H < 상한가 Then
ExitLong("상한가매도",Atlimit,상한가);
if stime == 144800 and C > DayOpen and C > DayClose(1) and
C >= AvgEntryPrice*1.02 Then
Exitlong("매도",OnClose,def,"", 수량,1);
}
2015-09-14
92
글번호 90327
답변완료
문의
안녕하세요
var30 = data2((atr(2)/c)*100) ;
를 만들어 사용하고 있습니다.
var30>var30[1] 사용하고 싶은데 시스템이 인식을 못합니다.
어제의 var30 값을 var31에 저장하는 방법을 알려주십시오
미리 감사드립니다.
2015-09-14
99
글번호 90326
sonamoo 님에 의해서 삭제되었습니다.
2015-09-14
0
글번호 90325
답변완료
재문의
안녕하세요
답변수식이 이상해서 다시올림니다
매수조건
양봉두번째봉(첫번째양봉보다위에있어야함)종가에매수
청산은 첫번째봉과 두번째봉의 합산틱 청산
첫번째3틱봉 두번째2틱봉이면은 두합5틱수익청산
손절은 두번째봉의 시가이탈손절
매도진입조건
음봉두번째봉(첫번째음봉보다밑에있어야함)종가의매도 청산과 손절은 양봉과동일하게 하면은 됩니다
2015-09-14
91
글번호 90321
답변완료
Re : 안녕하세요...시스템식 관련 문의드립니다.
작성해주신 내용 잘 받아보았습니다.
당일고점과 당일저점을 해외선물 거래 시 적용할 때 영업일 기준으로 하고 싶은데
조언 부탁드려요...
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 안녕하세요...시스템식 관련 문의드립니다.
>
안녕하세요
예스스탁입니다.
var1 = ma(C,5);
var2 = ma(c,20);
if CrossDown(var1,var2) and C >= DayLow+PriceScale*20 Then
sell();
if CrossUp(var1,var2) and C <= DayHigh-PriceScale*20 Then
buy();
즐거운 하루되세요
> ysman 님이 쓴 글입니다.
> 제목 : 안녕하세요...시스템식 관련 문의드립니다.
> 시스템식은 이평크로스 5, 20 을 쓰려고 합니다.
이 때
매도 :
당일 저가 대비 현재가가 20틱 이상일 때 (상승했을때)
단기이평(5)이 장기이평(20)을 데드크로스 내면 매도 진입
매수 :
당일 고가 대비 현재가가 20틱 이하일 때 (하락했을때)
단기이평(5)이 장기이평(20)을 골든크로스 내면 매수 진입
시스템식 부탁드립니다.
건강조심하시고 감사드립니다.
2015-09-14
95
글번호 90316