커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8105
글번호 230811
답변완료
함수질문드립니다.
1. 함수이름 pivotlowvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN begin
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1 BEGIN
IF SHBAR >= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN BEGIN
IF SHBAR > PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTLOWVSBAR = CURRENTBAR - PVTBAR
ELSE
PIVOTLOWVSBAR = -1;
////////
2. pivothighvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN BEGIN
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1 BEGIN
IF SHBAR <= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN BEGIN
IF SHBAR < PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTHIGHVSBAR = CURRENTBAR - PVTBAR
ELSE
PIVOTHIGHVSBAR = -1;
3. volatility
Inputs: Length(NumericSimple);
If CurrentBar >= 1 AND Length <> 0 Then {
If CurrentBar == 1 Then <----- currentbar = 1 이다를 표현하고 싶은데 안되네요...
Volatility = TrueRange;
Else
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
}
1 2 3의 경우 수식을 모두 숫자형으로 해야하는지요? 감사합니다.
2018-06-29
321
글번호 120158
답변완료
수식부탁합니다
안녕하세요>
항상 도움에 감사를 드립니다.
아래의 일봉지표를 5분봉 주기로 변환수식 부탁드립니다.
Input : RSIPeriod(14),sto1(14);
var : Sma1(0),Sma2(0),Sma3(0),StochRSI(0);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(0);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
Sma1 = RSIV;
Sma2 = lowest(Sma1,sto1);
Sma3 = Highest(Sma1,sto1);
StochRSI = ((Sma1-Sma2)/(Sma3-Sma2))*100;
Plot1(StochRSI, "StochRSI");
PlotBaseLine1(20, "기준선20");
PlotBaseLine2(80, "기준선80");
PlotBaseLine3(50, "기준선50");
2018-06-28
324
글번호 120157
답변완료
수식문의드립니다
저번에 소수점이하 지정가 매매수식으로 문의 드렸었는데
var1 = Floor(c);
if MarketPosition <= 0 and H < var1+0.75 Then
buy("b",AtStop,var1+0.75);
if MarketPosition >= 0 and L > var1+0.25 Then
sell("s",AtStop,var1+0.25);
이렇게 답주셨는데 이번엔 정수지정가 매매를 작성하려고 하는데 어떻게 작성해야하나요?
예를들어 XX70.00 매수진입매도청산, XX20.00 매도진입매수청산
시간지정매매도 답변주셨는데 되지를 않네요 한번 확인해주세요~
if (bdate != bdate[1] and stime >= 80000) or
(bdate == bdate[1] and stime >= 80000 and stime[1] < 80000) Then
Tcond = true;
if (bdate != bdate[1] and stime >= 150000) or
(bdate == bdate[1] and stime >= 150000 and stime[1] < 150000) Then
Tcond = false;
if (bdate != bdate[1] and stime >= 200000) or
(bdate == bdate[1] and stime >= 200000 and stime[1] < 200000) Then
Tcond = true;
if (bdate != bdate[1] and stime >= 010000) or
(bdate == bdate[1] and stime >= 010000 and stime[1] < 010000) Then
Tcond = false;
2018-06-28
244
글번호 120156
답변완료
dayindex 함수값 수정 보안 요청합니다...!!!
해외시장의 경우 시작종료시간이 사장또는 종목마다 일정치 않는데..
챠트수식을 구사할때..
dayopen, dayhigh, daylow, dayclose 등은
해당일 시작-종료시각에 맞추어 시가,고가,저가 종가로 제대로 나옵니다.
그런데..
dayindex는 그냥 24시간 단위로 끊어서 나옵니다..
이 때문에 좀 난감한 부분이 있습니다..
dayindex도
해당종목의 시작시간 종료시간을 기준으로 고쳐야 할것 같습니다.
검토 후 수정-보완 조치 좀 해주었으면 합니다.
dayopen, dayhigh, daylow, dayclose 등은 제대로인데..
왜... dayindex 값은 24시간단위로 끊어버렸는지..!!!
저의 경우에는 이때문에 해당일(시작,종료시각)의 dayindex를
시각으로 산출하여 따로 만들어 쓰고 있는데..좀 답답합니다..
2018-06-28
312
글번호 120155
데로예스 님에 의해서 삭제되었습니다.
2018-06-28
0
글번호 120154
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2018-06-28
4
글번호 120153
답변완료
문의 드립니다.
국내주식 일봉기준입니다
매수. 20이평선에 주가가 닿으면 매수(1회만 10만)
이후 주가가 하락해서 60 이평선에 닿으면 추가매수 (1회만 10만)
이후 주가가 하락해서 120 이평선에 닿으면 추가매수 (1회만 20만)
이후 주가가 하락해서 240 이평선에 닿으면 추가매수 (1회만 20만)
60이평까지 매수했는데 주가가 상승해서 20 이평선에 닿았으때는 매수금지
120 이평까지 매수했는데 주가가 사승해서 60 이평선에 닿았을경우 매수 금지
*******각 선에 반드시 한번씩만 매수가 될수 있었으면 좋겠습니다*********
*******주가가 상위이평선(예20이평) 과 60 이평선 사이있을때는 상위이평(20이평)에 닿아도 매수되지 않도록 부탁 드려요.
청산 : 3프로 30 %청산, 5프로 수익시 30% 청산, 7프로 수익시 전량 청산
2018-06-28
240
글번호 120152
답변완료
수정요청
매도일 경우와 매수일 경우를 따로 설정 할수 없을까요?
그리고 조건에 맞지 않게 진입을 하네요
매수조건은
20일선이 우상향하고, 캔들이 5일선 1틱이상 밑에서 시작할 경우, 진입은 시가 +1틱에서 매수
매도조건은
20일선이 우하향하고, 캔들이 5일선 1틱이상 위에서 시작할 경우, 진입은 시가 -1틱에서 매도
진입을 20일선 기준으로 진입을 하는것 같아서요
확인 부탁드릴게요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 요청드립니다.
>
안녕하세요
예스스탁입니다.
1.
var : T(0);
var1 = ma(c,20);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
if stime >= 160000 or stime < 020000 then
{
if T == 1 and NextBarOpen < var1 Then
buy("b",AtStop,NextBarOpen+PriceScale*1);
if T == -1 and NextBarOpen > var1 Then
sell("s",AtStop,NextBarOpen-PriceScale*1);
}
2
var : T(0);
var1 = ma(c,20);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
plot1(var1,"이평",iff(T== 1,RED,blue));
즐거운 하루되세요
> 이인 님이 쓴 글입니다.
> 제목 : 수식 요청드립니다.
> 수고 많으십니다.
시스템 수식 요청 드립니다.
<매수>
1. 20일선이 우상향
2. 캔들이 5일선 밑에서 시작
3. 시가 +1틱에서 진입
<매도>
1. 20일선이 우하향
2. 캔들이 5일선 위에서 시작
3. 시가 -1틱에서 진입
그리고 20일선 우상향할때 빨간색, 우하향할때 파란색으로 해주세요
그리고 매매 시간대는 16:00~02:00 으로 설정부탁드립니다.
감사합니다.
2018-06-28
242
글번호 120151
답변완료
함수요청
안녕하세요?
아래 글번호 58407번 답변 감사드립니다.
추가로 질문드립니다.
아래 함수로 홍콩 항셍선물 5분봉으로 거래 중입니다.
거래 중에 진입하고 이후 NNN개 번째 봉이전에 청산이 되면 당일 매매는 중지하고자 합니다.
함수 수정요청드립니다.
1. 진입하고 이후 NNN개 번째 봉이전에 청산이 되면 당일매매를 중지하고자 합니다.
2. 진입하고 이후 NNN개 번째 봉이전에 청산이 되는데 그 청산이 손절이면 당일매매를 중지하고자 합니다.
1번과 2번 식을 각각 요청드립니다.
감사합니다.
Vars : SP(0,data1), TickSize(0,data1);
Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2);
var : v1(0,data2),v2(0,data2);
SP = MarketPosition;
TickSize = PriceScale;
v1 = data2(H);
v2 = data2(L);
IF v1[10] > 0 Then
Begin
fstHH = data1(Highest(H, 5));
fstLL = data1(Lowest(L, 5));
sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]);
sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]);
End;
IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize);
IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL - TickSize);
2018-06-28
274
글번호 120143