커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1509
글번호 230811
답변완료
문의 드립니다
1.
input : StartTime(150000),EndTime(50000),진입횟수(10);
input : 익절틱수(250),손절틱수(50);
Input : 당일수익틱수(850),당일손실틱수(100);
Input:Length(1),Pval(0.01);
var : Tcond(False),entry(0);
Variables: Mom(0);
Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
entry = 0;
Xcond = false;
N1 = NetProfit;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
{
Tcond = False;
}
당일수익 = PriceScale*당일수익틱수;
당일손실 = PriceScale*당일손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 or daypl <= -당일손실 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true ) then
Xcond = true;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
Buy("CBI_LE",AtStop,Highest(High,Length)+Pval);
ExitLong("CBI_SE",AtStop,Lowest(Low,Length)-Pval);
if MarketPosition == 1 then
{
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2.
input : StartTime(150000),EndTime(50000),진입횟수(10);
input : 익절틱수(250),손절틱수(50);
Input : 당일수익틱수(850),당일손실틱수(100);
Input:Length(1),Pval(0.01);
var : Tcond(False),entry(0);
Variables: Mom(0);
Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
entry = 0;
Xcond = false;
N1 = NetProfit;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
{
Tcond = False;
}
당일수익 = PriceScale*당일수익틱수;
당일손실 = PriceScale*당일손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 or daypl <= -당일손실 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true ) then
Xcond = true;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
ExitShort("CBI_LE",AtStop,Highest(High,Length)+Pval);
Sell("CBI_SE",AtStop,Lowest(Low,Length)-Pval);
if MarketPosition == 1 then
{
ExitShort("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
ExitShort("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
위 수식어에서 진입없이 연속 손실이 8회의 데이터가 나올때
9회에서 18회까지 진입하는 수식어를 추가할 수 있는지요 ?
-----------------
해외선물 매매에서 3봉이내 저점, 고점의 최소 가격변화가 40틱일때
그 중간인 20틱에 매수나 매도후 5봉 완성에 청산하는 수식어를 부탁드립니다.
매매시간은 21:00~ 05:00 이고 익절 100틱 손절 100틱 입니다
2023-09-06
971
글번호 172166
답변완료
시스템식 문의 드립니다.
안녕하세요.
시스템식 2가지 문의 드립니다.
1]
매수식이 macd/sig 골든크로스 라고 가정해 보겠습니다.
A, B , C 3개의 캔들중에서
B가 매수조건에 만족하는 캔들이라면,
Atstop 함수를 이용해서 nextbaropen 을 적용하면 C캔들의 시가에 매수가 됩니다.
여기서,
Atstop 함수를 쓰지 않고, C캔들의 시가에 매수신호가 나오게 하려면 어떻게 해야 하는지요?
이전 봉 종가가 완성되는 순간에 B캔들에서 매수신호가 나와도 될것 같긴 한데....
두가지 경우 모두 그 다음봉 시가부근에서 매수가 되는 거로 이해하고 있는데 맞는건가요?
위 두가지 경우 수식으로 어떻게 표현을 해야 하는지 궁금합니다.
2]
60분봉 차트에서 종가가 20이평 위에 있으면서
Rsi(14)가 50을 상향돌파할 때(또는 돌파 이후에)
10분봉의 1봉전 고가를 돌파하는 순간 매수진입하는 시스템식 부탁드립니다.
2023-09-06
816
글번호 172165
답변완료
문의드립니다~
var: 분주기(15),분주기1(5),분주기4(4),분주기3(3),분주기2(2),분주기5(1);
var: S1(0),D1(0);
var: cnt(0),cnt1(0),cnt2(0),cnt3(0),cnt4(0),cnt5(0);
Array : CC[100](0),OO[100](0);//,HH[100](0),LL[100](0),TT[100](0);
Array : C1[300](0);//,T1[100](0);
Array : C2[100](0);//,T1[100](0);
Array : C3[100](0);//,T1[100](0);
Array : C4[100](0);//,T1[100](0);
Array : C5[100](0);//,T1[100](0);
var:TM(0);
var:TF(0),tf1(0),tf2(0),tf3(0),tf4(0),tf5(0);
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000))) Then{
S1 = TimeToMinutes(070000);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%분주기;
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000))) or
(TF < TF[1]) Then{
OO[0] = o;
//HH[0] = H;
//LL[0] = L;
//TT[0] = stime;
for cnt = 1 to 100{
OO[cnt] = OO[cnt-1][1];
//HH[cnt] = HH[cnt-1][1];
//LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
//TT[cnt] = TT[cnt-1][1];
}
}
//if H > HH[0] Then HH[0] = H;
//if L < LL[0] Then LL[0] = L;
CC[0] = C;
TF1 = TM%분주기1;
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000))) or
(TF1 < TF1[1]) Then{
//T1[cnt1] = stime;
for cnt1 = 1 to 300{
C1[cnt1] = C1[cnt1-1][1];
//T1[cnt1] = T1[cnt1-1][1];
}
}
C1[0] = c;
TF2 = TM%분주기2;
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000))) or
(TF2 < TF2[1]) Then{
for cnt2 = 1 to 100{
C2[cnt2] = C2[cnt2-1][1];
}
}
C2[0] = c;
TF3 = TM%분주기3;
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000))) or
(TF3 < TF3[1]) Then{
for cnt3 = 1 to 100{
C3[cnt3] = C3[cnt3-1][1];
}
}
C3[0] = c;
TF4 = TM%분주기4;
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000))) or
(TF4 < TF4[1]) Then{
for cnt4 = 1 to 100{
C4[cnt4] = C4[cnt4-1][1];
}
}
C4[0] = c;
TF5 = TM%분주기5;
if (sdate != sdate[1] and stime >= 070000 and 분주기5 > 1) or
(sdate == sdate[1] and (Stime == 070000 or (stime > 070000 and stime[1] < 070000)) and 분주기5 > 1) or
(TF5 < TF5[1] and 분주기5 > 1) or
(Bdate == Bdate[1] and TM > TM[1] and 분주기5 == 1)
Then{
for cnt5 = 1 to 100{
C5[cnt5] = C5[cnt5-1][1];
}
}
C5[0] = c;
}
/////////////////
1.분주기식에서 나스닥 5분 기준으로 120이평과 240이평값을 구했는데
실제5분봉이랑 차이가 꽤 있어서요~
이게 날이 지나면서 5분봉값과 차이가 생기는거 같은데요.
수정 부탁드립니다.~
2.그리고 틱차트를 메인으로 하고 참조차트에 5분봉을 불러와서 120이평과 240이평을
구한 다음에 적용했을때 실시간신호가 안잡히는데요.틱차트에선 시간축이 동일하지 않아서 5분봉의 참조차트이용이 가능하지 않다는 이전답변을 보았습니다.
그러면 참조차트상에 현재 그려지는 봉 말고 이전에 완성된 봉을 기준으로 적용해도 마찬가지 인가요? 이렇게 저렇게 해봤는데 심플한 식에서는 적용이 되는데
좀 복잡한 식에서는 적용이 안되고 그렇네요. 아래식대로 1봉전 완성봉 기준으로 전략실행차트에서 적용하고 싶은데요.
var:b120(0),b240(0);
b120 = (c1[1]+c1[2]+c1[3]+c1[4]+c1[5]+c1[6]+c1[7]+c1[8]+c1[9]+c1[10]+c1[11]+c1[12]+c1[13]+c1[14]+c1[15]+c1[16]+c1[17]+c1[18]+c1[19]+c1[20]+
c1[21]+c1[22]+c1[23]+c1[24]+c1[25]+c1[26]+c1[27]+c1[28]+c1[29]+c1[30]+c1[31]+c1[32]+c1[33]+c1[34]+c1[35]+c1[36]+c1[37]+c1[38]+c1[39]+c1[40]+
c1[41]+c1[42]+c1[43]+c1[44]+c1[45]+c1[46]+c1[47]+c1[48]+c1[49]+c1[50]+c1[51]+c1[52]+c1[53]+c1[54]+c1[55]+c1[56]+c1[57]+c1[58]+c1[59]+c1[60]+
c1[61]+c1[62]+c1[63]+c1[64]+c1[65]+c1[66]+c1[67]+c1[68]+c1[69]+c1[70]+c1[71]+c1[72]+c1[73]+c1[74]+c1[75]+c1[76]+c1[77]+c1[78]+c1[79]+c1[80]+
c1[81]+c1[82]+c1[83]+c1[84]+c1[85]+c1[86]+c1[87]+c1[88]+c1[89]+c1[90]+c1[91]+c1[92]+c1[93]+c1[94]+c1[95]+c1[96]+c1[97]+c1[98]+c1[99]+c1[100]+
c1[101]+c1[102]+c1[103]+c1[104]+c1[105]+c1[106]+c1[107]+c1[108]+c1[109]+c1[110]+c1[111]+c1[112]+c1[113]+c1[114]+c1[115]+c1[116]+c1[117]+c1[118]+c1[119])/119;
b240 = (c1[1]+c1[2]+c1[3]+c1[4]+c1[5]+c1[6]+c1[7]+c1[8]+c1[9]+c1[10]+c1[11]+c1[12]+c1[13]+c1[14]+c1[15]+c1[16]+c1[17]+c1[18]+c1[19]+c1[20]+
c1[21]+c1[22]+c1[23]+c1[24]+c1[25]+c1[26]+c1[27]+c1[28]+c1[29]+c1[30]+c1[31]+c1[32]+c1[33]+c1[34]+c1[35]+c1[36]+c1[37]+c1[38]+c1[39]+c1[40]+
c1[41]+c1[42]+c1[43]+c1[44]+c1[45]+c1[46]+c1[47]+c1[48]+c1[49]+c1[50]+c1[51]+c1[52]+c1[53]+c1[54]+c1[55]+c1[56]+c1[57]+c1[58]+c1[59]+c1[60]+
c1[61]+c1[62]+c1[63]+c1[64]+c1[65]+c1[66]+c1[67]+c1[68]+c1[69]+c1[70]+c1[71]+c1[72]+c1[73]+c1[74]+c1[75]+c1[76]+c1[77]+c1[78]+c1[79]+c1[80]+
c1[81]+c1[82]+c1[83]+c1[84]+c1[85]+c1[86]+c1[87]+c1[88]+c1[89]+c1[90]+c1[91]+c1[92]+c1[93]+c1[94]+c1[95]+c1[96]+c1[97]+c1[98]+c1[99]+c1[100]+
c1[101]+c1[102]+c1[103]+c1[104]+c1[105]+c1[106]+c1[107]+c1[108]+c1[109]+c1[110]+c1[111]+c1[112]+c1[113]+c1[114]+c1[115]+c1[116]+c1[117]+c1[118]+c1[119]+c1[120]+
c1[121]+c1[122]+c1[123]+c1[124]+c1[125]+c1[126]+c1[127]+c1[128]+c1[129]+c1[130]+c1[131]+c1[132]+c1[133]+c1[134]+c1[135]+c1[136]+c1[137]+c1[138]+c1[139]+c1[140]+
c1[141]+c1[142]+c1[143]+c1[144]+c1[145]+c1[146]+c1[147]+c1[148]+c1[149]+c1[150]+c1[151]+c1[152]+c1[153]+c1[154]+c1[155]+c1[156]+c1[157]+c1[158]+c1[159]+c1[160]+
c1[161]+c1[162]+c1[163]+c1[164]+c1[165]+c1[166]+c1[167]+c1[168]+c1[169]+c1[170]+c1[171]+c1[172]+c1[173]+c1[174]+c1[175]+c1[176]+c1[177]+c1[178]+c1[179]+c1[180]+
c1[181]+c1[182]+c1[183]+c1[184]+c1[185]+c1[186]+c1[187]+c1[188]+c1[189]+c1[190]+c1[191]+c1[192]+c1[193]+c1[194]+c1[195]+c1[196]+c1[197]+c1[198]+c1[199]+c1[200]+
c1[201]+c1[202]+c1[203]+c1[204]+c1[205]+c1[206]+c1[207]+c1[208]+c1[209]+c1[210]+c1[211]+c1[212]+c1[213]+c1[214]+c1[215]+c1[216]+c1[217]+c1[218]+c1[219]+c1[220]+
c1[221]+c1[222]+c1[223]+c1[224]+c1[225]+c1[226]+c1[227]+c1[228]+c1[229]+c1[230]+c1[231]+c1[232]+c1[233]+c1[234]+c1[235]+c1[236]+c1[237]+c1[238]+c1[239])/239;
2023-09-05
1299
글번호 172164
답변완료
함수요청
안녕하세요?
답변주신 아래 글번호 83562번 연장선상에서 문의드립니다.
Plot1(c,"종가1");
Plot2(c,"종가2");
FixPlotShift(1,26);#plot1을 26봉 우측으로 이동
FixPlotShift(2,-26);#plot2를 26봉 좌측으로 이동
macd곡선= plot2-plot1
시그널곡선 = 9일의 macd 이동평균이라고 가정하고
macd오실레이터(macd곡선과 시그널곡선의 차이)를 지표로 그리고 싶습니다.
2023-09-05
734
글번호 172163
철판때기 님에 의해서 삭제되었습니다.
2023-09-05
48
글번호 172162
러블리 님에 의해서 삭제되었습니다.
2023-09-05
0
글번호 172160
답변완료
부탁드립니다.
$안녕하세요.
국선에서 09시 시가를 추가로 출력(plot) 하고 싶습니다,
도움 부탁 드려요.
2023-09-05
1153
글번호 172159
답변완료
수식질문
9월4일자. 83637 재질문입니다
9시30분 첫#1번신호 나오고
9시50분에 다음#1번신호 발생하면 매수신호가 또발생함
컨디션값 을 바꾸어놓고. 다시 초기치값을다시주니까 당연히신호가 나오지요
(당시 질문이 날자바뀌면. 첫신호라고한것은 8시45분을 지칭한것이 아님)
2023-09-05
1144
글번호 172158
답변완료
확인 부탁드립니다
안녕하세요
늘 감사드립니다.
아래 수식은 이평 및 전환선 위 아래의 캔들색상 강조입니다.
1. 이평이나 전환선 아래의 캔들색상은 동일하게 즉 위는 적색, 아래는 청색 만
되었으면 합니다.(green 은 삭제해도 됩니다.)
2. 이평을 수정하여 적용시 변경이 되지 않습니다.
5 이평을 20 이평으로 변경하였는데 5 이평으로만 됩니다.
확인 부탁드립니다.
var : 전환선(0);
var1 = ma(C,5);
전환선 = (highest(H,9)+lowest(L,9))/2;
PlotPaintBar(H,L,"강조",IFf(L>전환선,Red,iff(H < 전환선,Blue,Green)));
2023-09-05
904
글번호 172157