커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

감사합니다....복받으실꺼에요~~~

늘 감사합니다. 아래 수식 수정 부탁드립니다. (1번과 2번있습니다) 매수 : 일봉에서 10봉이네 10% 이상 상승한 양봉을 기준봉으로 삼았는데, 기준봉을 갭을 포 함한 상승폭으로 수정해주시면 감사하겠습니다. 1분봉에서 기준봉의 1/4 가격에 도달시 1차 매수(금액10000) 1분봉에서 기준봉의 2/4 가격에 도달시 2차 매수(금액10000) 1분봉에서 기준봉의 3/4 가격에 도달시 3차 매수(금액10000) 1분봉에서 기준봉의 4/4 가격에 도달시 4차 매수(금액10000) 매도 : 1분봉에서 기준봉의 종가 도달시 전량 매도 1.번 input : N(10),금액1(10000),금액2(20000); var : cnt(0); if Bdate != bdate[1] Then { var1 = 0; Var2 = 0; For cnt = 1 to N { if var1 == 0 and Var2 == 0 and DayClose(cnt) >= DayOpen(cnt)*1.10 Then { var1 = DayClose(cnt); Var2 = DayOpen(cnt); } } } if MarketPosition == 0 and var1 > 0 Then Buy("b1",AtLimit,(var1+Var2)/2,Floor(금액1/min(NextBarOpen,(var1+Var2)/2))); if MarketPosition == 1 Then { if MarketPosition != MarketPosition[1] Then { value1 = var1[BarsSinceEntry]; Value2 = var2[BarsSinceEntry]; } Buy("b2",AtLimit,Var2,Floor(금액1/min(NextBarOpen,Var2))); ExitLong("bx",AtLimit,value1); } ////////////////////////////////////////////////////////////////////// 아래 수식에서 1번째 음봉발생시 1차매수 10000원, 2번째 음봉발생시 2차매수 10000원 3번째 음봉발생시 3차매수 10000원 씩 매수 되고, 청산은 기준봉 종가에 전량 청산 부탁드립니다. 여기서도 기준봉 갭포함한 상승율로 변경 부탁드립니다. 2번 input : N(10),금액1(10000),금액2(20000); var : cnt(0); if Bdate != bdate[1] Then { var1 = 0; Var2 = 0; For cnt = 1 to N { if var1 == 0 and Var2 == 0 and DayClose(cnt) >= DayOpen(cnt)*1.10 Then { var1 = DayClose(cnt); Var2 = DayOpen(cnt); } } } if MarketPosition == 0 and var1 > 0 and C < O and C < var1 Then Buy("1");
프로필 이미지
하늘북
2021-04-06
826
글번호 147764
시스템
답변완료

이동된 선 시스템 사용 문의

안녕하세요 관리자님 미리 감사 드립니다. 시스템에서는 Plot함수를 못쓰는 것으로 알고있는데 FixPlotShift함수를 사용하여 교차된 선을 이용한 시스템을 만들려고 하면 어떻게 해야되는지 문의 드립니다. 예를 들어 선 1과 선 1을 FixPlotShift함수를 사용하여 우로 이동후 교차점을 매수나 매도로 만들려고합니다. 미리 답변에 감사 드립니다. 감사 합니다. 안녕하세요 예스스탁입니다. FixPlotShift함수를 이용해서 지표를 좌우 이동할수 있습니다. FixPlotShift(plot넘버,이동봉수) 이동봉수는 양수로 지정하면 우측으로, 음수로 지정하면 좌측으로 지정한 봉수만큼 이동하게 됩니다. 아래 내용 참고하시기 바랍니다. input : Period2(20); var : Sline(0),CX(0); CX = C; Sline = ema(CX, Period2); Plot1(Sline); FixPlotShift(1,10);#plot1을 우측으로 10봉 이동 즐거운 하루되세요 > blueo 님이 쓴 글입니다. > 제목 : 특정 선 선행표시 문의 > 안녕하세요 관리자님 늘 감사 드립니다. 예를들어 일목균형표에서 선행스팬처럼 제가 원하는 특정한 선을 앞으로 미리 표시하고 싶은데요 어떻게 표시해야되는지 문의 드립니다. 미리 답변에 감사 드립니다. Sline = ema(CX, Period2);
프로필 이미지
blueo
2021-04-06
944
글번호 147763
시스템
답변완료

재문의

종목검색에서, 1봉당 50억이상 봉이 발생된 날자와 시각을 알수 있도록 하는 수식 부탁드립니다. 맞지는 않을 것 같지만 예를 들어 find(날자+시각) 처럼해서 종목검색시 날자와 시각이 find 되도록 하고 싶읍니다 감사합니다.
프로필 이미지
파일럿
2021-04-06
810
글번호 147761
종목검색
답변완료

청산 수식 문의드립니다.

안녕하세요. 트레일링 청산과 관련하여 아래와 같이 구현해보려고 합니다. - 포지션 진입후 40틱 목표가 이후부터 특정(%)or(Tick) 이하로 떨어질경우 청산 단, 목표가 40틱 이후 60틱, 80틱, 120틱, 150틱, 200틱, 250틱, 300틱 단위로 목표수익을 달성할 경우 한단계식 40부터 300까지 청산 기준값이 바뀌는것을 구현해보려고 합니다. 즉 40틱 달성시부터 트레일링시작, 만약 40틱이후 수익이60틱을 갱신한 경우 목표가의 기준이 40에서 60으로 바뀌는 형태입니다. 그렇게 40틱에서 300틱가지 순차적으로 트레일링 기준값을 올려가는 것을 알려주시면 감사하겠습니다. 감사합니다.
프로필 이미지
고르면상한가
2021-04-06
854
글번호 147759
시스템
답변완료

지표수식 문의드립니다

아래의 수식에서, 파동당 상승/하락 틱 수와 더불어, 한 개의 파동당 봉의 개수를 같이 표현하고 싶습니다. 도움 부탁드립니다. 첨부파일에 빨강펜으로 표시한 식으로, /N개 이렇게 표시가 되면 좋겠습니다. ========================= input : af(0.02), maxAF(0.2),추세선두께(1),추세선색1(RED),추세선색2(BLUE),연장선두께(1),연장선색(blue); input : per1(0),Per2(50),Per3(100),Per4(138.2),Per5(150.0),Per6(161.8),Per7(200.0),Per8(300.0); input : 텍스트출력(1); var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0); var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0); var : TL1(0),TL2(0),cnt(0),count(0); var : TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),TL9(0),TL10(0),tx1(0),tx2(0),tx11(0),tx22(0); var : tx3(0),tx4(0),tx5(0),tx6(0),tx7(0),tx8(0),tx9(0),tx10(0); var1 = CSar(af,maxAF); if crossup(c,var1) Then { T = 1; HH = H; HD = sdate; HT = stime; HH1 = HH[1]; HD1 = HD[1]; HT1 = HT[1]; if LL > 0 Then { TL1 = TL_new(LD[1],LT[1],LL[1],HD,HT,HH); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL_Delete(TL6); TL_Delete(TL7); TL_Delete(TL8); TL_Delete(TL9); TL_Delete(TL10); #상승연장피봇테이트표현 Value3 = LL+(HH[1]-LL)*(Per1/100); Value4 = LL+(HH[1]-LL)*(Per2/100); Value5 = LL+(HH[1]-LL)*(Per3/100); Value6 = LL+(HH[1]-LL)*(Per4/100); Value7 = LL+(HH[1]-LL)*(Per5/100); Value8 = LL+(HH[1]-LL)*(Per6/100); Value9 = LL+(HH[1]-LL)*(Per7/100); Value10 = LL+(HH[1]-LL)*(Per8/100); TL3 = TL_new(HD[1],HT[1],Value3,sdate,stime,value3); TL4 = TL_new(HD[1],HT[1],Value4,sdate,stime,Value4); TL5 = TL_new(HD[1],HT[1],Value5,sdate,stime,Value5); TL6 = TL_new(HD[1],HT[1],Value6,sdate,stime,value6); TL7= TL_new(HD[1],HT[1],Value7,sdate,stime,Value7); TL8 = TL_new(HD[1],HT[1],Value8,sdate,stime,Value8); TL9 = TL_new(HD[1],HT[1],Value9,sdate,stime,Value9); TL10 = TL_new(HD[1],HT[1],Value10,sdate,stime,Value10); //추세선 오른쪽 연장설정 TL_SetExtRight(TL3,true); TL_SetExtRight(TL4,true); TL_SetExtRight(TL5,true); TL_SetExtRight(TL6,true); TL_SetExtRight(TL7,true); TL_SetExtRight(TL8,true); TL_SetExtRight(TL9,true); TL_SetExtRight(TL10,true); Text_Delete(tx3); Text_Delete(tx4); Text_Delete(tx5); Text_Delete(tx6); Text_Delete(tx7); Text_Delete(tx8); Text_Delete(tx9); Text_Delete(tx10); tx3 = Text_New(sDate,sTime,Value3,NumToStr(Value3,2)); tx4 = Text_New(sDate,sTime,Value4,NumToStr(Value4,2)); tx5 = Text_New(sDate,sTime,Value5,NumToStr(Value5,2)); tx6 = Text_New(sDate,sTime,Value6,NumToStr(Value6,2)); tx7 = Text_New(sDate,sTime,Value7,NumToStr(Value7,2)); tx8 = Text_New(sDate,sTime,Value8,NumToStr(Value8,2)); tx9 = Text_New(sDate,sTime,Value9,NumToStr(Value9,2)); tx10 = Text_New(sDate,sTime,Value10,NumToStr(Value10,2)); Text_SetStyle(tX3,0,1); Text_SetStyle(tX4,0,1); Text_SetStyle(tX5,0,1); Text_SetStyle(tX6,0,1); Text_SetStyle(tX7,0,1); Text_SetStyle(tX8,0,1); Text_SetStyle(tX9,0,1); Text_SetStyle(tX10,0,1); if 텍스트출력 == 1 then { Tx11 = Text_New(HD1,HT1,HH1,"상:"+NumToStr((HH1-LL1)/PriceScale,0)+NewLine+NumToStr(HH1,2)); Text_SetStyle(tx11,2,1); Text_SetSize(tx11,11); Text_Delete(tx1); Tx1 = Text_New(HD,HT,HH,"상단:"+NumToStr((HH-LL[1])/PriceScale,0)+NewLine+NumToStr(HH,2)); Text_SetStyle(tx1,12,1); Text_SetSize(tx1,11); } } } if CrossDown(c,var1) Then { T = -1; LL = L; LD = sdate; LT = stime; LL1 = LL[1]; LD1 = LD[1]; LT1 = LT[1]; if HH > 0 Then { TL2 = TL_new(HD[1],HT[1],HH[1],LD,LT,LL); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL_Delete(TL6); TL_Delete(TL7); TL_Delete(TL8); TL_Delete(TL9); TL_Delete(TL10); Value3 = HH-(HH-LL[1])*(Per1/100); Value4 = HH-(HH-LL[1])*(Per2/100); Value5 = HH-(HH-LL[1])*(Per3/100); Value6 = HH-(HH-LL[1])*(Per4/100); Value7 = HH-(HH-LL[1])*(Per5/100); Value8 = HH-(HH-LL[1])*(Per6/100); Value9 = HH-(HH-LL[1])*(Per7/100); Value10 = HH-(HH-LL[1])*(Per8/100); TL3 = TL_new(LD[1],LT[1],value3,sdate,stime,value3); TL4 = TL_new(LD[1],LT[1],Value4,sdate,stime,Value4); TL5 = TL_new(LD[1],LT[1],Value5,sdate,stime,Value5); TL6 = TL_new(LD[1],LT[1],Value6,sdate,stime,Value6); TL7 = TL_new(LD[1],LT[1],Value7,sdate,stime,value7); TL8 = TL_new(LD[1],LT[1],Value8,sdate,stime,Value8); TL9 = TL_new(LD[1],LT[1],Value9,sdate,stime,Value9); TL10 = TL_new(LD[1],LT[1],Value10,sdate,stime,Value10); //추세선 오른쪽 연장설정 TL_SetExtRight(TL3,true); TL_SetExtRight(TL4,true); TL_SetExtRight(TL5,true); TL_SetExtRight(TL6,true); TL_SetExtRight(TL7,true); TL_SetExtRight(TL8,true); TL_SetExtRight(TL9,true); TL_SetExtRight(TL10,true); Text_Delete(tx3); Text_Delete(tx4); Text_Delete(tx5); Text_Delete(tx6); Text_Delete(tx7); Text_Delete(tx8); Text_Delete(tx9); Text_Delete(tx10); tx3 = Text_New(sDate,sTime,Value3,NumToStr(Value3,2)); tx4 = Text_New(sDate,sTime,Value4,NumToStr(Value4,2)); tx5 = Text_New(sDate,sTime,Value5,NumToStr(Value5,2)); tx6 = Text_New(sDate,sTime,Value6,NumToStr(Value6,2)); tx7 = Text_New(sDate,sTime,Value7,NumToStr(Value7,2)); tx8 = Text_New(sDate,sTime,Value8,NumToStr(Value8,2)); tx9 = Text_New(sDate,sTime,Value9,NumToStr(Value9,2)); tx10 = Text_New(sDate,sTime,Value10,NumToStr(Value10,2)); Text_SetStyle(tX3,0,1); Text_SetStyle(tX4,0,1); Text_SetStyle(tX5,0,1); Text_SetStyle(tX6,0,1); Text_SetStyle(tX7,0,1); Text_SetStyle(tX8,0,1); Text_SetStyle(tX9,0,1); Text_SetStyle(tX10,0,1); if 텍스트출력 == 1 then { Tx22 = Text_New(LD1,LT1,LL1,"하:"+NumToStr((HH1-LL1)/PriceScale,0)+NewLine+NumToStr(LL1,2)); Text_SetStyle(tx22,2,0); Text_SetSize(tx22,11); Text_Delete(tx2); Tx2 = Text_New(LD,LT,LL,"가:"+NumToStr((HH[1]-LL)/PriceScale,0)+NewLine+NumToStr(LL,2)); Text_SetStyle(tx2,2,1); Text_SetSize(tx2,12); } } } if T == 1 then { if H > HH Then { HH = H; HD = sdate; HT = stime; TL_SetEnd(TL1,HD,HT,HH); if 텍스트출력 == 1 then { Text_Delete(tx1); Tx1 = Text_New(HD,HT,HH,"A:"+NumToStr((HH-LL[1])/PriceScale,0)+NewLine+NumToStr(HH,2)); Text_SetStyle(tx1,2,1); Text_SetSize(tx1,11); } } } if T == -1 then { if L < LL Then { LL = L; LD = sdate; LT = stime; TL_SetEnd(TL2,LD,LT,LL); if 텍스트출력 == 1 then { Text_Delete(tx2); Tx2 = Text_New(LD,LT,LL,"B:"+NumToStr((HH[1]-LL)/PriceScale,0)+NewLine+NumToStr(LL,2)); Text_SetStyle(tx2,2,0); Text_SetSize(tx2,11); } } } #추세선 두께 TL_SetSize(TL1,추세선두께); TL_SetSize(TL2,추세선두께); #추세선 색상 TL_SetColor(TL1,추세선색1); TL_SetColor(TL2,추세선색2); #연장선 두께 TL_SetSize(TL3,연장선두께); TL_SetSize(TL4,연장선두께); TL_SetSize(TL5,연장선두께); TL_SetSize(TL6,연장선두께); TL_SetSize(TL7,연장선두께); TL_SetSize(TL8,연장선두께); TL_SetSize(TL9,연장선두께); TL_SetSize(TL10,연장선두께); #연장선 색상 TL_SetColor(TL3,연장선색); TL_SetColor(TL4,GREEN); TL_SetColor(TL5,연장선색); TL_SetColor(TL6,GREEN); TL_SetColor(TL7,RED); TL_SetColor(TL8,연장선색); TL_SetColor(TL9,RED); TL_SetColor(TL10,RED); Text_SetLocation(tx3,NextBarSdate,NextBarStime,Value3); Text_SetLocation(tx4,NextBarSdate,NextBarStime,Value4); Text_SetLocation(tx5,NextBarSdate,NextBarStime,Value5); Text_SetLocation(tx6,NextBarSdate,NextBarStime,Value6); Text_SetLocation(tx7,NextBarSdate,NextBarStime,Value7); Text_SetLocation(tx8,NextBarSdate,NextBarStime,Value8); Text_SetLocation(tx9,NextBarSdate,NextBarStime,Value9); Text_SetLocation(tx10,NextBarSdate,NextBarStime,Value10);
프로필 이미지
thecool
2021-04-06
981
글번호 147758
지표

이종희 님에 의해서 삭제되었습니다.

프로필 이미지
이종희
2021-04-06
2
글번호 147756
시스템
답변완료

수식 부탁드립니다.

국내선물 거래하려고 하는데요. 1. 당일 오전 10시까지 승률이 45% 미만이면 당일 거래를 종료하고, 45% 이상이면 기존 수식대로 거래를 하도록 하는 수식을 부탁드립니다. 2. 당일 오전 10시까지 거래의 손익비가 1.5 미만이면 당일 거래를 종료하고, 1.5이상이면 기존 수식대로 거래를 하도록 하는 수식을 부탁드립니다. 3. 오전 10시까지 승률이 45% 미만 또는 손익비가 1.5 미만이면 당일거래를 종료하고, 그렇지 않으면 기존 수식대로 거래를 하도록 하는 수식을 부탁드립니다. 기준시각, 승률, 손익비는 외부변수로 처리 부탁드립니다. 항상 감사드립니다.
프로필 이미지
트레이더365
2021-04-06
946
글번호 147752
시스템
답변완료

71809 답변 감사히 잘 보았습니다. 그런데 적용해도 걸리는게 없네요 ㅠㅠ

답변 감사히 잘 보았습니다. 그런데 적용해도 걸리는게 없네요 ㅠㅠ 그리고 if S >= 1 and C > SHV Then S = 0; 이 부분이 B쪽에는 없고 S쪽만 있는데 맞는건가요?? 그리고 빠진 조건이 있는거 같아서.. 1.S(저점)은 현재가가 S(저점)를 깨면 매도(진입) 후 20선을 넘으면 손절 또는 청산 2.B(고점)은 현재가가 B(고점)를 돌파하면 매수(진입) 후 20선을 깨면 손절 또는 청산 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 지표 부탁드립니다 > 안녕하세요 예스스탁입니다. 신호종류가 불명확하여 1번은 매도, 2번은 매수식으로 작성해 드립니다. input : left(3),Right(3); var : cnt(0),mav(0); var : SHV(0),SHV1(0),SLV(0),SLV1(0),LL(0),S(0),SV(0); var : SHI(0),SHI1(0),SLI(0),SLI1(0),HH(0),B(0),BV(0); mav = ma(C,9); if SwingHigh(1,H,Left,Right,Left+right+1) != -1 then { S = 1; SHV = H[right]; SHV1 = SHV[1]; SHI = Index[right]; SHI1 = SHI[1]; #스윙하이 사이의 최저점 계산 if SHV1 > 0 and SHV > SHV1 Then { S = 2; LL = 0; for cnt = Index-SHI to Index-SHI1 { Condition1 = False; if LL == 0 or (LL > 0 and L[cnt] < LL) Then { LL = L[cnt]; if L[cnt] < mav[cnt] and L[cnt+1] < mav[cnt+1] Then { Condition1 = true; } } } if Condition1 == true Then { S = 3; SV = LL; } } } if S >= 1 and C > SHV Then S = 0; if SwingLow(1,L,Left,Right,Left+right+1) != -1 then { B = 1; SLV = L[right]; SLV1 = SLV[1]; SLI = Index[right]; SLI1 = SLI[1]; #스윙하이 사이의 최저점 계산 if SLV1 > 0 and SLV < SLV1 Then { B = 2; HH = 0; for cnt = Index-SLI to Index-SLI1 { Condition2 = False; if HH == 0 or (HH > 0 and H[cnt] > HH) Then { HH = H[cnt]; if H[cnt] > mav[cnt] and H[cnt+1] > mav[cnt+1] Then { Condition2 = true; } } } if Condition2 == true Then { B = 3; BV = HH; } } } if S == 3 Then Sell("s",AtStop,SV); if B == 3 Then Buy("b",AtStop,BV); 즐거운 하루되세요 > yosong 님이 쓴 글입니다. > 제목 : 지표 부탁드립니다 > 첨부 파일에서(1번그림) 1.1번 스윙과 2번스윙에서 1번보다 2번이 클때 저점 3번을 저장 2.2번 고점을 넘기 전까지는 저점 3번을 저장(넘으면 새로운 저점 3번 생성) 3.저점 3번은 9이평(빨간선)보다 L,L[1]가 작아야 함(9이평보다 저점이 2번이상 작아야함) 4.저점 3번이 깨지면 4번 신호 발생 첨부 파일에서(2번그림) 위와 반대 1.1번 스윙과 2번스윙에서 1번보다 2번이 작을때 고점 3번을 저장 2.2번 저점이 깨지기 전까지는 고점 3번을 저장(깨지면 새로운 고점 3번 생성) 3.고점 3번은 9이평(빨간선)보다 H,H[1]가 커야 함(9이평보다 고점이 2번이상커야함) 4.고점 3번이 넘으면 4번신호 발생
프로필 이미지
yosong
2021-04-06
891
글번호 147751
지표
답변완료

시스템수식 부탁드립니다

안녕하세요~ 수고 많으십니다 당일중심가기준으로 일목구름층이 중심가 위에 있고 구름상단돌파시 매수신호 당일중심가기준으로 일목구름층이 중심가 아래에 있고 구름하단돌파시 매도신호 각 신호는 중복발생토록 부탁드리며, 각 수치는 변경가능토록 부탁드립니다 감사합니다 수고 하십시요~
프로필 이미지
gopang
2021-04-06
877
글번호 147749
시스템