커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

5-20,20-60 골든후 최고가대비 10퍼센트하락시 매도하기

수고하십니다 얼마전에 질의(63301)하여 5-20, 20-60 골든크로스 후 매수하고 데드크로스에 매도하는 메크로를 작성하여 주셨는데요,, 요 몇일 편집기에서 작성하고 시스템성능보고서를 보니 실적이나 승율이 아주 엉망으로 나와서, 오히려 꺼꾸로 하니 승율은 10%대로 나오던데(5-20, 20-60 골든 매도, 데드 매수), 하여 5-20, 5-60 골든크로수 후 매수하고 매수시점이후부터 최고값 대비 10%하락시 매도하게 작성을 해보는 중인데 결과가 안나옵니다,, 로직상 나올수없는건지,,제가잘못했겟지요 아마,,, 제가 작성한거는 아래와 같습니다 한번 봐주실것을 부탁드립니다. 바탕화면에 올리니 특수문자는 쓸수없다고 나옵니다,,,왜인지 모르지만, 지난번 제 질문에 대한 답변시엔 바탕화면에 메크로가 있었는데,, 수고하세요,, input : P1(5),P2(20),P3(60); var1 = ma(C,P1); var2 = ma(C,P2); var3 = ma(C,P3); var4 = 0; Condition1 = var1 > var2 and var1 > var3; // Condition2 = var1 < var2 and var2 < var3; if Condition1 == true and Condition1[1] == false Then buy("bbbbb"); if var4 < C Then { // 종가가 이전종가보다 더크면 바꿈(최고가를 &#52287;기위해) var4 = C; } Else { if var4 * 0.1 < var4 - O then exitlong("sssss"); // 최고가대비 10%이상 빠지면 매도 } 한번 봐주실것을 부탁드립니다.
프로필 이미지
atmskill
2019-07-18
391
글번호 130477
시스템
답변완료

재문의 드립니다

안녕하세요 예스스탁입니다. 문의하신 내용을 정확히 이해하지 못했습니다. 차트가 현재봉 기준 N개봉을 조회하기에 5일이나 10일단위의 종가이면 차트의 첫봉의 날짜 기준으로 매일 다르게 됩니다. 또한 해당 값은 현재종가입니다. 현재봉기준 5일이나 10일이면 현재봉 값이 최종 종가가 되어 작성된 식과 다른 내용이 없습니다. 좀더 자세한 내용을 올려주시기 바랍니다. 즐거운 하루되세요 > todrkr 님이 쓴 글입니다. > 제목 : 문의드립니다 > var : sum(0); sum = -(data2(c)+data3(c)+data4(c)); plot1(data2(c),"2"); plot2(data3(c),"3"); plot3(sum,"4"); .............................................................................. 윗 지표를 5일단위, 10일단위로 묶어서 보고 싶습니다. 감사합니다 ................................................................. 현재 상기 수식을 가지고 일봉 단위로 보고 있는데 일봉상 나온 결과값을 5일 단위 누적으로 보고 싶어서입니다. 근데 챠트에는 주봉만 나와 있지 영업일수 5일로 묶는 기준이 없어서요 부탁 드립니다
프로필 이미지
todrkr
2019-07-18
310
글번호 130475
지표
답변완료

지표 질문입니다

오늘이 음봉일때 오늘 이후 4번째 양봉이 발생할 때 4번째 양봉 고가를 표시하는 지표식을 알고싶습니다
프로필 이미지
회원
2019-07-18
253
글번호 130465
지표
답변완료

heikin ashi차트

안녕하세요 heikin ashi차트를 강조수식으로 부탁드립니다 김사합니다
프로필 이미지
bestkim
2019-07-18
332
글번호 130464
강조
답변완료

부탁드립니다

전일시가 전일종가 전일중간값 당일시가 당일중간값 당일고가 당일저가
프로필 이미지
김원식
2019-07-18
280
글번호 130463
지표

김원식 님에 의해서 삭제되었습니다.

프로필 이미지
김원식
2019-07-18
0
글번호 130462
지표
답변완료

부탁드립니다

나스닥 전일종가 전일중간값 전일시가 당일시가 고가 중간값 저가 부탁드립겠습니다
프로필 이미지
김원식
2019-07-18
252
글번호 130461
지표
답변완료

지표

input : af(0.02), maxAF(0.2); input : 텍스트출력(1),선굵기(2); var : T(0),cnt(0),count(0); var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0),day1(0),day0(0),TL3(0); var : TL1(0),TL2(0),tx1(0),tx2(0),tx11(0),tx22(0),idx(0),tx99(0),tx88(0); Array : HD[20](0),HT[20](0),HH[20](0),LD[20](0),LT[20](0),LL[20](0); Array : HI[20](0),LI[20](0); var1 = CSar(af,maxAF); if bdate != bdate[1] Then { day0 = sdate; day1 = day0[1]; } if crossup(c,var1) Then { T = 1; HH[0] = H; HD[0] = sdate; HT[0] = stime; HI[0] = index; for cnt = 1 to 19 { HD[cnt] = HD[cnt-1][1]; HT[cnt] = HT[cnt-1][1]; HH[cnt] = HH[cnt-1][1]; HI[cnt] = HI[cnt-1][1]; } if LL[0] > 0 Then { if 텍스트출력 == 1 then { Tx11 = Text_New(HD[1],HT[1],HH[1],NumToStr((HH[1]-LL[1])/PriceScale,0)+NewLine+NumToStr(HH[1],2)); Text_SetStyle(tx11,2,1); Text_SetColor(tx11,BLUE); Text_Delete(tx1); Tx1 = Text_New(HD[0],HT[0],HH[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(HH[0],2)); Text_SetStyle(tx1,2,1); Text_SetColor(tx1,GRAY); Condition1 = false; for cnt = 1 to 19 { if Condition1 == false and abs(LL[0]-LL[cnt]) <= PriceScale*1 and LD[cnt] >= day1 Then { Condition1 = true; TL1 = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetSize(TL1,선굵기); TL_SetColor(TL1,CYAN); idx = abs(LI[0]-LI[cnt]); tx99 = Text_New(LD[0],LT[0],LL[0],NumToStr(idx,0)); Text_SetColor(tx99,CYAN); Text_SetStyle(tx99,0,2); Text_SetBold(tx99,1); } } } } } if CrossDown(c,var1) Then { T = -1; LL[0] = L; LD[0] = sdate; LT[0] = stime; LI[0] = index; for cnt = 1 to 19 { LD[cnt] = LD[cnt-1][1]; LT[cnt] = LT[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; LI[cnt] = LI[cnt-1][1]; } if HH[0] > 0 Then { if 텍스트출력 == 1 then { Tx22 = Text_New(LD[1],LT[1],LL[1],NumToStr((HH[1]-LL[1])/PriceScale,0)+NewLine+NumToStr(LL[1],2)); Text_SetStyle(tx22,2,0); Text_SetColor(tx22,RED); Text_Delete(tx2); Tx2 = Text_New(LD[0],LT[0],LL[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(LL[0],2)); Text_SetStyle(tx2,2,0); Text_SetColor(tx2,MAGENTA); Condition2 = false; for cnt = 1 to 19 { if Condition2 == false and abs(HH[0]-HH[cnt]) <= PriceScale*1 and HD[cnt] >= day1 Then { Condition2 = true; TL2 = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetSize(TL2,선굵기); TL_SetColor(TL2,yellow); idx = abs(HI[0]-HI[cnt]); tx99 = Text_New(HD[0],HT[0],HH[0],NumToStr(idx,0)); Text_SetColor(tx99,CYAN); Text_SetStyle(tx99,0,2); Text_SetBold(tx99,1); } } } } } if T == 1 then { if H > HH[0] Then { HH[0] = H; HD[0] = sdate; HT[0] = stime; if 텍스트출력 == 1 then { Text_Delete(tx1); Tx1 = Text_New(HD[0],HT[0],HH[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(HH[0],2)); Text_SetStyle(tx1,2,1); Text_SetColor(tx1,black); TL_Delete(TL3); Text_Delete(tx88); Condition3 = false; for cnt = 1 to 19 { if Condition3 == false and abs(HH[0]-HH[cnt]) <= PriceScale*1 and HD[cnt] >= day1 Then { Condition3 = true; TL3 = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetSize(TL3,선굵기); TL_SetColor(TL3,yellow); idx = abs(HI[0]-HI[cnt]); tx88 = Text_New(HD[0],HT[0],HH[0],NumToStr(idx,0)); Text_SetColor(tx88,CYAN); Text_SetStyle(tx88,0,2); Text_SetBold(tx88,1); PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); } } } } } if T == -1 then { if L < LL[0] Then { LL[0] = L; LD[0] = sdate; LT[0] = stime; if 텍스트출력 == 1 then { Text_Delete(tx2); Tx2 = Text_New(LD[0],LT[0],LL[0],NumToStr((HH[0]-LL[0])/PriceScale,0)+NewLine+NumToStr(LL[0],2)); Text_SetStyle(tx2,2,0); Text_SetColor(tx2,red); TL_Delete(TL3); Condition3 = false; for cnt = 1 to 19 { if Condition3 == false and abs(LL[0]-LL[cnt]) <= PriceScale*1 and LD[cnt] >= day1 Then { Condition3 = true; TL3 = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetSize(TL3,선굵기); TL_SetColor(TL3,yellow); idx = abs(LI[0]-LI[cnt]); tx88 = Text_New(LD[0],LT[0],LL[0],NumToStr(idx,0)); Text_SetColor(tx88,CYAN); Text_SetStyle(tx88,0,2); Text_SetBold(tx88,1); PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); } } } } } 그림1에 적용되있는 수식입니다 그림 2번과 같이 텍스트가 아닌 고점에서는 파란선 저점에서는 빨간선이 나올수 있게 수정 부탁드립니다.. 횡으로 보이는 노란색과 하늘색 선은 안보이게 수정 부탁드려요 감사합니다 수고 하십시요
프로필 이미지
대박대박
2019-07-18
458
글번호 130460
지표
답변완료

문의드립니다

안녕하세요, 앞전에 문의드렸던 식에서 적용이 잘안되는점이있어 문의드립니다. 위에서 아래도 터치때 매수부분이 간혹 발생안되는점이있어 a. 어디에서든 머물고 있든 터치하면 진입하는것으로 변경부탁드립니다. 터치않고 지나가면 위든아래든 진입하지않음 b. 질문: 시스템식이전에 보유하고있던 주식까지 함께 시스템에서 청산하려고 하면 어떻게 수량만 맞추면 되는건가요? ex) a종목 10개보유 시스템작동 진입1개 손절.청산 11개로 설정하면 기존의 10개와 시스템진입1개 합쳐서 11개청산되는가요? 감사합니다! -------------------------------------------------------------------------- input : 저점날짜(20190619),저점가격(3275); input : 고점날짜(20190620),고점가격(3380); input : 시작일(20190620),시작시간(101000); input : 진입비율1(65.2),수량1(100),청산비율1(40.0); input : 진입비율2(70.0),수량2(50),청산비율2(45.0); input : 진입비율3(80.0),수량3(30),청산비율3(60.0); input : 손절비율(90); var : HH(0),LL(0),newHigh(false),Tcond(false),Trade(false); if sdate == 저점날짜 and sdate != sdate[1] Then LL = 저점가격; if sdate == 고점날짜 and sdate != sdate[1] Then { HH = 고점가격; newHigh = true; } if sdate == 시작일 and stime > 시작시간 Then Trade = true; if sdate >= 고점날짜 and sdate >= 저점날짜 and HH > 0 and LL > 0 Then Tcond = true; if tcond == true then { if C <= HH*0.85 Then newhigh = false; if newhigh == true and H > HH Then HH = H; if Trade == true then { #첫진입(65.2%위에서 아래로 터치하면 즉시 매수) if TotalTrades == 0 and MarketPosition == 0 and L > HH-(HH-LL)*(진입비율1/100) Then buy("b1",atlimit,HH-(HH-LL)*(진입비율1/100),수량1); #매수 후 if MarketPosition == 1 then { #두번째진입(70.0% 위에서 아래로 터치하면 즉시 추가매수) if MaxEntries == 1 and L > HH-(HH-LL)*(진입비율2/100) Then buy("b2",atlimit,HH-(HH-LL)*(진입비율2/100),수량2); #세번째진입(80.0% 위에서 아래로 터치하면 즉시 추가매수) if MaxEntries == 2 and L > HH-(HH-LL)*(진입비율3/100) Then buy("b3",atlimit,HH-(HH-LL)*(진입비율3/100),수량3); #첫 진입후 40%를 상회하면 즉시 전량청산 if MaxEntries == 1 Then ExitLong("bx1",Atlimit,HH-(HH-LL)*(청산비율1/100)); #두번 진입후 45%를 상회하면 즉시 전량청산 if MaxEntries == 2 Then ExitLong("bx2",Atlimit,HH-(HH-LL)*(청산비율2/100)); #세번 진입후 60%를 상회하면 즉시 전량청산 if MaxEntries == 3 Then ExitLong("bx3",Atlimit,HH-(HH-LL)*(청산비율3/100)); #손절비율 이하로 하락시 즉시 전량청산 ExitLong("bx",AtStop,HH-(HH-LL)*(손절비율/100)); } } }
프로필 이미지
스누피독
2019-07-18
272
글번호 130457
시스템