커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
5526
글번호 230811
지표
답변완료

수식작성 부탁드립니다

예를 들어 지수선물 400.00pt 에 첫주문이 매수로 나간후 청산 or 손절 이후에 (1) 첫주문 보다 가격이 높을경우에만 매수주문이 나가도록 작성하고 싶습니다. (반대 방향의 주문은 상관없이 실행) (2) 변수로 398.50pt 이상에서 나가도록 설정하는것도 좋을듯 합니다 두가지 경우를 예로 알려주시면 감사하겠습니다.
프로필 이미지
희망나무행복
2021-03-18
1191
글번호 147213
시스템
답변완료

수식부탁드립니다

항상 감사합니다~~ 수식 좀 부탁드립니다 1.볼밴 상한밴드가 상승이거나,중간밴드가 상승일때:매수 볼밴 상한밴드가 하락이거나,중간밴드가 하락일때:매도 2.볼밴 상한밴드가 상승전환이거나,중간밴드가 전환일때:매수 볼밴 상한밴드가 하락전환이거나,중간밴드가 하락전환일때:매도 3.상한,중간,하한밴드의 변화를 막대그래프로 보고싶습니다.지표도 부탁드립니다 수고하세요~감사합니다
프로필 이미지
푸른물결
2021-03-18
1208
글번호 147209
시스템
답변완료

문의 드립니다.

첨부된 그림을 보면 1. 완성된 구간은 상승,하락 구간 색상이 재대로 나오는데 진행구간에는 상승구간과 하락구간 모두 검은색으로 나오는데 상승,하락 색이 적용될 수 있도록 수정 부탁 드립니다. 2. 상승(하락)이 진행되고 있는데 완성된 캔들 까지 라인이 표시되는데 아래로 바로생기는 작은 라인은 나오지 않게 하고 마지막봉이 완성되면 나오게 했으면 합니다. input: period(30),봉수(2); Var:선두께(3),상승색(LGREEN), 하락색(MAGENTA),예비선색상(white),상승세로선색상(red),하락세로선색상(MAGENTA),세로선두께(1); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0),idx(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/; Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0); r[0] = 0; r[1] = 2; r[2] = 3.; r[3] = -1; r[4] = -2.; r[5] = 1; r[6] = 0.5; For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(h,Period)[1]) Then T = 1; if CrossDown(c,Lowest(l,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; //ZZ[j+1] = ZZ[j]; } LoVal[0] = l; LoBar[0] = 0; //ZZ[0] = l; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); Tx = Text_New(date11,time11,Value11,"▼"); #동그라미 색상, 빨강 Text_SetColor(Tx,blue); Text_SetStyle(Tx,2,1); Text_SetSize(tx,12); tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine); Text_SetStyle(tx,2,1); date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; for j = 0 to 6 { fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]); } // TL2[0] = TL_New(date21,time21,fr[0],date22,time22,fr[0]); // TL_SetColor(TL2[0],white); #TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]); #TL_SetColor(TL2[1],RED); #TL_SetStyle(TL2[1], 3); #TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]); #TL_SetColor(TL2[2],red); #TL_SetSize(TL2[2],1); #TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2)); #Text_SetColor(Tx2[2],BWHITE); #Text_SetStyle(TX2[2],1,1); #TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]); #TL_SetColor(TL2[3],RED); #TL_SetStyle(TL2[3], 3); #TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]); #TL_SetColor(TL2[4],red); #TL_SetSize(TL2[4],1); #TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2)); #Text_SetColor(Tx2[4],BWHITE); #Text_SetStyle(TX2[4],1,0); // TL2[5] = TL_New(date21,time21,fr[5],date22,time22,fr[5]); // TL_SetColor(TL2[5],white); // TL2[6] = TL_New(date21,time21,fr[6],date22,time22,fr[6]); // TL_SetColor(TL2[6],MAGENTA); idx = 0; } If LoVal[0] > l Then { LoVal[0] = l; LoBar[0] = 0; //ZZ[0] = l; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date22 = date[0]; time22 = stime[0]; //Tx = Text_New_Self(date12,time12,Value12,NumToStr(abs(value11-value12)/PriceScale,0)+" "); #동그라미 색상, 빨강 //Text_SetColor(Tx,BLUE); //Text_SetStyle(Tx,1,0); TL_SetEnd(TL2[0],date22,time22,fr[0]); TL_SetEnd(TL2[1],date22,time22,fr[1]); TL_SetEnd(TL2[2],date22,time22,fr[2]); Text_SetLocation(TX2[2],date22,time22,fr[2]); TL_SetEnd(TL2[3],date22,time22,fr[3]); TL_SetEnd(TL2[4],date22,time22,fr[4]); Text_SetLocation(TX2[4],date22,time22,fr[4]); TL_SetEnd(TL2[5],date22,time22,fr[5]); TL_SetEnd(TL2[6],date22,time22,fr[6]); TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); idx = 0; } } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; //ZZ[j+1] = ZZ[j]; } HiVal[0] = h; HiBar[0] = 0; //ZZ[0] = h; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); Tx1 = Text_New(date11,time11,Value11,"▲"); #동그라미 색상, 파랑 Text_SetColor(Tx1,red); Text_SetStyle(Tx1,2,5); Text_SetSize(tx1,12); tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)); Text_SetStyle(tx,2,0); date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; for j = 0 to 5 { fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]); } // TL3[0] = TL_New(date31,time31,fr[0],date32,time32,fr[0]); // TL_SetColor(TL3[0],white); #TL3[1] = TL_New(date31,time31,fr[1],date32,time32,fr[1]); #TL_SetColor(TL3[1],BLUE); #TL_SetStyle(TL3[1], 3); #TL3[2] = TL_New(date31,time31,fr[2],date32,time32,fr[2]); #TL_SetColor(TL3[2],BLUE); #TL_SetSize(TL3[2],1); #TX3[2] = Text_New(date32,time32,fr[2],NumToStr(fr[2],2)); #Text_SetColor(Tx3[2],BWHITE); #Text_SetStyle(TX3[2],1,1); #TL3[3] = TL_New(date31,time31,fr[3],date32,time32,fr[3]); #TL_SetColor(TL3[3],BLUE); #TL_SetStyle(TL3[3], 3); #TL3[4] = TL_New(date31,time31,fr[4],date32,time32,fr[4]); #TL_SetColor(TL3[4],BLUE); #TL_SetSize(TL3[4],1); #TX3[4] = Text_New(date32,time32,fr[4],NumToStr(fr[4],2)); #Text_SetColor(Tx3[4],BWHITE); #Text_SetStyle(TX3[4],1,0); // TL3[5] = TL_New(date31,time31,fr[5],date32,time32,fr[5]); // TL_SetColor(TL3[5],white); // TL3[6] = TL_New(date31,time31,fr[6],date32,time32,fr[6]); // TL_SetColor(TL3[6],cyan); idx = 0; } If HiVal[0] < h Then { HiVal[0] = h; HiBar[0] = 0; //ZZ[0] = h; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date32 = date[0]; time32 = stime[0]; //Tx = Text_New_Self(date12,time12,Value12,NumToStr(abs(value11-value12)/PriceScale,0)+" "); #동그라미 색상, 빨강 //Text_SetColor(Tx,RED); //Text_SetStyle(Tx,1,1); TL_SetEnd(TL3[0],date32,time32,fr[0]); TL_SetEnd(TL3[1],date32,time32,fr[1]); TL_SetEnd(TL3[2],date32,time32,fr[2]); Text_SetLocation(TX3[2],date32,time32,fr[2]); TL_SetEnd(TL3[3],date32,time32,fr[3]); TL_SetEnd(TL3[4],date32,time32,fr[4]); Text_SetLocation(TX3[4],date32,time32,fr[4]); TL_SetEnd(TL3[5],date32,time32,fr[5]); TL_SetEnd(TL3[6],date32,time32,fr[6]); TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); idx = 0; } } idx = idx+1; TL_SetSize(tL,선두께); TL_SetSize(tL1,선두께); TL_SetColor(tL,예비선색상); TL_SetEnd(TL,sDate,sTime,c); var : VTL(0); if idx == 봉수 Then { // TL_Delete(VTL);//최근것만 표시하고자 할경우 이 내용을 삭제하시면 됩니다. // VTL = TL_New(sdate,stime,999999999,sDate,stime,0); // TL_SetColor(VTL,iff(T == -1,상승세로선색상,하락세로선색상)); // TL_SetSize(VTL,세로선두께); } 감사합니다.
프로필 이미지
참아람
2021-03-18
1387
글번호 147207
지표

노아 님에 의해서 삭제되었습니다.

프로필 이미지
노아
2021-03-18
0
글번호 147202
시스템
답변완료

시스템 문의드립니다

안녕하세요 시스템 문의드리고 싶습니다! 번거롭게 해드려 죄송합니다ㅜ 5일, 10일, 20일 이평선이 역배열에서 2달안에 정배열로 바뀌고 종가가 5일선보다 높으면 익일 시가에 매수 5일선이 10일선보다 낮아지면 익일 시가에 매도 익절 30% 손절 10% 익절,손절을 변수로 설정하여 최적화를 하고 싶습니다 혹시 이런 시스템 작성이 가능할까요? 부탁드리겠습니다 감사합니다!
프로필 이미지
노아
2021-03-18
1358
글번호 147201
시스템
답변완료

매수매도 수식 재질문

"작성하신 수식이 지정한 날짜와 시간이후에 1회만 진입되게 작성이 되어 있습니다. 외부변수 N이 1이고 count < N으로 첫진입조건이 되어 있습니다. 지정한 날짜와 시간이후에 별도의 횟수제한이 없으시면 "b1"진입에 count < N 조건을 삭제하시면 되고 몇회로 제한하고자 하시면 N값을 늘리시면 됩니다." 이렇게 답변을 해주셨는데 count < N 조건을 삭제하고 돌렸더니 1차 2차 매수 진행 후에 매도신호가 나와 모두 매도가 되고 나면 다시 매수가 진행되긴 하지만 1차 2차부터 다시 매수하는게 아니라 3차부터 이어서 매수를 하더라구요. 저는 올매도 진행후에는 다시 1차매수로 돌아가게 하고 싶은데 어떻게 하면 될까요? 그리고 한가지 더 궁금한게 있는데, 코인별로 RSI하락에도 매수신호가 발생하는게 있고 발생하지 않는경우가 있는데 원인을 잘 모르겠습니다.(첨부파일 참조) Input : 투자금액(1000000),Period(14), N(1), LPercent(30), S7Percent(70), S8Percent(80), S9Percent(90),시작일(20210315),시작시간(090000); var : value(0), e(0),x(0),count(0),Vma(0), Tcond(false); var : HH(0),Bxcond1(false),Bxcond2(false),Bxcond3(false); var : LL(0),Sxcond1(false),Sxcond2(false),Sxcond3(false); Array : VV[5](0),XX[5](0); value = RSI(Period); vv[0] = floor((투자금액*0.1)/NextBarOpen); vv[1] = floor((투자금액*0.1)/NextBarOpen); vv[2] = floor((투자금액*0.1)/NextBarOpen); vv[3] = floor((투자금액*0.2)/NextBarOpen); vv[4] = floor((투자금액*0.2)/NextBarOpen); vv[5] = floor((투자금액*0.3)/NextBarOpen); if NextBarSdate >= 시작일 and NextBarStime >= 시작시간 Then Tcond = true; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then count = count+1; if sdate >= 시작일 and stime >= 시작시간 Then Tcond = true; if Tcond == true then { #첫번째 매수 if (TotalTrades == 0 or MarketPosition == 0) then { if MarketPosition == 0 and count < N and CrossDown(value, LPercent) Then { buy("b1",onclose,def,vv[MaxEntries]); } } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { e = e +1; if e == 0 then XX[e] = CurrentContracts; Else XX[e] = CurrentContracts-CurrentContracts[1]; } #두번째 매수 If MarketPosition == 1 and e == 1 and CrossDown(value, LPercent) and NextBarSdate == sdate Then { buy("b2",onclose,def,vv[MaxEntries]); } #세번재매수 If MarketPosition == 1 and e == 2 and CrossDown(value, LPercent) and NextBarSdate == sdate Then { buy("b3",onclose,def,vv[MaxEntries]); } #네번재매수 If MarketPosition == 1 and e == 3 and CrossDown(value, LPercent) and NextBarSdate == sdate Then { buy("b4",onclose,def,vv[MaxEntries]); } #다섯번재매수 If MarketPosition == 1 and e == 4 and CrossDown(value, LPercent) and NextBarSdate == sdate Then { buy("b5",onclose,def,vv[MaxEntries]); } if condition1 == false and crossup(value,S7Percent) then { condition1 = true; exitlong("bx1",onclose,def,"",floor(maxcontracts*0.2),1); } if condition2 == true and crossup(value,S8Percent) then { condition2 = true; exitlong("bx2",onclose,def,"",floor(maxcontracts*0.4),1); } if condition3 == true and crossup(value,S9Percent) then { condition3 = true; exitlong("bx3"); } if crossdown(value,S7Percent) then exitlong("bx"); } else { condition1 = false; condition2 = false; condition3 = false; condition4 = false; } }
프로필 이미지
바나
2021-03-18
1344
글번호 147200
시스템
답변완료

시스템식 관련해서 궁금한게 있에 글을 남깁니다.

시스템식 관련하여 궁금한게 있어 글을 남깁니다. 제가 만든 시스템식 1과 2가 있으면 이 시스템식을 하나로 합치지 않고 각각 시스템식을 동시에 적용 시키는 방법이 있을까요? 예를들면, 5일 20일 골든크로스 매수 하는 시스템식을 적용중인데, 분봉 피보나치 0.618 매수하느 하는 시스템식을 동시에 적용 하고 싶으면 반드시 시스템식을 하나로 합쳐야 하나요???
프로필 이미지
맴맴잉
2021-03-18
1023
글번호 147194
시스템

2wnwn 님에 의해서 삭제되었습니다.

프로필 이미지
2wnwn
2021-03-18
6
글번호 147193
시스템
답변완료

수식어 부탁드립니다

input : StartTime(160000),EndTime(055000); var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0); var : Tcond(false); 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; SetStopEndofday(0); } 전환선 = (highest(H,9)+lowest(L,9))/2; 기준선 = (highest(H,26)+lowest(L,26))/2; 선행스팬1 = (전환선[25]+기준선[25])/2; 선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2; var1 = Disparity(60); if Tcond == true Then { if 전환선 > 기준선 and crossup(전환선,선행스팬1) and var1 >= 99 Then buy("b"); if MarketPosition == 1 then { if 전환선 < 기준선 and CrossDown(전환선,선행스팬2) and var1 >= 99 Then exitlong(); } if 전환선 < 기준선 and CrossDown(전환선,선행스팬1) and var1 <= 101 Then sell("s"); if MarketPosition == -1 then { if 전환선 > 기준선 and CrossUp(전환선,선행스팬2) and var1 <= 101 Then ExitShort(); } } --------------------------------------------- 위의 수식어를 대비했을때 1번은 한국투자증권의 결과값이고 2번은 브이아이금융투자의 결과값 입니다. 동일 수식어인데 성능보고서의 손익이 차이가 나는 이유가 뭘까요 ? 참고로 각각이 하단에 시간설정이 다르고 2번의 노란색은 매수신호후 청산시 손실로 나타납니다, 2번이 1번과 같은 결과값이 나올 수 있는 방법은 없을까요 ? 수고 하세요~
프로필 이미지
푸른
2021-03-18
981
글번호 147192
시스템