커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4318
글번호 230811
답변완료
문의드립니다.
안녕하세요.
포지션 "진입횟수"를 "1일 3회"로 제한하는 함수식 부탁드립니다.
항상 감사합니다. 즐거운 주말 보내세요~
2017-10-27
144
글번호 113717
답변완료
종가 매수-시가 매도
1. 장마감 동시호가 때 시장가(종가)로 매수 --> 다음날 장시작 동시호가 때 시장가(시초가)로 매도
2. 오후 2시 30분에 시장가로 매수 --> 다음날 장시작 동시호가 때 시장가(시초가)로 매도
코딩 부탁드립니다~ 감사합니다
2017-10-29
164
글번호 113716
답변완료
1일전부터 5일전까지의 청산손익이?
1일전부터 5일전까지의 청산손익이 5포인트 이상일 경우 참이되는 조건식 부탁드립니다
2017-10-27
146
글번호 113715
답변완료
예스스팟
항상 감사드립니다.
다름아니고 수식작성의 답변은 즉각적으로 올라오는데 반하여
예스스팟의 질문내용은 일주일째 기다리고 있는데 답변이 없어서 말쓰드립니다.
기본적으로 예스스팟의 답변은 안하는 걸로 어디에서 보았는데
1. 간단한 답변은 해 주시는 것은 어떨지..
2. 답변이 시간상 어렵다면 예스스팟쪽만 답변 유료화를 하는것은 어떤지요..
수식은 연습이니까 언제든지 바꾸는 것에 대한 부담감이 없는 반면에
예스스팟은 실제 주문이 들어가는 것이라 함부로 건드리기가 힘드네요..
답변 부탁드립니다.
2017-10-27
168
글번호 113714
답변완료
장기 피보나치 시스템 신호 입니다! 검토 좀 부탁드려요!
아래는 장기 피보나치 신호 로직입니다!
5분에서 테스트를 하고 있는데요 몇가지 오류가 있는것 같습니다!
부탁드립니다!
1. 신호가 나왔다 안나왔다 합니다!
2. 신호가 5분 늦게 발생하는 문제가 있습니다.
예> 09:30분에 장기 로그선을 터치 했으면, 09:30분에 매도 신호가 나왔어야 하는데
그런데, 09:35분에 신호가 발생했습니다.
예> 장기 피보나치 로그선을 위로 주가가 뚫고 올라갔으면, 다음봉에서 매수가 되었어야
하는데, 5분 늦게신호가 발생합니다.
// 장기 피보나치 로그선 기법 시스템 코드 //-----------
Var : WH(0), WL(0); // WH : 주중 최고, DH : 일중 최고
var : DH(0), DL(0); // WL : 주중 최고, DL : 일중 최고
var : i(0), j(0); // 임시변수
var : MKPos(0); // Market Position
var : onetick(0.05); // 1틱 가치
var : logT(0); // 수동 손절을 하기 위해 대기가 필요한 변수
var : NoTick(2); // 수동 손절 틱수 : 2틱
array : FLog[7](0); // 장기 로그선 값을 저장할 배열
array : FLogPos[2](0); // 로그선의 위치 값을 저장(0~6), 매수 : 0, 매도 : 1MKPos = marketposition;
WH = 263.25;
WL = 226.90; // 장기 피보나치 로그선 값을 배열에 저장
FLog[0] = WH; // "연중 최고선"
FLog[1] = 10^((LOG10(WH) -(LOG10(WH)-LOG10(WL))*0.236)); //"중기 23.6선"
FLog[2] = 10^((LOG10(WH) -(LOG10(WH)-LOG10(WL))*0.382)); //"중기 38.2선"
FLog[3] = 10^((LOG10(WH) -(LOG10(WH)-LOG10(WL))*0.500)); //"중기 50선"
FLog[4] = 10^((LOG10(WH) -(LOG10(WH)-LOG10(WL))*0.618)); //"중기 61.8선"
FLog[5] = 10^((LOG10(WH) -(LOG10(WH)-LOG10(WL))*0.764)); //"중기 76.4선"
FLog[6] = WL; // "연중 최저선"
// 손절매(자동 손절) : 0.6P
SetStopLoss(12 * onetick, Pointstop);
// >>> 매수 <<<
// 현재 5분봉의 시가가 로그선의 값과 같거나 로그선 값의 아래에 있다가
// 현재 5분봉의 종가가 로그선의 위에 올라온 경우,
// 다음봉 이후로 저가가 로그선 1틱 위보다 같거나 작은 경우 시장가 매수for i = 0 to 6
{
if(MKPos == 0 ) and (O <= FLog[i]) and ( C > Flog[i]) then
{
logT = 1;
FLogPos[0] = i;
}
}
if (logT == 1) and (O >= (FLog[FLogPos[0]])) and (L <= (FLog[FLogPos[0]] + onetick * NoTick) )then
{
buy( "Buy" , AtStop, FLog[FLogPos[0]] + onetick * NoTick);
logT = 0;
}
// 매수 수동 손절 : 1틱 (MIT)
if (MKPos == 1) and (O >= FLog[FLogPos[0]]) and ( C < FLog[FLogPos[0]]) then
{
if (O <= FLog[FLogPos[0]]) and (H >= (FLog[FLogPos[0]] - onetick * NoTick )) then
{
ExitLong("exit_buy", atStop, FLog[FLogPos[0]] - onetick * NoTick );
// 매도로 스위칭
sell( "Sell_SW", AtStop, FLog[FLogPos[0]] - onetick * NoTick );
}
}
// >>> 매도 <<<
// 현재 5분봉의 시가가 로그선의 값과 같거나 로그선 값의 위에 있다가
// 현재 5분봉의 종가가 로그선의 아래로 내려온 경우,
// 다음봉 이후로 고가가 로그선 1틱 위보다 같거나 큰 경우 시장가 매도for i = 0 to 6
{
if(MKPos ==0) and (O >= FLog[i]) and ( C < Flog[i]) then
{
logT = 2;
FLogPos[0] = i;
// MessageLog("L75> logT : %.f Fiboline %.2f Position : %.f Open : %.2f Close : %.2f", logT, FLog[i], FlogPos[0], O, C);
}
}
if (logT == 2) and (O <= FLog[FLogPos[0]]) and (H >= (FLog[FLogPos[0]] - onetick * NoTick )) then
{
sell( "Sell", AtStop, FLog[FLogPos[0]] - onetick * NoTick );
logT = 0;
}
// MessageLog("L51> logT : %.f | Open %.2f <= %.2f | High %.2f >= %.2f MKPos : %.f", logT, O , FLog[FlogPos[0]], H, FLog[FlogPos[0]] - onetick, MKPos);
// 매도 수동 손절 : 1틱 (MIT)
if (MKPos == -1) and (O <= FLog[FLogPos[0]]) and ( C > FLog[FLogPos[0]]) then
{
// debug
messageLog("Line 95");
if (O >= FLog[FLogPos[0]]) and (L <= (FLog[FLogPos[0]] - onetick * NoTick )) then
{
ExitShort("exit_sell", atStop, FLog[FLogPos[0]] + onetick * NoTick );
// +매수로 스위칭
buy( "Buy_SW" , AtStop, FLog[FLogPos[0]] + onetick * NoTick );
}
}
// 매수 청산
// if (MKPos == 1) or (MKPos == -1) then /시간
if (stime == 153000) then
{
SetStopEndofday(1530);
}// messageLog("stime : %.f ", stime);
2017-10-27
258
글번호 113713
답변완료
항셍 매매 시간
항셍에서 1개 전의 캔들의 저가가 당일저가를 찍고 양봉 2개면 매수하라는 수식을 아래와 같이 작성하여 적용하면 분명 차트는 조건을 만족하는데 신호는 발생이 안됩니다.
아마도 당일 저가에 대한 기준이 다른 것 같아서 그런것 같은데요.
저는 오전 10시 15분 이후를 당일로 보고 아래 수식을 작성했으나 차트에서는 당일의 기준이 오전 10시 15분이 아닌 것 같습니다.
오전10시 15분 이후부터 당일로 적용되도록 수식 수정좀 부탁드립니다.
if L[1] == daylow and countif(C > O, 2) == 2 Then
buy("매수",OnClose);
2017-10-27
174
글번호 113708
답변완료
문의드립니다.
건강관리 잘하시구요.
1.진입조건
매수진입 : 시가가 5일선 아래일때의 현재봉이 이전 30개봉 중에서
최저점의 가격 보다 높으면 매수진입
(매도는 반대)
2.청산조건
매수청산 : 음봉이 연속 2개 나오면 다음 봉 시가에서 청산(매도청산은 반대)
3.수익합계 화면출력
시간 : 오전 10시 ~ 밤 11시 까지 매매시간 설정
합계 : 각각의 포지션 청산후 익절과 손실 및 합산 수익 최종값을
실시간으로 현재 봉의 고점 위에 출력
예> 익절 : 00 틱
손실 : 00 틱
합계 : 00 틱
4.질문
아래와 같이 지표에서 plot 으로 화면에 가로선을 그린후 지정한 범위가 되면
가로선이 없어지게 하려고 합니다. 어떻게 하면 되나요?
mav1(5일선), mav2(20일선)
if CrossDown(mav1,mav2) and C < mav1 Then{
value1 = C;
}
if mav2 > mav2[1] Then plot1(value1);
이렇게 가로선을 그린후 20일선 우하향으로 바뀌면 가로선을 사라지게 하고 싶습니다.
즐거운 주말 되세요.
2017-10-27
156
글번호 113696
답변완료
문의드립니다.
1. 5봉이내 60봉 최저가
2. 1봉전기준 2봉연속 저점을 높이는 양봉발생
3. 0봉전기준 당일시가가 이전 5봉의 시, 고가보다 높게시작(갭시작)
수고하세요~
2017-10-27
173
글번호 113695
답변완료
부탁 드립니다.
도움 주심에 감사 드립니다.
예를 들어 10분봉 차트에서
60분봉 지표(타주기, 변수 처리)를 보고 싶습니다.
미리 감사 드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),idx(0);
Array : VV[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
#차트 과거봉 전체 스캔
for cnt2 = 1 to idx{
#Price대비 +- Per%안에 종가가 형성된
if C[cnt2] <= Price*(1+Per/100) and C[cnt2] >= Price*(1-Per/100) and
V[cnt2] > VV[cnt1] and
(cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then{
VV[cnt1] = V[cnt2];
#거래량순 상위 cnt1번째 값추세선 출력
#시가선
TL_Delete(OTL[cnt1]);
OTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],O[cnt2],sdate,stime,O[cnt2]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
#고가선
TL_Delete(HTL[cnt1]);
HTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],H[cnt2],sdate,stime,H[cnt2]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
#저가선
TL_Delete(LTL[cnt1]);
LTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],L[cnt2],sdate,stime,L[cnt2]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
#종가선
TL_Delete(CTL[cnt1]);
CTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],C[cnt2],sdate,stime,C[cnt2]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
#거래량순 상위 cnt1번째 값텍스트 출력
#시가선값
Text_Delete(OTx[cnt1]);
OTx[cnt1] = Text_New(sdate,stime,O[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(O[cnt2],0));
Text_SetStyle(OTx[cnt1],0,0);
#고가선값
Text_Delete(HTx[cnt1]);
HTx[cnt1] = Text_New(sdate,stime,H[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(H[cnt2],0));
Text_SetStyle(HTx[cnt1],0,0);
#저가선값
Text_Delete(LTx[cnt1]);
LTx[cnt1] = Text_New(sdate,stime,L[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(L[cnt2],0));
Text_SetStyle(LTx[cnt1],0,0);
#종가선값
Text_Delete(CTx[cnt1]);
CTx[cnt1] = Text_New(sdate,stime,C[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(C[cnt2],0));
Text_SetStyle(CTx[cnt1],0,0);
#점출력
Text_Delete(Tx[cnt1]);
Tx[cnt1] = Text_New(sdate[cnt2],stime[cnt2],C[cnt2],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
}
}
}
2017-10-27
166
글번호 113686