커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

시스템 식좀 부탁드립니다

30분봉 하나의 봉에서 시작시점에서 양봉과 음봉이번갈아 나올때 양봉에서 음봉으로 변할때 음봉1번 음봉에서 양봉으로 변할때 양봉1번 이런식으로 수를 세서 양봉이 3번나오면 매수 음봉이 3번나오면 매도 식좀 부탁드립니다. 30분봉 하나의 봉에서 양봉음봉이 반복될때를 말하는 것입니다. 만약에 3번 나오지 않으면 이전에 매수상태이면 다음봉 시작에서 양봉이면 매수 음봉이면 매도이고 이전에 매도상태이면 위에것하고 반대로 하며 됩니다. 감사합니다.
프로필 이미지
무한대7
2018-11-12
164
글번호 123534
시스템
답변완료

59892 재질문드립니다.

이전 질문은 파라볼릭을 반드시사용해야한다는 단점이 있었으나, 인터넷에 감사히 올려져있는 오픈소스에서는 그러한 단점을 극복하였습니다. 사용자함수와 로직 두가지인데 나누어서 올리겠습니다. 사용자함수///////////////////////// #==========================================# # 사용자함수 : swing 지그재그 파동 # 버 전 : 1.2 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:n(NumericSimple),useCLprice(NumericSimple), oHiZZ[MaxSize1,MaxSize2](NumericArrayRef), // 열번호 1:가격,2:Index,3:sDate,4:sTime oLoZZ[MaxSize3,MaxSize4](NumericArrayRef), oTL_NewBit(NumericRef); // 1:NewLine 2:SetEndLine Var:j(0),jj(0),HH(0),LL(0),최종꼭지점(""),처리구분(""); #==========================================# HH = IFF(useCLprice==1,C,H); LL = IFF(useCLprice==1,C,L); If Index == 0 Then { oHiZZ[1,1] = HH; oLoZZ[1,1] = LL; } Condition1 = Highest(HH,n)[n+1] <= HH[n] and HH[n] > Highest(HH,n); Condition2 = Lowest( LL,n)[n+1] >= LL[n] and LL[n] < Lowest( LL,n); 처리구분 = ""; If Condition1 and Condition2 Then { // 기간고점과 기간저점 동시 발생 If oHiZZ[1,1] < HH[n] and oLoZZ[1,1] > LL[n] Then { // 기존의 파동을 벗어난 경우 If HH[n] - oHiZZ[1,1] > oLoZZ[1,1] - LL[n] Then // 많이 벗어난 쪽으로 처리 처리구분 = "고점처리"; Else If HH[n] - oHiZZ[1,1] < oLoZZ[1,1] - LL[n] Then 처리구분 = "저점처리"; Else If 최종꼭지점 == "저점" Then // 벗어난 정도가 동일하면 지그재그 순서대로 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If oLoZZ[1,1] > LL[n] Then 처리구분 = "저점처리"; Else If oHiZZ[1,1] < HH[n] Then 처리구분 = "고점처리"; Else If 최종꼭지점 == "저점" Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } Else If Condition1 and oLoZZ[1,1] < HH[n] Then 처리구분 = "고점처리"; // SwingHigh 조건이 돼도 저점보다 낮으면 가격이 계속 하락중이므로 무시한다. Else If Condition2 and oHiZZ[1,1] > LL[n] Then 처리구분 = "저점처리"; // SwingLow 조건이 돼도 고점보다 높으면 가격이 계속 상승중이므로 무시한다. oTL_NewBit = 0; #==========================================# If 처리구분 == "고점처리" Then { If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { oHiZZ[j,jj] = oHiZZ[j-1,jj]; } } oHiZZ[1,1] = HH[n]; oHiZZ[1,2] = Index - n; oHiZZ[1,3] = sDate[n]; oHiZZ[1,4] = sTime[n]; oTL_NewBit = 1; } Else If oHiZZ[1,1] < HH[n] Then { // 1번 고점보다 높은 고가 출현 oHiZZ[1,1] = HH[n]; oHiZZ[1,2] = Index - n; oHiZZ[1,3] = sDate[n]; oHiZZ[1,4] = sTime[n]; oTL_NewBit = 2; } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { oLoZZ[j,jj] = oLoZZ[j-1,jj]; } } oLoZZ[1,1] = LL[n]; oLoZZ[1,2] = Index - n; oLoZZ[1,3] = sDate[n]; oLoZZ[1,4] = sTime[n]; oTL_NewBit = 1; } Else If oLoZZ[1,1] > LL[n] then { oLoZZ[1,1] = LL[n]; oLoZZ[1,2] = Index - n; oLoZZ[1,3] = sDate[n]; oLoZZ[1,4] = sTime[n]; oTL_NewBit = 2; } 최종꼭지점 = "저점"; } If 최종꼭지점 == "고점" Then SwingZigZag = 1; Else If 최종꼭지점 == "저점" Then SwingZigZag = -1; Else SwingZigZag = 0; ////////////////////사용자 함수 종료//////////// 지표 로직입니다. 로직활용은 같이 첨부된 사진으로 설명드리겠습니다. //////////////////추세선 로직////////////////// Input:봉개수(5),종가사용여부(0); Var:TL1(0),신규구분(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = SwingZigZag(봉개수, 종가사용여부, 고, 저, 신규구분); If Value1 == 1 Then { // 고점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } Else If Value1 == -1 Then { // 저점 If 신규구분 == 1 Then // 신규 TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); Else If 신규구분 == 2 Then // 연장 TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } TL_SetSize(TL1,2); ///////////////////추세선로직 종료/////////////////// 사진과 같은 조건에 만족하면, 만족한 캔들 위에 59892처럼 캔들위에 1,2,3으로 횟수를 세고싶습니다. 이평은 위에 총 5개입니다. 감사합니다.
프로필 이미지
stockric
2018-11-10
399
글번호 123533
지표
답변완료

수식문의

아래는 피라미딩 시 손절을 강제청산함수로 사용한 수식입니다. 1.익절 2.트레일링stop 위 2가지 내용도 강제청산함수로 바꿔주시기 바랍니다. ************************************************************************* 손절을 진입별로 지정하기 위해서는 강제청산함수로 지정하시면 됩니다. input : up손절(74),up익절(192),upTR(130); input : dn손절(74),dn익절(180),dnTR(110); if MarketPosition == 1 then { ExitLong("bp1",Atlimit,EntryPrice+PriceScale*up익절); ExitLong("btr1",AtStop,highest(h,BarsSinceEntry)-PriceScale*upTR); } if MarketPosition == -1 then { ExitShort("sp1",AtLimit,EntryPrice-pricescale*dn익절); ExitShort("str1",AtStop,Lowest(l,BarsSinceEntry)+pricescale*dnTR); } if MarketPosition == 1 Then SetStopLoss(PriceScale*up손절,PointStop); else if MarketPosition == -1 Then SetStopLoss(PriceScale*dn손절,PointStop); Else SetStopLoss(0);
프로필 이미지
목마와숙녀
2018-11-09
157
글번호 123526
시스템
답변완료

문의드립니다.

도와주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 기타 매번 진입 필터링으로 아래 수식쓰고 있는데요. 이거 답변해주신 것처럼 atstop, atlimit일 때도 진입횟수 제한 필터링하려면 어떻게 해야 하나요? input : entryCount(1); var : count(0) ; #진입회수제한 Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } if Count < entryCount then { } // 답변 3 자동주문은 차트에서 신호가 발생하면 무조건 주문이 발생합니다. 실전에 적용하시면 모두 주문이 집행됩니다. 신호발생위치로 보아 buy와 sell에 atstop이나 atlimit을 사용해 신호를 발생한 것입니다. 해당타입은 봉완성시 조건이 만족하면 다음봉에 신호가 발생합니다. 진입횟수제한은 if문(완성봉기준)으로 판단하는 것입니다. 모두 전봉에 진입1회 필터링조건이 만족했기에 동시 셋팅되어 신호가 발생한것입니다. 봉미완성시에 if문으로 지정한 조건을 체크하지는 않습니다. 즉 진입이 1회이면 한봉에 동시에 셋팅되지 않게 사용자분이 전략상황에 맞게 코딩하셔야 합니다. 2. 기타 피라미딩 관련해서 질문드립니다. 피라미딩하면 봉 하나에서 신호가 여러개 나온다고 하셨습니다. 그럼 피라미딩하면 그 청산신호도 여러개가 봉 하나에서 나오나요.(예전에 만들어주신 수식 돌려보면 그런 거 같기는 한데요.) 그리고 봉 하나에서 여러개 진입, 여러개 청산 이렇게도 된다는 이야긴가요? 가령 5틱마다 재진입, 고가 -5틱 떨어질 때마다 하나하나 청산 이렇게 해놓으면 5틱마다 계속 진입하고, 같은 봉에서 고가 대비 5틱씩 떨어지면 5틱마다 청산하나요? 3. 이거 이전에 예스스탁님이 만들어주신 인트라데이 전략 해선용 제가 좀 고친 건데요. 백테스팅해보니 나스닥에선 아무 진입을 안하더라구요. 기본적인 인트라데이 전략인데 진입이 없을 것 같진 않은데요. 그리고 신호가 나오는 것도 국선 지수랑은 달라 보입니다. 수정좀 부탁드립니다. inputs: InitMin(90),stopp(1),SS(90000),EE(150000); Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False); SessStartMin = TimeToMinutes(SS); TradeTime = TimeToMinutes(sTime); input : 진입횟수(1), 손절률(1), 익절률(1) ; var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { If TradeTime <= SessStartMin + InitMin Then { If Date <> Date[1] Then { SetHigh = High; SetLow = Low; LongFlag = True; ShortFlag = True; } Else { If High > SetHigh Then SetHigh = High; If Low < SetLow Then SetLow = Low; } } Else { If sTime < EE Then { If LongFlag AND CrossUp(Close,SetHigh) Then buy(); If ShortFlag AND CrossDown(Close,SetLow) Then sell(); } } } If MarketPosition == 1 Then { LongFlag = False; ExitLong("EL", atstop,SetLow ); } If MarketPosition == -1 Then { ShortFlag = False; ExitShort("ES", atstop, SetHigh); } if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } 4. 3번 수식 수정한 내용 썸머타임에 따라 breakout시점을 다르게 하도록(썸머타임 뒤에는 한시간 뒤의 고가나 저가를 브레이크 하도록)하나 더 부탁드립니다. 저번 만들어주신 거 보고 수정하려 해도 잘 모르겠습니다.
프로필 이미지
잡다백수
2018-11-12
177
글번호 123522
시스템
답변완료

문의드립니다

매매시간 오후3시 새벽5시 추세진입 5일선 20일선 골든 데드크로스 손절30틱 익절60틱 진입조건 시장가 또는 지정가 ( 시스템에서 선택가능하도록 ) 감사합니다.
프로필 이미지
리나이
2018-11-09
135
글번호 123521
시스템
답변완료

지표식 문의입니다

노고가 많으십니다 지표식 부탁드립니다 1. 일봉차트에서 1주간의 종가를 직선으로 표시하고 싶습니다. 주봉이 양봉일 경우 일주일중 몸통으로 가장 높은 날의 종가로 직선이 그어지게 하겠다는 것입니다. 주봉 음봉이면 반대겠지요 2. 일봉차트에서 1달간의 종가를 직선으로 표시하고 싶습니다. 월봉이 양봉일 경우 한달중 몸통으로 가장 높은 날의 종가로 직선이 그어지게 하겠다는 것입니다. 월봉 음봉이면 반대겠지요
프로필 이미지
등정
2018-11-09
155
글번호 123519
지표

천왕봉 님에 의해서 삭제되었습니다.

프로필 이미지
천왕봉
2018-11-09
0
글번호 123518
시스템
답변완료

지표문의입니다

만들어주신것을 적용해 보았습니다. 실제 차트에 적용해보니 숫자가 안나오는 부분이 많이 있어서 상세하게 표시하였습니다. 동그란부분도 숫자가 모두 나오도록 만들고 싶습니다.
프로필 이미지
리나이
2018-11-09
197
글번호 123516
지표
답변완료

간단한 진입 수식좀 알려주세요

N봉중 M개가 양봉일때 매수진입 NN봉중 MM개가 양봉일 매도 진입하는 수식 부탁해요~~ 예를 들면 30분봉차트에서 30분봉의 20개중에서 15개가 음봉일때.. 매수 진입 30분봉의 20개중에서 15개가 양봉일때.. 매도 진입 이요~~
프로필 이미지
이형지
2018-11-09
141
글번호 123515
시스템