커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3371
글번호 230811
답변완료
안녕하세요?
Var : value(0);
value = 0;
# 매수 / 매도청산
If CCI(9) > 0 Then
value = 1;
If MACD(12,26) > 0 Then
value = value+1;
If DIPlus(14) > DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) > StochasticsD(12,5,5) Then
value = value+1;
# 매수/매도청산
If value >= 3 Then
{
Buy("매수");
}
value = 0;
# 매도/매수청산
If CCI(9) < 0 Then
value = 1;
If MACD(12,26) < 0 Then
value = value+1;
If DIPlus(14) < DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) < StochasticsD(12,5,5) Then
value = value+1;
If value >= 3 Then
{
Sell("매도");
}
위 기준에 아래 것 을 합성 해 주시길 부탁 드립니다.
if H[1] == highest(H,5)[1] and
H[1] > max(C[1],O[1]) and
V[1] >= 5000 and
C[0] < C[1] Then
exitlong("매수분청산");
if L[1] == Lowest(L,5)[1] and
H[1] > max(C[1],O[1]) and
V[1] >= 5000 and
C[0] > C[1] Then
ExitShort("매도분청산");
if H[2] == highest(H,5)[1] and
H[2] > max(C[2],O[2]) and
V[2] >= 5000 and
C[0] < C[2] Then
exitlong("매수분올청산");
if L[2] == Lowest(L,5)[1] and
H[1] > max(C[1],O[1]) and
V[1] >= 5000 and
C[0] > C[1] Then
ExitShort("매도분올청산");
if L[1]==LOWEST(L,5) and
C[1]<O[1] and
C[1]>L[1] and
O[0]>L[0] and
C[1]==O[0] and
L[1]==L[0] and
C[0]>O[0] and
v>3000 Then
buy("집게발매수");
if H[1]==highest(H,5) and
C[1]>O[1] and
C[1]<H[1] and
O[0]<H[0] and
C[1]==O[0] and
H[1]==H[0] and
C[0]<O[0] and
v > 3000 Then
sell("집게발매도");
Input : length(10),종가사용여부(0),수치표시(0),표시(0);
input : 추세두께(1),추세상승색(red),추세하락색(blue);
input : 고점연결두께(2),고점연결색상(LGREEN);
input : 저점연결두께(2),저점연결색상(MAGENTA);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL11(0),TL12(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,추세두께);
TL_SetColor(TL1,추세상승색);
if 저[1,1] > 저[2,1] Then
{
if 표시 == 0 Then
TL_Delete(TL11);
TL11 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,저점연결색상);
TL_SetSize(TL11,저점연결두께);
}
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)+NewLine+"+"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱");
Text_SetStyle(Text1, 2, 1);
}
buy("추세매수");
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2)+NewLine+"+"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱");
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,추세두께);
TL_SetColor(TL1,추세하락색);
if 고[1,1] < 고[2,1] Then
{
if 표시 == 0 Then
TL_Delete(TL12);
TL12 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,고점연결색상);
TL_SetSize(TL12,고점연결두께);
}
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)+NewLine+"-"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱");
Text_SetStyle(Text1, 2, 0);
}
sell("추세매도");
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2)+NewLine+"-"+NumToStr((고[1,1]-저[1,1])/PriceScale,0)+"틱");
}
}
최종꼭지점 = "저점";
}
2020-05-31
1951
글번호 139386
답변완료
질문 올립니다.
안녕하세요.
늘 감사드립니다.
볼린저 밴드에서,
가격((완성봉의 C라야만 하는 것이 아니라, H든, L이든 여하튼 어떤 가격일지라도))이
두 봉 이상 연속으로
2.5*표준편차((2.5는 외부변수))의
위에 있다가, 안으로 내려 들어 올 때 그 순간 ((즉 봉 완성과 상관 없이)) 즉시 매도,
아래에 있다가 안으로 올라 들어 올 때 그 순간 ((즉 봉 완성과 상관 없이)) 즉시 매수,
매도의 청산은, 가격이 아래 하단 밴드((이 때는 2((외부변수))*표준편차인 보통 볼밴 하단))를 치는 순간 ((봉완성과 상관없이)) 즉시 청산,
매수의 청산은, 가격이 위 상단 밴드((이 때는 2((외부변수))*표준편차인 보통 볼밴 상단))를 치는 순간 ((봉완성과 상관없이)) 즉시 청산,
하는 식 부탁 드립니다.
대단히 감사합니다!
2020-05-30
1800
글번호 139385
cs아빠 님에 의해서 삭제되었습니다.
2020-05-30
23
글번호 139384
cs아빠 님에 의해서 삭제되었습니다.
2020-05-29
1
글번호 139383
답변완료
MarketPosition 질문 드립니다.
안녕하세요.
한 종목에 2개의 전략을 따로 사용한다고 가정해보면,
System 1 에서 해당 종목에 매수 포지션을 잡고 있다고 하면,
System 2 상에서는 아무 조건이 없으면, MarketPosition == 0 가 되는게 맞겠죠 ??
즉 같은 종목이라도 system 별로 따로 position 을 보는게 맞나요 ??
2020-05-29
2106
글번호 139382
답변완료
수정부탁합니다
> 제목 : 수정부탁해요
> 1.일봉기준 주가이평선이 5>20>60
2.일봉기준 Band%B(20.2)가 상승중
3.일봉기준 1일전 5일 이평선이 상승중일때
**60분봉에서 매매 활용할수있게 수정부탁합니다 (참조는 일봉 매매는분봉)
1 and 2 and 3 이면
mfi(14)하단기준선30이하 일때 현재봉이 2봉전 기준선보다 크다면 매수
> 안녕하세요
예스스탁입니다.
input : P1(5),P2(20),P3(60),BBP(20);
Input: MFiP(14);
var : MFIv(0),기준선(0);
var : cnt(0),sumV1(0),sumV2(0),sumV3(0),mav1(0),mav2(0),mav3(0);
var : sumV4(0),sumV41(0),BBmd(0),BBmd1(0);
var : sumV11(0),sumV12(0),mav11(0),mav12(0);
sumV1 = 0;
sumV11 = 0;
sumV12 = 0;
sumV2 = 0;
sumV3 = 0;
sumV4 = 0;
sumV41 = 0;
for cnt = 0 to max(P1,P2,P3,BBP)
{
if cnt < P1 Then
{
sumV1 = sumV1+DayClose(cnt);
sumV11 = sumV11+DayClose(cnt+1);
sumV12 = sumV12+DayClose(cnt+2);
}
if cnt < P2 Then
sumV2 = sumV2+DayClose(cnt);
if cnt < P3 Then
sumV3 = sumV3+DayClose(cnt);
if cnt < BBP Then
{
sumV4 = sumV4+DayClose(cnt);
sumV41 = sumV41 + DayClose(cnt+1);
}
}
maV1 = sumV1 / P1;
maV11 = sumV11 / P1;
maV12 = sumV12 / P1;
maV2 = sumV2 / P2;
maV3 = sumV3 / P3;
BBmd = sumV4 / BBP;
BBmd1 = sumV41 / BBP;
MFIv = MFI(MFiP);
기준선 = (highest(H,26)+lowest(L,26))/2;
if mav1 > mav2 and mav2 > mav3 and
BBmd > BBmd1 and
mav11 > mav12 and
MFIv < 30 and
기준선 > 기준선[2] Then
buy();
2020-05-31
2174
글번호 139381
답변완료
부탁드립니다.
안녕하세요?
수식작성부탁드립니다.
***진입
음봉 다음 도지(갯수 외부변수) 양봉(앞의 음봉보다 몸통이 클때만)에 매수진입.
양봉 다음 도지(갯수 외부변수) 음봉(앞의 양봉보다 몸통이 클때만)에 매도진입.
***청산
포지션 청산후 재진입.
익절(외부변수)
손절(외부변수)
부탁드립니다. 감사합니다.
2020-05-29
2152
글번호 139379
답변완료
문의드립니다.
안녕하세요?
아래와 같이 간단한 궁금증 문의드립니다.
1. 선물 30분봉으로 매매한다고 했을때,
2번째봉에서 매수신호가 나와서 매수주문을 냈는데, 계속 미체결 상태가 되다가
3번째봉이 생성되고 3번째봉에서 매도 싸인이 나와 매도주문을 낸다면
2번째에 매수주문낸건 자동취소가 되나요? 아님 유효하다가 매수주문 가격이 오면 매수가
되나요?
요약하자면, 미체결상태의 주문이 언제까지 유효한지가 궁금합니다. (다음주문에 영향을 주는지 등.)
2. 청산할때, 갑자기 호가가 튀어버리는 경우 청산이 안되서 간혹 다음날까지 포지션을 유지하는 경우가 있습니다. 청산시 시장가든 뭐든 무조건 청산하게 하는 방법은 없나요?
감사합니다.
2020-05-29
2126
글번호 139376
답변완료
가격표시
항상 감사합니다.
연장 수평선 오른쪽 끝에 가격을 표시하고 싶습니다.
2020-05-29
2289
글번호 139371