커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

매수신호와 청산신호 동시 발생

안녕하세요, 다음의 수식에서 매수신호와 청산신호가 동시에 발생하는 오류가 생겨 문의드립니다. //매수 If MarketPosition == 0 AND COND_B == 1 Then Buy("B1", OnClose, Def, 1); //종가대비 100pt 하락시 추가매수, 이후 50pt씩 하락시 잔고 5개 될때까지 추가매수 반복 If IsEntryName("B1", 1) == True AND C < DayClosePrice - 100 Then Buy("B2", OnClose, Def, 1); If IsEntryName("B2", 1) == True AND C < LatestEntryPrice(0) - 50 Then Buy("B3", OnClose, Def, 1); If IsEntryName("B3", 1) == True AND C < LatestEntryPrice(0) - 50 Then Buy("B4", OnClose, Def, 1); If IsEntryName("B4", 1) == True AND C < LatestEntryPrice(0) - 50 Then Buy("B5", OnClose, Def, 1); //종가대비 100pt 상승시 매수청산 1개, 이후 50pt씩 오를 때 잔고 0 될때 까지 추가 매수청산 If C > EntryPrice(1) Then Begin If C > DayClosePrice + 100 Then ExitLong("EL1", OnClose, Def, "", 1, 1); If CurrentContracts >= 2 AND C > ExitPrice(1) + 50 Then ExitLong("EL2", OnClose, Def, "", 1, 2); End //매도 If MarketPosition == 0 AND COND_B == -1 Then Sell("S1", OnClose, Def, 1); //종가대비 100pt 상승시 추가매도, 이후 50pt씩 상승시 잔고 5개 될때까지 추가매도 반복 If IsEntryName("S1", 1) == True AND C > DayClosePrice + 100 Then Sell("S2", OnClose, Def, 1); If IsEntryName("S2", 1) == True AND C > LatestEntryPrice(0) + 50 Then Sell("S3", OnClose, Def, 1); If IsEntryName("S3", 1) == True AND C > LatestEntryPrice(0) + 50 Then Sell("S4", OnClose, Def, 1); If IsEntryName("S4", 1) == True AND C > LatestEntryPrice(0) + 50 Then Sell("S5", OnClose, Def, 1); //종가대비 100pt 하락시 매도청산, 이후 50pt씩 하락시 잔고 0 될때까지 매도청산 If C < EntryPrice(1) Then Begin If C < DayClosePrice - 100 Then ExitShort("ES1", OnClose, Def, "", 1, 1); If CurrentContracts >= 2 AND C < ExitPrice(1) - 50 Then ExitShort("ES2", OnClose, Def, "", 1, 2); End
프로필 이미지
민현종
2023-01-26
872
글번호 165737
시스템
답변완료

DEMA 관련

한투의 DEMA 수식설명이 아래글에서 작성해 주신 DEMA 수식과 다른 부분이 있을까요? 만약 있다면 한투 DEMA 수식설명 기준으로 부탁 드립니다. [한투 DEMA 수식설명] DEMA(2중 지수이동평균) = EMA의 EMA EMA = {2 / ( n + 1)} X (당일종가 - 전일 EMA)+ 전일 EMA n = 9일(기본값) [이전 DEMA 관련 수식] INPUTS: LENGTH1(9),P1(5),P2(200); var : mav1(0),mav2(0),DEMA1(0); var1= EMA(C,LENGTH1); value1= EMA(EMa(C,LENGTH1),LENGTH1); DEMA1 = var1 * 2 - value1;
프로필 이미지
zephie
2023-01-26
806
글번호 165735
시스템
답변완료

문의 드립니다.

아래 조건으로 수식 부탁 드립니다. [진입조건(and)] 1) 종가>200일이평선 2) 종가>시가>DEMA(9) 3) 5일이평선>DEMA(9) [청산조건(and)] 1) DEMA(9)>시가>종가
프로필 이미지
zephie
2023-01-26
995
글번호 165730
시스템
답변완료

수정부탁드립니다

input : 기간(100); var:선1l크기(0), hTL2 (0); var1 = MA(c,기간); #전봉대비 이평이 상승할때 이평값 if var1>var1[1] Then value1 = var1; hTL2 = TL_New(sDate,sTime,0,sDate,sTime,99999999); TL_SetSize(hTL2, 선1l크기); #전봉대비 이평이 하락할때 이평값 if var1<var1[1] Then value2 = var1; hTL2 = TL_New(sDate,sTime,0,sDate,sTime,99999999); TL_SetSize(hTL2, 선1l크기); 수직선 부탁드립니다
프로필 이미지
외국인
2023-01-26
835
글번호 165728
지표
답변완료

문의 드립니다.

아래에서 손절 부분은 그대로 두고 청산하는 부분 삭제 부탁드립니다. 청산은 수동으로 할까합니다. if MarketPosition <= 0 and CrossUp(C,DayHigh(1)) Then Buy("b"); if MarketPosition == 1 Then { if CrossDown(C,DayHigh(1)) Then ExitLong("bx"); ExitLong("bp",AtLimit,DayHigh(1)+PriceScale*2); } if MarketPosition >= 0 and CrossDown(C,DayLow(1)) Then Sell("s"); if MarketPosition == -1 Then { if CrossUp(C,DayLow(1)) Then ExitShort("sx"); ExitShort("sp",AtLimit,DayLow(1)-PriceScale*2); }
프로필 이미지
선물대장
2023-01-26
1013
글번호 165726
시스템
답변완료

문의드립니다.

수고많으십니다. 5, 20선 골든/데드 선물매메어서 1. 외국인순매수금액을 참조2로해서 골든/데드이고 참고2가 50000 이상/이하일때 신호가 나오게 만들고 싶습니다. 이때 BuyF > 50000 이렇게 and 조건으로 넣었는데 작동을 안하는듯해서 확인 부탁드립니다. 위에는 아래처럼 넣었습니다. var : BuyF(0,Data2); BuyF = Data2(C); 2. 추가로 골든/데드를 만족하면 매수/매도인데 외국인순매수금액이 10000 이하/이상이면 매수/매도가 안나오게하는 수식도 부탁드립니다.
프로필 이미지
카르마다
2023-01-26
813
글번호 165716
지표

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2023-01-26
25
글번호 165713
지표
답변완료

재문의 드립니다.

안녕하세요. 어제 올려주신 식을 적용해 보니 잘안되어서 다시 문의 드립니다. ----------------------------------------------------------------- 아래 수식은 몇일전에 올려 주신 수식인데 스토캐스틱과 이평을 합성된것이 아니라 (이평 골드시에 매수 데드시에 청산) 처럼 이평 1개만으로 만든것과 같습니다. 스토캐스틱이 crossup 상태이던, crossdown 상태이던 상관없이 이평 20 이 60 이평을 돌파하면은 매수 나오게 하고 20 이평이 60 이평을 crossdown 하게 되면은 청산되는 식입니다. --------------------------------------------------------- 아래 조건과 같이 바꾸어 주시면은 감사하겠습니다. 스토캐스틱 500,300,300 이 crossup 상태 일때에만, 20 이평과 60 이평이 골드시에 매수 하고, 20 이평과 60 이평이 crossdown 일때는 청산되게 하고. 스토캐스틱이 crossdown 상태 일때에는 이평 20 과 이평 60 이 crossUp 되도 신규로 매수 신호가 나오지 않게 하고, 이미 매수해 놓은것은 이평 20 이 60을 하향돌파 할때에 청산 신호가 나오게 하는식을 만들으 주시면은 감사하겠습니다. 감사합니다. ---------------------------------------------------------------------- Input : Period(500), Period1(300), Period2(300),P1(20),P2(60); var : T(0); value1 = StochasticsK(Period,Period1); value2 = StochasticsD(Period,Period1,Period2); var1 = ma(C,P1); Var2 = ma(C,P2); If CrossUP(value1, value2) Then { T = 1; } # 매도/매수청산 If CrossDown(value1, value2) and CrossDown(value3, value4) Then { T = -1; } if T == 1 Then { if CrossUp(var1,Var2) Then Buy(); if CrossDown(var1,Var2) Then ExitLong(); }
프로필 이미지
돌쇠2
2023-01-25
590
글번호 165711
시스템
답변완료

수식부탁합니다

input:length(6); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0),고점변곡(""),저점변곡(""); var : clr1(0),clr2(0),BE(0),SE(0),cnt(0),upcond(False),dncond(False),text2(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(0==1,C,H); LL = IFF(0==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { T = 1; 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 1 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 0, 1); Text_SetColor(Text1,Red); } TL_SetSize(TL1,1); TL_SetColor(TL1,Gray); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 1 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { T = -1; 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 1 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 0, -1); Text_SetColor(Text1,Blue); } TL_SetSize(TL1,1); TL_SetColor(TL1,Gray); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 1 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; } if T == -1 and T[1] != -1 Then { TL12 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]); TL_Delete(TL13); TL13 = TL_New(고[1,3],고[1,4],고[1,1],Sdate,Stime,고[1,1]); TL_SetExtRight(TL13,true); TL_SetSize(TL13,2); TL_SetColor(TL12,clr1); TL_SetSize(TL12,2); clr1 = Pink; TL_SetColor(TL13,clr1); upcond = False; } if T == 1 and T[1] != 1 Then { TL14= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]); TL_Delete(TL15); TL15= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]); TL_SetExtRight(TL15,true); TL_SetColor(TL14,clr2); TL_SetSize(TL14,2); clr2 = LightBlue; TL_SetColor(TL15,clr2); TL_SetSize(TL15,2); dncond = False; } #===================================================# VAR:mav5(0),mav10(0),mav20(0),mav40(0),mav60(0),mav120(0),mav30(0); mav5=ma(c,5); mav10=ma(c,10); mav20=ma(c,20); mav30=ma(c,30); mav40=ma(c,40); mav60=ma(c,60); mav120=ma(c,120); #============# if (min(C,ma(c,5)) > TL_GetValue(TL13,sDate,sTime)) Then { clr1 = Red; TL_SetColor(TL13,clr1); } if max(C,ma(c,5)) < TL_GetValue(TL15,sDate,sTime) Then { clr2 = Blue; TL_SetColor(TL15,clr2); } #=========================================================================# array:Redline[4](0),Blueline[4](0),Pinkline[4](0),liblueline[4](0),libluex[4](0),Pinkx[4](0); var : Redx(0),bluex(0),고점매물대(0),Condition100(False),clr3(0); #==========================미완성==========================================# 1.고점매물대를 red 로 바꿔주세요 Condition100=t==1 and abs(고[2,1]-고[3,1])<=PriceScale*20 and abs(고[2,1]-고[4,1])<=PriceScale*20 and abs(고[3,1]-고[4,1])<=PriceScale*20 ; if Condition100 Then { 고점매물대=max(고[2,1],고[3,1],고[4,1]); } if mav20>mav30 and (min(C,ma(c,5)) >고점매물대) Then { clr3 = Red; TL_SetColor(고점매물대,clr3); } 2.red 를 카운팅 하려 합니다 Redx=0; if clr1 == Red or clr3==red Then { Bluex=0; Redx=Redx+1; } 3.if redx==1 then { 확정된 고[1,1]리턴 부탁드립니다 }
프로필 이미지
하늘거지
2023-01-25
865
글번호 165710
지표