커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7658
글번호 230811
gagamel 님에 의해서 삭제되었습니다.
2012-04-25
8
글번호 50497
답변완료
문의드림니다
항상 빠르고 성실한 답변 거듭 감사말씀 드림니다
지난번 답변해주신 수식 보완 하고자 재문의 드림니다
지난번 답변해 주신 하단 부분에 위치한 아래 수식에서
3번이상 골드크로스가 완성된경우에 최근 골드시점을 1번, 가운데골드시점을 2번, 가장먼 과거시점의 골드크로스를 3번골드 시점이라 할 경우
1)
3번골드시점 이후의 최고가가 3번골드시점의 주가 +1p를 상향돌파 후 다시 하향돌파
하면 하향돌파 후 최저가가 3번골드시점의 주가보다 높고
2)2번골드시점 이후의 최고가가 2번골드시점의 주가 +2p를 상향돌파 후 다시 하향돌파
하면 하향돌파 후 최저가가 2번골드시점의 주가보다 높으면 으로
위 부분만 변경하여 수식작성 부탁드림니다
//////////////////// 변경작성요망 부분 /////////////////////////////
#골든크로스 이후 다음골든크로스 사이에 골든크로스시 주가+1보다 큰 고가 발생하면 Acond는 true
if H >= UPclose+1 Then
ACond = true;
#Acond가 true가 된 이후에 저가가 골든크로스시 주가보다 작은 값이 발생하면 Bcond는 true
if Acond == true and L < UPclose Then
Bcond = true;
}
////////////////////////////////////////////////////////////////////
//////////////////// 지난번 답변수식//////////////////////////
input : P1(12),P2(26),P3(9);
var : upcount(0),UPClose(0),UPClose1(0),UPClose2(0);
var : UpMACD(0),UpMACD1(0),UPMACD2(0),upHval(0);
var : UpIdx(0),UPidx1(0),UPidx2(0),upHval1(0);
var : Acond(false),Bcond(false),Acond1(false),Bcond1(false),Acond2(false),Bcond2(false);
var1 = macd(P1,P2);
var2 = ema(var1,P3);
if date != date[1] Then
upcount = 0;
if crossuP(var1,var2) Then{
upcount = upcount+1;
UPClose = C;
UPMACD = var1;
UPIdx = index;
Acond = false;
Bcond = false;
UPClose1 = UPClose[1];
UPMACD1 = UPMACD[1];
UPIdx1 = UPIdx[1];
Acond1 = Acond[1];
Bcond1 = Bcond[1];
UPClose2 = UPClose1[1];
UPMACD2 = UPMACD1[1];
UPIdx2 = UPIdx1[1];
Acond2 = Acond1[1];
Bcond2 = Bcond1[1];
}
if UPcount >= 1 Then{ #첫 골든크로스 이후 골든크로스간의 최고가 계산시작
#골든크로스 이후 다음골든크로스 사이에 골든크로스시 주가+1보다 큰 고가 발생하면 Acond는 true
if H >= UPclose+1 Then
ACond = true;
#Acond가 true가 된 이후에 저가가 골든크로스시 주가보다 작은 값이 발생하면 Bcond는 true
if Acond == true and L < UPclose Then
Bcond = true;
}
if crossup(var1,var2) Then{
if upcount >= 3 and #당일 최소 3번이상 골든크로스가 발생하고
UPClose > UPClose1 and UPClose1 > UPClose2 and
UPidx <= upidx1+10 and
Acond2 == true and Bcond2 == true Then
buy();
2012-04-25
353
글번호 50496
답변완료
문의
안녕하세요?
분봉에서 3일전부터 지금까지 10이평과 20이평이 60이평보다 위에 있고 ,
3일전 최고 상승율 일때 10이평을 AA라고 하고 2일전 최고 상승율일때 10이평을 BB라고 한다.
AA는 BB 보다 크고 ,
분봉에서 당일 시가상승율이 1% 이상이고 당일상승율은 -1%이하로 내려간적이 없고 10이평이 BB를 돌파시 매수식은 어떻게 되는지요?
(상승율 범위 :-15%~15% )
감사합니다
2012-04-25
336
글번호 50495
답변완료
옵션매수 부분청산에 관한 질문
안녕하세요?
옵션에서 매수 진입후
특정조건이 나오면 50%만 청산하고자 한다면 어떻게 수식을 작성해야하나요?
예를 든다면 아래와 같은 식입니다.
if marketPosition() == 1 and ( C <= O and O <= H*0.93 ) and BarsSincEentry(0) >= 5 Then
{
exitlong("긴위꼬리달린음봉청산", 50%만 청산);
cnt = cnt + 1;
}
감사합니다.
2012-04-25
339
글번호 50494
답변완료
Round함수가 좀 이상 문의좀 합니다.
어떨결에 발견한건데
첨부화일에 그림좀 봐주세요
MessageLog("Round(327.275, 2) [%.3f]", Round(327.275, 2));
MessageLog("Round(328.275, 2) [%.3f]", Round(328.275, 2));
2자리까지 반올림한다면 두값은 각각 327.28, 328.28 나와야 되지 않을까요?
그런데 첫번째건 첨부파일에서 처럼 327.27로 나오네요.
328 이상부터는 위의 소수점이 반올림이 되는데 미만은 반올림이 안되요
확인좀 부탁드립니다.
2012-04-25
422
글번호 50493
답변완료
답변 주신 글에 대한 재 질문
안녕하세요..
아래 원문 글에 대한 답변 주신거 같이 적었습니다.
확인을 해보니.. 숫자를 직접 적으면 제대로 작동을 하는데 for 문 내에서 변수로 할당을 하면 작동이상이 있네요..
아래 예에서 보면 for 루프 내에서 모든 값을 찍어 보면 v_cnt를 사용하나 안하나 값을 정상적으로 찍힙니다. 그런데 crossup 이 CrossUP(v_rsi[v_cnt], 50) 는 안먹고 CrossUP(v_rsi[3], 50) 은 먹네요.. ㅡㅡ;;
추가 실험으로 for 문 안에서 v_cnt_tmp로 하나 더 선언하고 v_cnt_tmp = v_cnt 한 다음에 CrossUP(v_rsi[v_cnt_tmp], 50)로 실험해 보니 이경우는 무조건 true가 나옵니다. ㅡㅡ
이거 방법이 없을까요?
var: v_cnt(0), v_rsi(0);
v_cnt =3;
v_rsi = RSI[14];
for v_cnt = 3 to 15
{
MessageLog("test: %.f / %.2f / %.f / %.2f / %.2f / %.2f / %.2f / %.2f",v_cnt, v_rsi[v_cnt]);
If CrossUP(v_rsi[v_cnt], 50) Then
MessageLog("v_cnt: %.f / %.f / %.f / %.2f / %.2f / %.2f / %.2f / %.2f",V_CNT, v_rsi[v_cnt]);
If CrossUP(v_rsi[3], 50) Then
MessageLog("no v_cnt: %.f / %.f / %.f / %.2f / %.2f / %.2f / %.2f / %.2f",V_CNT, v_rsi[v_cnt]);
}
--------------------------------------------------------
안녕하세요
예스스탁입니다.
해당 내용을 몇개 종목의 차트에 적용해 모두 살펴 보았지만
잘못 발생하는 봉이 없습니다.
골든크로스후 3봉후에 신호가 정상적으로 발생합니다.
적용 시스템
var : v_rsi(0);
v_rsi = RSI(14);
if CrossUP( v_rsi[3], 50) Then
buy();
if CrossDown( v_rsi[3], 50) Then
ExitLong();
적용 지표
var : v_rsi(0);
v_rsi = RSI(14);
plot1(V_rsi);
PlotBaseLine1(50);
지표와 같이 적용 후 확인해 보신후에
이상이 있는 신호를 캡쳐하셔서 그림을 올려주시기 바랍니다.
즐거운 하루되세요
> WT_nazilo75 님이 쓴 글입니다.
> 제목 : 수식 질문
> Crossup 함수를 사용해서 아래와 같이 과거 지표에 적용을 하였더니 제대로 작동을 안하는거 같습니다.
v_rsi = RSI(14);
CrossUP( v_rsi[3], 50)
//3봉전의 rsi가 50을 초과 돌파 하면
위와 같이 하면 CrossUP 내부에서 v_rsi[4] 의 값과 v_rsi[3] 의 값이 비교 되어야 할터인데 아마도 v_rsi[1]과 비교 하는거 같네요..
과거 데이터 에도 먹히게 하려면 어찌 해야 할까요? CrossUP을 풀어서 적용을 해야 할거 같은데 가이드 부탁드립니다.
2012-04-25
430
글번호 50492
답변완료
모든 종목의 지수이동평균값
모든 종목의 전일 또는 특정일의 지수이동평균값(예를들면 5일 지수이동평균값)을 일괄로 수집해서 엑셀화일로 저장할 수 있는 방법이 있나요?
스토캐스틱의 %K값도 수집과 저장이 가능한가요?
답변 부탁드립니다. 수고하세요.
2012-04-25
351
글번호 50486
답변완료
수평선 긋기 부탁드립니다..
안녕하세요..
수평선 긋기 부탁드립니다..
전일 고가
전일 저가
금일 5분봉 첫봉의 고가
금일 5분봉 첫봉의 저가
5분봉 차트와
1분봉 차트에서 각각 보고 싶습니다..
부탁드립니다..
2012-04-25
416
글번호 50485
답변완료
수식 부탁 드립니다.
전봉의 캔들이 마르보즈캔들(종가의 꼬리가 없는 캔들을 의미)로 끝나고
다음봉의 (고가or저가)가 볼린져 밴드 승수 2에 터치 할시에 진입.
ex)마르보즈캔들이 형성되고 다음봉이 상단 터치 할시에 매도, 하단 터치 할 시 매수.
꼭좀 부탁 드립니다..
2012-04-25
397
글번호 50479