커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1676
글번호 230811
답변완료
지표식 요청 드립니다.(타주기)
* 항상 많은 도움에 고맙습니다.
* 아래 수식을 120틱봉 에서 쓰고 있는데
타주기 240분봉 에서 신호가 나오면 선긋기 되도록 요청 드립니다.
즉 차트는 120봉 신호는 240봉에서 발생 하면 선긋기 입니다.
## 아래 수식
var: TL48(0);
var1 = ma(c,5) ;
Var2 = ma(c,20) ;
if CrossDown(var1, Var2) Then { TL48 = TL_New(sdate,stime,9999999,sdate,stime,0); }
* 매번 고맙습니다. 수고하십시요.
2022-03-09
1074
글번호 157050
답변완료
문의 드립니다
수고 많으십니다
첨부한 수식 중 매수신호봉 저가기준 손절 20틱(레드선), 익절50틱(블루선) 라인
매도신호봉 고가기준 손절20(레드선)틱, 익절50틱(블루선) 라인
부탁드립니다
감사합니다~
input : 전환선기간(9),기준선기간(26),선행스팬2기간(52),시작시간(080000),종료시간(220000);
Var : 기준선(0), 전환선(0), 선행스팬1(0), 선행스팬2(0),구름상단(0),구름하단(0),Tcond(false);
전환선 = (Highest(H, 전환선기간) + Lowest(L, 전환선기간)) / 2;
기준선 = (Highest(H, 기준선기간) + Lowest(L, 기준선기간)) / 2;
선행스팬1 = (전환선[25] + 기준선[25]) / 2 ;
선행스팬2 = (Highest(H, 선행스팬2기간)[25] + Lowest(L, 선행스팬2기간)[25]) / 2;
구름상단 = max(선행스팬1,선행스팬2);
구름하단 = Min(선행스팬1,선행스팬2);
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then
Tcond = true;
if (sdate != sdate[1] and stime >= 종료시간) or
(sdate == sdate[1] and stime >= 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if Tcond == true then{
if crossup(전환선,구름상단) Then
buy();
if CrossDown(전환선,구름하단) Then
sell();
}
input : 틱(20);
var : RR(0), TL(0),TX1(0),TX2(0);
if MarketPosition == 1 Then
{
rr = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*틱));
if rr > rr[1] Then{
tx1 = Text_New(sdate,stime,H,NumToStr(RR*틱,0)+"틱");
Text_SetStyle(tx1,1,2);
}
TL_Delete(TL);
TL_New(EntryDate,EntryTime,L[BarsSinceEntry],sdate,stime,L[BarsSinceEntry]);
Text_Delete(Tx2);
tx2 = Text_New(sdate,stime,L[BarsSinceEntry],NumToStr(L[BarsSinceEntry],2));
}
if MarketPosition == -1 Then
{
rr = Floor((EntryPrice-lowest(L,BarsSinceEntry))/(PriceScale*틱));
if rr > rr[1] Then{
tx1 = Text_New(sdate,stime,H,NumToStr(RR*틱,0)+"틱");
Text_SetStyle(tx1,1,2);
}
TL_Delete(TL);
TL_New(EntryDate,EntryTime,H[BarsSinceEntry],sdate,stime,H[BarsSinceEntry]);
Text_Delete(Tx2);
tx2 = Text_New(sdate,stime,H[BarsSinceEntry],NumToStr(H[BarsSinceEntry],2));
}
2022-03-09
1330
글번호 157049
답변완료
문의드립니다.
이평20 이평120 위의 있고 첫번째 음봉캔들 매수.두번째 음봉캔들 매수.
이평20 이평120 아래의 있고 첫번째 양봉캔들 매도. 두번째 양봉캔들 매도.
수고하세요.
2022-03-09
1170
글번호 157048
답변완료
식첨부
input : n(1),x(50);
input : StartTime(80000),EndTime(50000);
Inputs : Period(20), Sence(1.5), CC_DN(Yellow);
Input : 당일수익틱수(100),당일손실틱수(100);
Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false);
var : Tcond(false);
Vars:
VLineUp(0),
VLineDn(0),
HHighest(0),
LLowest(0),
JustChanged(FALSE),
VLine(0), DBN(0);
Array:
Highs[35](0),
Lows[35](0),
RRange[35](0),
UpWave[1](FALSE),
DnWave[1](FALSE);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
If STime == 180000 Then
DBN = 0;
DBN = DBN + 1;
Var1 = Period;
Var2 = Var1 - 1;
Var3 = Var1 - 2;
Var5 = Sence;
Var6 = H-L;
JustChanged = FALSE;
if CurrentBar <= Var2 then begin
Highs[CurrentBar] = Close;
Lows[CurrentBar] = Close;
RRange[CurrentBar] = (H-L) /2;
end;
if CurrentBar == Var1 then begin
if Highs[Var2] >= Highs[Var3] then begin
UpWave[1] = TRUE;
HHighest = Highs[Var2];
VLineUp = HHighest - (Var5 * MA(Var6,Var2));
#Plot1(VLineUp,"VLineUp");
end;
if Highs[Var2] < Highs[Var3] then begin
DnWave[1] = TRUE;
LLowest = Lows[Var2];
VLineDn = LLowest + (Var5 * MA(Var6,Var2));
#Plot2(VLineDn,"VLineDn");
end;
end;
if CurrentBar > Var1 then begin
if DnWave[1] and Close > VLineDn then begin
DnWave[1] = FALSE;
UpWave[1] = TRUE;
JustChanged = TRUE;
HHighest = Close;
LLowest = 0;
end;
if UpWave[1] and Close < VLineUp and JustChanged == FALSE then begin
UpWave[1] = FALSE;
DnWave[1] = TRUE;
JustChanged = TRUE;
LLowest = Close;
HHighest = 0;
end;
if JustChanged == FALSE then begin
if Close > HHighest then
HHighest = Close;
else if Close < LLowest then
LLowest = Close;
end;
VLineUp = HHighest - (Var5 * MA(Var6,Var2));
VLineDn = LLowest + (Var5 * MA(Var6,Var2));
/*if UpWave[1] then Plot1(VLineUp,"VLineUp", Red);
else if DnWave[1] then Plot1(VLineDn,"VLineUp", CC_DN);
*/
end;
당일수익 = PriceScale*당일수익틱수;
당일손실 = PriceScale*당일손실틱수;
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit;
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then
Xcond = true;
}
if Tcond == true and Xcond == False Then
{
if CountIf(C>O,n) == n and
H >= L[2]+PriceScale*x and UpWave[1] Then
Buy();
if CountIf(C<O,n) == n and
L <= H-PriceScale*x and DnWave[1] Then
sell();
}
if MarketPosition == 1 then{
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
}
안녕하세요.
위식에서 수정부탁드려요
매수.매도시 다음신호 나올때까지 동일신호 중복 진입금지.
한신호에서 한번만 신호발생 되도록 해 주세요.
예:매수 신호 발생후 매도신호 나올때까지 한번만 신호발생 중복진임금지
매도시 매수신호 발생시까지 한번만 진입.
시작시간 수정시 오후22시면 어떻게 수정 하는지 여부 알려 주세요.
22000으로 수정하니까 적용이 안됨니다.
2022-03-09
1077
글번호 157047
답변완료
지표 수식 작성 부탁드립니다.
담당자님, 안녕하세요.
담당자님께서 작성해주신 지표를 활용하여 매매원칙을 연구하던 중
그 지표를 변형해서 기존 지표와 함께 병행해서 활용하려고 수정을 시도했으나 도저히 안되어
담당자님께 또 수식 작성을 부탁드리게 되었습니다.
cf. 수식작성 Q&A 76295번의 질문과 담당자님께서 작성한 수식과 관련 있는 내용입니다.
다음과 같은 지표 수식의 작성을 부탁드립니다.
================================================================================
(KOSPI200 주가지수 선물의 분봉 차트에서 적용)
1) 매일 당일(D)의 장시작 후 부터 새로 연산을 실행하여 각 당일의 구간에만 표시
2) 전일(D-1) 일봉의 시가, 종가
전전일(D-2) 일봉의 시가, 종가
......
(D-40) 일봉의 시가, 종가
cf. 시가, 종가가 각각 동등한 성격인 총 80개의 가격 변수(?)임.(시가, 종가의 성격에 따른 구분 없음)
3) 위 40일간 각 일봉 시가, 종가의 80개 가격(value) 중에서 (시가, 종가 구분 없이)
가격(value)이 '(당일 시가 - 5.0)~(당일 시가 + 5.0)'의 범위 내에 있으면서
and 그 가격(value)이 당일 시가와 가장 가까운 것을 5개 선정
4) 위에서 선정된 5개의 가격(value)을 당일(D)의 구간에만 수평라인으로 표시
(추가 요건)
* 기존 지표와 같이 nth(5), N일(N=40), 당일 시가 범위(y=5.0) 수치는 외부입력 변수
=================================================================================
위와 같이 지표 수식 작성을 부탁드립니다.
작성해 주신 지표를 다시 변형하여 요청해서 번거롭게 해드려 죄송하게 생각합니다.
이제 당분간 작성해 주신 지표들로 스스로 연구에 매진하겠습니다.
지표 작성에 대해 미리 감사드립니다.
항상 건강하고 건승 하시기 바랍니다
<참고>
=================================================================
=================================================================
=================================================================
아래는 수식작성 Q&A 76295번에 대한 답변으로
담당자님께서 작성해주신 지표수식입니다.
=================================================================
작성자 : 예스스탁 작성일 : 2022-03-08 오후 1:26:07 조회수 : 17
지표 Re : 지표 수식 작성 부탁드립니다.
안녕하세요
예스스탁입니다.
input : N(40),nth(5),y(5);
var : cnt(0),nthi(0);
Var : tempmin(0), tempindex(0),NTHindex(0);
Array : value[100](0),diff[100](0), NTHVALUE[6](0);
if Bdate != Bdate[1] Then
{
For cnt = 1 to N
{
value[cnt] = (DayClose(cnt)+DayOpen(cnt))/2;
diff[cnt] = abs(value[cnt]-DayOpen(0));
}
For nthi = 1 to nth
{
tempMin = 99999999;
tempIndex = -1;
For cnt = 1 to N
{
if diff[cnt] < tempmin and diff[cnt] < y then
{
tempmin = diff[cnt];
tempIndex = cnt;
}
}
if tempIndex != -1 Then
{
NTHVALUE[nthi] = value[tempIndex];
diff[tempIndex] = 99999999;
}
Else
{
NTHVALUE[nthi] = Nan;
}
}
}
plot1(NTHVALUE[1]);
plot2(NTHVALUE[2]);
plot3(NTHVALUE[3]);
plot4(NTHVALUE[4]);
plot5(NTHVALUE[5]);
=====================================================
2022-03-10
1091
글번호 157046
아트정 님에 의해서 삭제되었습니다.
2022-03-09
38
글번호 157045
초보트레이더 님에 의해서 삭제되었습니다.
2022-03-09
1
글번호 157043
답변완료
문의드립니다!
안녕하세요!
아래수식의 "타주기분(30)"으로 설정되어있는 부분과 관련해서...
이 30을 다른 수치로도 바꾸어서 한수식에서 동시에 여러개의 선이 표현되도록 추가하고싶습니다
예를들어 현재 설정된 30과 함께 40, 50, 60 등의 조건을 추가하여 <*한개의 수식>에서 각각의 조건에 맞는 선이
모두 나타나도록하고싶습니다
현재수식을 각각 다르게 설정하여 따로따로 적용하려니 너무많은 지표가 필요하게되네요
(* 제가 사용하는 챠트가 좀 많은편이라서 더욱더 그런거같습니다)
* 위 예시대로 4개(30,40,50,60)의 조건을 적용할수있도록만 작성 부탁드립니다
매번 친절히 도와주심에 진심으로 감사드립니다!!!
-----------------------------------------------------------------------------------
input : 타주기분(30),n(10),nth(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),HH(0),LL(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : RR[200](0),MM[200](0),DI[50](0);
Array : tempRR[200](0),tempMM[200](0),NTHVALUE[200](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
ii = ii+1;
if Bdate != Bdate[1] Then
{
DI[0] = ii;
for cnt = 1 to 49
{
Di[cnt] = Di[cnt-1][1];
}
}
OO = O;
HH = H;
LL = L;
RR[0] = 0;
MM[0] = 0;
for cnt = 1 to 199
{
RR[cnt] = RR[cnt-1][1];
MM[cnt] = MM[cnt-1][1];
tempRR[cnt] = RR[cnt];
tempMM[cnt] = MM[cnt];
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
RR[0] = abs(OO-CC);
MM[0] = (OO+CC)/2;
tempRR[0] = RR[0];
tempMM[0] = MM[0];
if D1[n] > 0 Then
{
if Bdate != Bdate[1] Then
{
For i1 = 1 to nth
{
tempmax = -1;
For i2 = 1 to ii-DI[n]
{
if (tempRR[i2] >= tempmax ) then
{
tempmax = tempRR[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempMM[tempi];
tempRR[tempi] = -1;
}
}
Plot1(NTHVALUE[1]);
Plot2(NTHVALUE[2]);
Plot3(NTHVALUE[3]);
Plot4(NTHVALUE[4]);
Plot5(NTHVALUE[5]);
}
}
2022-03-09
850
글번호 157042
답변완료
함수만드는거 하다 안되는부분 질문이요
range는 왜 ( 를 입력하면 ()가 저절로 생기나요? Volume 이나 Close같은것들은 그렇지 않은데,
2. data2를 참고해서 나오는 신호 말인데요, 모든 신호는 봉 완성 기준이기 때문에 메인차트를 시간단위가 작은 것으로 쓰라는 것인가요?
메인차트를 1시간봉이고 data2가 5분 봉이어도 1시간봉이 형성되는 중간에 data2로 인해 매수신호가 발생해도 메인차트에서는 받아들이지 않는다는거죠 ?
2022-03-09
1032
글번호 157041