커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

다시함 부탁드려요

input : Length(10); //SwingHigh와 SwingLow의 기간값 input : LengthMult(2); //기본 기간값에 N배수(굵게 표시되는 중요 지지선과 저항선) input : NdayAgo(0); //N일전(0이면 당일, 1이면 전일, 2이면 전전일...) var : 저항선(0), 지지선(0), Rcount(0), Scount(0); var : 저항선2(0), 지지선2(0), Rcount2(0), Scount2(0); var : R1(0), R2(0), R3(0), R4(0), R5(0), R6(0), R7(0), R8(0), R9(0),R10(0), R11(0), R12(0), R13(0), R14(0), R15(0), R16(0), R17(0), R18(0), R19(0),R20(0); var : S1(0), S2(0), S3(0), S4(0), S5(0), S6(0), S7(0), S8(0), S9(0),S10(0), S11(0), S12(0), S13(0), S14(0), S15(0), S16(0), S17(0), S18(0), S19(0),S20(0); var : R81(0), R82(0), R83(0), R84(0), R85(0), S91(0), S92(0), S93(0), S94(0), S95(0); var1 = DateToJulian(currentdate); var2 = DateToJulian(date); (이하생략) } input:renkoSize(0.5),length1(10),NumATRs(1.5); var:j(0),k(0),renkoCnt(0),gubun(0),Sum(0),trSum(0),atrV(0),time1(0),filename("renko3.txt"),printOK(False); array:OO[50](0),HH[50](0),LL[50](0),CC[50](0), TR[50](0), //True Range upperLine[50](0), //상단채널 lowerLine[50](0), //하단채널 maV[50](0); //이평선 (이하생략) } ##. 지표식 input:left(5),right(5),구분(1); var:j1(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0), ovr(0),반등(1),반락(-1); array:hv[10](0),lv[10](0),hb[10](0),lb[10](0), r[8](0),fr[8](0); (이하생략) } input : N1(3); var : cnt1(0),count1(0); #당일진입횟수 count1 = 0; for cnt1 = 0 to 200{ if sdate == EntryDate(cnt1) Then count1 = count1+1; } If CrossDown(c,s1) and count1 < N1 and stime >= 180100 and stime < 235000 Then { Sell ("LE1") ; } If Crossup(c,r1) and count1 < N1 and stime >= 180100 and stime < 235000 Then { buy ("TE1") ; } 위의 두식에 외국인 선물순매수수량이 0보다 크면 매수,0보다 작으면 매도하라는 조건부를 매수진입식과 매도진입식에 넣고 싶은데 잘안되네요.... 다시한번 부탁드립니다... 참고로 일부식은 (이하생략)으로 줄여놓았습니다.. 추가질문입니다... 야간 cme장에서는 외국인 선물순매수수량 데이타를 참조할수 없는지요.. 야간 시스템식을 작성하는데 외국인 선물순매수수량 데이타를 넣고 싶은데... 우리투자증권인데 &#52287;을수가 없네요 ,,,,부탁합니다...
프로필 이미지
오동도물개
2015-08-19
193
글번호 89630
시스템
답변완료

검색식 변환 부탁드립니다.

아래 검색식을 120분봉에서 검색할수있도록 240분봉으로 변환이 가능하면 부탁드립니다. 감사합니다. input : n(0); var : BBup(0); BBup = BollBandUp(80,2); var3 = countif(c < BBup,n); if C >= value3 And #종가가 최근고점위 C >= Bbup and #종가가 볼밴위 L < BBup and C > BBup And #1봉전은 저가는 하단아래 종가는 상단위 var3[1] == n then #1봉전 기준 4봉연속(2~5) 저가가 하단아래 find(1);
프로필 이미지
부양가족
2015-08-18
175
글번호 89629
종목검색
답변완료

문의드립니다.

안녕하세요. 해선 Crude oil종목에 적용 하여보니 아래식에서 2가지문제가 발생 합니다 수정 부탁드립니다. 수정사항 1.crossup or crossdown 발생시 진입과 청산이 한번만 발생되어야 하나 익절과 손절폭이 좁아 한봉에서 진입과 청산이 발생되면 또다시 신호가 발생됩니다.(진입후 2봉이내 청산발생시 동일 현상) 진입제어 추가하여주세요 2. if stime == 160000 or (stime > 160000 and stime[1] < 1600000) Then{ exitlong("bexit"); ExitShort("sexit"); } 진입신호 이후 이문장의 청산신호가 자주 발생됩니다. 이문장은 포지션보유시 마감시간이되면 강제청산하라는 신호아닌가요? 감사합니다. ===================================================================== input : af1(0.01),max1(0.1); input : N(1); var : para1(0),T1(0); var : Bcond1(false); var : Scond1(false); para1 = sar(af1,max1); if stime >= 170000 or stime < 160000 Then{ if crossup(C,para1) Then{ Bcond1 = false; var1 = H; T1 = 1; } if CrossDown(C,para1) Then{ Scond1 = false; var1 = L; T1 = -1; } if T1 == 1 and Bcond1 == false Then buy("B1",AtStop,var1+PriceScale*1); if T1 == -1 and Scond1 == false Then sell("S1",AtStop,var1-PriceScale*1); if MarketPosition == 1 then{ Bcond1 = true; if CrossDown(c,para1) Then exitlong("bx1",OnClose,def); } if MarketPosition == -1 then{ Scond1 = true; if crossup(c,para1) Then ExitShort("sx1",OnClose,def,"S1"); } } SetStopLoss(PriceScale*10,PointStop); SetStopTrailing(PriceScale*N,PriceScale*20,PointStop); if stime == 160000 or (stime > 160000 and stime[1] < 1600000) Then{ exitlong("bexit"); ExitShort("sexit"); }
프로필 이미지
베드로
2015-08-19
168
글번호 89628
시스템
답변완료

문의 드립니다.

아래의 수식에 분할매수 2차 : value4 = (((BB-AA)/5)*2)+AA; 손절 : value5 = AA; 내용을 추가하고자 합니다 감사합니다. ------아래---- input : N(1); var : AA(0),BB(0),CC(0); var : TF(0),VV(0),VH(0),VH1(0); var : cnt(0),count(0); count = 0; for cnt = 0 to 20{ if sdate ==EntryDate(cnt) Then count = count+1; } AA = (highest(H,1500)+lowest(L,1500))/2; BB = Highest(H,900); var1 = NthHighestBar(1,H,900); CC = lowest(L,var1); value1 = (((BB-AA)/5)*3)+AA; value2 = (((BB-AA)/5)*1.5)+CC; TF = dayindex%15; if date != date[1] then{ VV = 0; VH = 0; VH1 = VH[1]; } if (TF < TF[1] and date == date[1]) Then VV = 0; VV = VV +V; if VV > VH Then VH = VV; if stime < 91500 Then value3 = VH; if (stime >= 091500 and value3 <= VH1/2) or (stime >= 123000 and value3 > VH/2) then{ if CrossDown(c,value1) and count < N Then buy(); if crossup(c,value2) Then ExitLong(); }
프로필 이미지
사과쥬스
2015-08-18
163
글번호 89627
시스템

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

프로필 이미지
bbcc
2015-08-18
0
글번호 89626
시스템
답변완료

문의드립니다

주식의 시스템식입니다 이평선 60일선을 돌파하면 매수 60일선 하향돌파하면 청산 다시 돌파하면 매수 다시 하향돌파하면 청산 식 부탁드립니다
프로필 이미지
bbcc
2015-08-18
150
글번호 89625
시스템

초록이 님에 의해서 삭제되었습니다.

프로필 이미지
초록이
2015-08-18
0
글번호 89622
시스템
답변완료

재문의

43640 재문의합니다 아래수식에서보면 직전고저점이 만들어지는 수평선에서 고점을 넘으면 매수 저점을깨면 매도식 부탁합니다 Input:barCnt(5); Var:j(0),turnPntBit(""),TL1(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } // 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다 // 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다 Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt); Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt); // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환전구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or (turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 입력변수의 봉개수 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; #If turnPntArr[1][1] <> turnPntArr[1][0] Then # TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], # sDate[barArr[1]],sTime[barArr[1]],valArr[1]); #Else # TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN); var : TL11(0),TL12(0),Tx1(0),tx2(0),V1(0),V2(0); if turnPntArr[1][0] == "Hi" Then{ TL_Delete(TL11); TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TL_SetExtRight(TL11,true); TL_SetColor(TL11,BLACK); TL_SetSize(TL11,2); v1 = valArr[1]; } if turnPntArr[1][0] == "Lo" Then{ TL_Delete(TL12); TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TL_SetExtRight(TL12,true); TL_SetColor(TL12,BLACK); TL_SetSize(TL12,2); v2 = valArr[1]; } Text_Delete(Tx1); Tx1 = Text_New(sdate,stime,V1+PriceScale,NumToStr(V1,2)); Text_SetColor(tx1,MAGENTA); Text_SetStyle(tx1,0,1); Text_Delete(Tx2); Tx2 = Text_New(sdate,stime,V2-PriceScale,NumToStr(V2,2)); Text_SetColor(tx2,CYAN); Text_SetStyle(tx2,0,0);
프로필 이미지
백진강
2015-08-18
170
글번호 89618
시스템
답변완료

시스템 문의 드립니다.

수고 많으십니다. 1. 데이터 2와 3을 옵션 콜과 풋을 넣으면... 데이터 2와 3이 교차되고 다음봉에 교차한쪽으로 선물 차트에서 지표로 수평선을 그리고 싶습니다. 2. 위 1항에서 지표 수평선이 그어지는 곳에서 시스템 식을 만들고 싶습니다. 1) 교차에서 콜이 이겨서 매수를 하였다면.(선물) 2) 매수 포지션이 있는 상태에서 선물로 진입이 되어 수익이 나왔을때 상대 풋의 당일 고점을 콜이 이긴상태에서는 포지션을 들고 가다가 콜이 상대 풋의 당일 고점을 하향한다면 매수 포지션 청산 3) 매도 포지션은 반대 위와 같이 시스템을 만들고 싶습니다.
프로필 이미지
바다선물
2015-08-18
166
글번호 89616
시스템