커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

번성 님에 의해서 삭제되었습니다.

프로필 이미지
번성
2022-01-25
0
글번호 155767
시스템
답변완료

문의드립니다.

안녕하세요, 아래조건의 강조되는 표시를 즉 25봉전 캔들위에 표시되는게 아니라, 현재봉위에 붉은강조, 파란강조 신호를 표시하고 싶습니다. (첨부된 사진을 보시면 캔들위에 빨강색, 파랑색으로 마킹이 된것 처럼 표기하고 싶습니다.) 1. 후행스팬이 기준선을 상향돌파할때 현재봉 위에 붉은점 강조 신호를 표시하고, 후행스팬이 기준선을 하락돌파할때 현재봉 위에 파란점 신호표시를 한다. 2. 후행스팬이 볼린저밴드10선 상단을 상향돌파할때 현재봉 위에 붉은점 강조 신호를 표시하고, 후행스팬이 볼린저밴드10선 상단을 하락돌파할때 현재봉 위에 파란점 신호표시를 한다. 3. 후행스팬이 60이동평균선 상향돌파할때, 현재봉 위에 붉은점 강조 신호를 표시하고, 후행스팬이 60이동평균선 하락돌파할때, 현재봉 위에 파란점 신호표시를 한다. 항상 감사드립니다.
프로필 이미지
마법77
2022-01-25
941
글번호 155766
강조
답변완료

부탁 드립니다~~

a=valuewhen(1,(avg(c(2),120)<avg(c(1),120) and avg(c(1),120)<avg(c,120) and avg(c(1),20)<avg(c,20) and avg(c(1),5)>avg(c,5)),avg(c(1),5)); if(a(1)>a,a(1),a) 종가상 여기를 돌파 한 종목을 찾고 싶습니다. 부탁 드립니다.
프로필 이미지
hg950265
2022-01-25
775
글번호 155764
종목검색
답변완료

이평돌파 후 재돌파

var : v1(0,data1),v2(0,data1); v1 = m(c,5); v2 = m(c,20); if crossup(v1,v2) 이후 돌파 가격에서 1포인트 이상 하락 and 재돌파 crossup(v1,v2) then buy(); 수식 부탁드립니다. 항상 고맙습니다.
프로필 이미지
좌오비우오비
2023-06-22
685
글번호 155757
시스템

신대륙발견 님에 의해서 삭제되었습니다.

프로필 이미지
신대륙발견
2022-01-25
6
글번호 155753
지표
답변완료

시스템 이상 검토의뢰

수고 하십니다 ! 안녕하세요 예스스탁입니다. 틱수를 외부변수로 처리해 드립니다. 값은 종가로 비교를 합니다. 골든크로스시 종가보다 n틱이상 상승했으면 다음 데드크로스에 매도 데드크로스시 종가보다 n틱이상 하락했으면 다음 골드크로스에 매수 input : n(20); var : T(0),S(0); var1 = ma(c,60); var2 = ma(C,120); if CrossUp(var1,Var2) Then { T = 1; S = c; if T[1] == -2 Then Sell(); } if CrossDown(var1,Var2) Then { T = -1; S = c; if T[1] == 2 Then Sell(); } if T == 1 and C >= S+PriceScale*n Then T = 2; if T == -1 and C <= S-PriceScale*n Then T = -2; 즐거운 하루되세요 > tnsflwls 님이 쓴 글입니다. > 제목 : 시스템 이상 검토의뢰 > 수고 하십니다 ! 안녕하세요 예스스탁입니다. var : T(0),S(0); var1 = ma(c,60); var2 = ma(C,120); if CrossUp(var1,Var2) Then { T = 1; S = c; if T[1] == -2 Then Sell(); } if CrossDown(var1,Var2) Then { T = -1; S = c; if T[1] == 2 Then Sell(); } if T == 1 and C >= S+PriceScale*20 Then T = 2; if T == -1 and C <= S-PriceScale*20 Then T = -2; 즐거운 하루되세요 > tnsflwls 님이 쓴 글입니다. > 제목 : 시스템 작성의뢰 > 수고 하십니다 ! 이동평균선 60선 이 120선을 crossup 할 때 가격 보다 20틱 이상 상승 한 다음 이동평균선 60선 이 120선을 crossdown 할 때는 매도를 , 이동평균선 60선 이 120선을 crossdown 할 때 가격보다 20틱 이상 하락 한 다음 이동평균선 60선 이 120선을 crossup 할 때는 매수를 체결하는 수식 작성을 부탁 드립니다 . *** 수고 하세요 *** ***** 위 수식을 부탁드렸으나 pricescale 의 틱 숫자 적용이 안되어서 다시 한번 수식 작성을 부탁 드립니다 ! <<<<< 위 수식도 적용이 안되는데요 , 60선과 120선이 크로즈 할때의 가격을 적용을 해야 pricescale 의 틱 숫자 적용이 될것 같은데 방법이 없을까요 ? ***** 수고 하세요 *****
프로필 이미지
tnsflwls
2022-01-25
1005
글번호 155752
시스템
답변완료

수식문의드립니다

간단한 지정가 채널 돌파전략을 만들려 하는데요 상한선을 상향돌파하면 매수, 하한선을 하한돌파하면 매도 input : HB(채널 고가 설정), LB(채널 저가 설정) ; if Close >= HB Then Buy() ; if Close <= LB Then Sell() ; 이렇게 돌렸더니 기본 포지션상태가 매수 or 매도로 잡혀있고 (실제로 잔고가 있지는 않음) 매수 or 매도 조건이 되면, 취소주문과 들어가야할 주문이 동시에 들어갑니다 ex) 매도포지션이 잡혀있는 상태에서 매수조건이 되면, 매도 청산매수주문 + 매수주문 으로 총 매수 2계약이 체결됩니다 (설정은 1계약씩 체결되도록 해놓은 상황) 처음엔 아무 포지션도 없고, 돌파 조건이 되면 1계약만 체결되게 하고싶은데 뭐가 문제인지 확인 부탁드립니다
프로필 이미지
jshwang2
2022-01-24
1059
글번호 155751
시스템
답변완료

수식변경

늘 감사합니다. 아래수식 수정변경 1. 수평선의 길이를 직전파동의 길이 만큼 연장해 주세요. 예를들면, 직전파동(사선)이 5센티면, 수평선도 5센티로 현재는 전파동 까지만 되어 있어요 2. 거듭 감사히 잘 쓰고 있습니다. Input:length(10),종가사용여부(0),파동선두께(2),수치표시(1); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),text2(0),TL2(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==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 { 최종고가 = 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]); var1 = 고[0,1]-저[0,1]; TL2 = TL_New(저[1,3],저[1,4],저[1,1]-var1,sDate,sTime,저[1,1]-var1); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 2, 1); Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1]-저[1,1],2)+NewLine); Text_SetStyle(Text2, 2, 1); Text_SetColor(text2,RED); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,GREEN); TL_SetSize(TL2,파동선두께); TL_SetColor(TL2,BLUE); } 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]); TL_SetEnd(TL2,고[1,3],고[1,4],저[1,1]-var1); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]); Text_SetString(Text2,NumToStr(고[1,1]-저[1,1],2)+NewLine); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = 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]); var1 = 고[0,1]-저[0,1]; TL2 = TL_New(고[1,3],고[1,4],고[1,1]+var1,sDate,sTime,고[1,1]+var1); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); Text2 = Text_New(저[1,3],저[1,4],저[1,1],NewLine+NumToStr(저[1,1]-고[1,1],2)); Text_SetStyle(Text2, 2, 0); Text_SetColor(text2,RED); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,GREEN); TL_SetSize(TL2,파동선두께); TL_SetColor(TL2,RED); } 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]); TL_SetEnd(TL2,저[1,3],저[1,4],고[1,1]+var1); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]); Text_SetString(Text2,NewLine+NumToStr(저[1,1]-고[1,1],2)); } } 최종꼭지점 = "저점"; }
프로필 이미지
상암동
2022-01-24
865
글번호 155750
지표
답변완료

재문의 드립니다.

input : StartTime(80000),EndTime(065000); input : P(2000),n(2); input : 익절틱수(800),당일누적수익틱수(80),횟수(20); var : Tcond(false),N1(0),dayPl(0),당일수익(0),Xcond(false),Xcount(0); 당일수익 = PriceScale*당일누적수익틱수; IF Endtime > starttime Then SetStopEndofday(Endtime); Else { 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; Xcond = false; N1 = NetProfit; IF Endtime <= starttime Then { SetStopEndofday(0); } } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then { Xcond = true; Xcount = Xcount+1; #추가 } } var1 = ma(C,P); if Tcond == true and Xcount < 횟수 Then#수정 { if MarketPosition == 0 and (CrossUp(c,var1) or CrossDown(c,var1)) Then { value1 = H; Value2 = L; Buy("b",OnClose,DEF,1); } if MarketPosition == 1 Then { if C < Value2 Then { Value2 = C; Sell("bs",OnClose,DEF,CurrentContracts+n); } } if MarketPosition == -1 Then { if C > Value1 Then { Value1 = C; Buy("sb",OnClose,DEF,CurrentContracts+n); } } } SetStopProfittarget(PriceScale*익절틱수,PointStop); if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then { ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } 지금 위의 수식은 첫번째 누적수익이 만약에 80틱이였다면 두번째 누적수익도 첫번째와 상관없이 80틱이여야 하는데 그렇게 안되네요. 매 횟수될 때 마다 누적수익이 만족 되어야 합니다. 쉽게 말해서 첫번째 누적수익. 첫번째하고 상관없이 두번째 누적수익.... 이런식으로 계속 횟수 만큼 거래하면 됩니다. 그리고 당일 횟수만 거래 하고 다음날 부터는 거래가 없더라구요. 매일 매일 횟수만큼 거래되게 해 주세요. 어떨게 글로 설명이 되었나 모르겠네요. 부탁합니다. 그럼 수고하세요.
프로필 이미지
아침
2022-01-24
1113
글번호 155749
시스템