커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식부탁드립니다.

09:00~10:00 매매중지 10:00 당일저점대비 2% 상승시 매수 당일저점손절 수식부탁드립니다.
프로필 이미지
김정주
2017-06-22
181
글번호 110638
시스템
답변완료

수식 부탁드립니다.

오전 09:00~10:00 매매중단 10:00시부터 당일 시가돌파시 1차매수 당일 고점돌파시 2차매수 손절 당일시가돌파시 손절 수식부탁드립니다.
프로필 이미지
김정주
2017-06-22
167
글번호 110637
시스템
답변완료

문의드립니다~

if MarketPosition == 1 and tic5<=tic20 and h>=tic20 Then exitlong("H롱청산"); if MarketPosition == -1 and tic5>=tic20 and L<=tic20 Then exitshort("H숏청산"); 식을 간략하게 적어봤습니다~ 청산식을 적어서 적용해 보면 청산글자가 실시간으로는 떴다가 봉이 완성되면서 청산글자가 사라지고 청산이 안되는 경우가 있거든요~ 위식이 봉 완성시점에 청산이 되는 식인데요. 완성시점이 아니라 실시간 조건만족했을때 바로 청산이 들어가게 하고 싶은데 도움 부탁드립니다~ 감사합니다~ 좋은하루 되세요~^^
프로필 이미지
겐지
2017-06-22
172
글번호 110636
시스템
답변완료

부탁드립니다.

아래 수식에 자표식 부탁드립니다. < 아래수식> Input : 전환가격(0),종가사용여부(1),파동선두께(1),수치표시(1); Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(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,2] = 0; 고[1,3] = sDate; 고[1,4] = sTime; 저[1,1] = LL; 저[1,2] = 0; 저[1,3] = sDate; 저[1,4] = sTime; } If Index > 0 Then // Index가 0일때는 이전 봉이 없으므로 Index가 1일때부터 1씩 증가 { hiBar = hiBar + 1; // 최고점을 찍은 고[저]가의 위치를 저장 해놓기 위해 봉번호를 카운트한다. loBar = loBar + 1; } If HH[hiBar] < HH Then hiBar = 0; // 현재 봉이 최고가이면 봉번호를 0으로 초기화 If LL[loBar] > LL Then loBar = 0; Condition1 = 저[1,1] + 전환가격 < HH and hiBar == 0; // 전저점에서 전환가격만큼 더한 값보다 고가가 크다면 추세가 변한 것으로 보고 신규 고점으로 인식 Condition2 = 고[1,1] - 전환가격 > LL and loBar == 0; // 전고점에서 전환가격만큼 뺀 값보다 저가가 작다면 추세가 변한 것으로 보고 신규 저점으로 인식 처리구분 = ""; 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 { If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[hiBar]; 고[1,2] = Index - hiBar; 고[1,3] = sDate[hiBar]; 고[1,4] = sTime[hiBar]; hiBar = -1; // 다음 봉의 고가가 기준 고가로 인식되려면 hiBar 값이 0이 되어야 한다. // 봉이 바뀔 때마다 hiBar의 값을 1씩 증가시키므로 다음 봉의 hiBar 값은 0이 된다. loBar = -1; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Red); } Else If 고[1,1] < HH[hiBar] Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH[hiBar]; 고[1,2] = Index - hiBar; 고[1,3] = sDate[hiBar]; 고[1,4] = sTime[hiBar]; hiBar = -1; loBar = -1; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { If 최종꼭지점 == "고점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[loBar]; 저[1,2] = Index - loBar; 저[1,3] = sDate[loBar]; 저[1,4] = sTime[loBar]; hiBar = -1; loBar = -1; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Blue); } Else If 저[1,1] > LL[loBar] Then { 저[1,1] = LL[loBar]; 저[1,2] = Index - loBar; 저[1,3] = sDate[loBar]; 저[1,4] = sTime[loBar]; hiBar = -1; loBar = -1; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; } #=====================================# #======================================# # 여기 아래에 지표식 부탁드립니다.
프로필 이미지
너무조아
2017-06-21
219
글번호 110635
지표

보니타y 님에 의해서 삭제되었습니다.

프로필 이미지
보니타y
2017-06-21
6
글번호 110634
시스템
답변완료

부탁합니다

input : 시작시간(101500),종료시간(172500); input : Period3(3),Period6(6),Period9(5),Period10(10),Period11(20),Period12(40),Period13(80),Period14(120),Period15(160),Period16(300),Period17(600),Period18(10),익절틱수(20),손절틱수(10); Input : Period(12),sigPeriod(9); Input : Period50(50), maPeriod51(51); input : Period33(12),sigPeriod34(9),Period55(50), maPeriod56(51); var : mav3(0),mav6(0),mav9(0),mav10(0),mav11(0),mav12(0),mav13(0),mav14(0),mav15(0),mav16(0),mav17(0),mav18(0),SROC(0),SROCsig(0),SROC2(0),SROCsig2(0),Bxcond(false),Sxcond(false); var : Tcond(false); mav11 = ma(c, Period11); mav17 = ma(c, Period17); mav18 = ma(c, Period18); value1 = TRIX(Period); value2 = ema(value1, sigPeriod); value50 = SONAR(Period50); value51 = ema(value50, maPeriod51); value3 = TRIX(Period33); value4 = ema(value3, sigPeriod34); value52 = SONAR(Period55); value53 = ema(value52, maPeriod56); if Bdate != Bdate[1] then { Tcond = True; BXcond = false; SXcond = false; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{ Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if TotalTrades > TotalTrades[1] then{ BXcond = false; SXcond = false; if (IsExitName("bl",1) == true or IsExitName("bp",1) == true or IsExitName("bx",1) == true) Then BXcond = true; if (IsExitName("sl",1) == true or IsExitName("sp",1) == true or IsExitName("sx",1) == true) Then SXcond = true; } if Tcond == true then{ if MarketPosition <= 0 and Bxcond == false and (value50 > value51 and mav17[1] < mav17) Then buy("b",OnClose,def,1); if MarketPosition == 1 Then{ if mav17[1] < mav17 and mav18[1] < mav18 and CurrentContracts < 2 Then buy("bb1",OnClose,def,1); if mav17[1] < mav17 and mav18[3] >= mav18[2] and mav18[2] <= mav18[1] and mav18[1] < mav18 and CurrentContracts < 3 Then buy("bb2",OnClose,def,1); if (CrossDown(value1,value2)) or (CrossDown(value50, value51)) or(CrossDown(value3,value4)) or (CrossDown(value52, value53)) Then ExitLong("bx"); ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수); ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수); } if MarketPosition >= 0 and Sxcond == false and (value50 < value51 and mav17[1] > mav17) Then sell("s",OnClose,def,1); if MarketPosition == -1 then{ if mav17[1] > mav17 and mav18[1] > mav18 and CurrentContracts < 2 Then sell("ss1",OnClose,def,1); if mav17[1] > mav17 and mav18[3] <= mav18[2] and mav18[2] >= mav18[1] and mav18[1] > mav18 and CurrentContracts < 3 Then sell("ss2",OnClose,def,1); if (crossup(value1,value2)) or (CrossUP(value50, value51)) or (crossup(value3,value4)) or (crossup(value52,value53)) Then ExitShort("sx"); ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수); ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수); } } 위 수식을 선물(항생)에 적용하면 17시 25분 이후에도 수식이 적용하여 동작합니다 17시 25분(일괄청산) 후 매매중지하고자 합니다 수식을 수정하여 주시기 바랍니다 감사합니다
프로필 이미지
남산
2017-06-21
221
글번호 110633
시스템
답변완료

부탁드립니다

전일의 고점과 당일 고점을 연결하는 추세선(오른쪽연장) 전일의 저점과 당일 저점을 연결하는 추세선(오른쪽연장) 두께는 조절가능하도록 부탁드립니다
프로필 이미지
마르뚝
2017-06-21
224
글번호 110632
지표
답변완료

수식 부탁드립니다

현재 봉의 50봉이내의 봉의 고점이 전 봉의 고점보다 낮고 저점이 다음봉의 저점보다 낮은 봉을 찾아 저가 를 저가1에 저장 후 선 플롯 봉의 고점이 전 봉의 고점보다 높고, 저점이 다음봉의 저점보다 높은 봉을 찾아 고가를 고가1에 저장후 선 플롯
프로필 이미지
이대규
2017-06-21
224
글번호 110631
지표
답변완료

다시 질문입니다.

답변감사합니다. if var4 < var4[1] and var5 < var5[1] Then{ if crossup(var1,var2) Then sell("s1",AtMarket); if crossup(var1,var3) Then sell("s2",AtMarket); if crossdown(var1,var2) Then sell("s3",AtMarket); if crossdown(var1,var3) Then sell("s4",AtMarket); } 이경우는 1,2,3,4신호가 발생순서는 관계없이 진입이 되는건가요? #진입별 13틱에서 청산 SetStopProfittarget(PriceScale*13,PointStop); 이경우는 식의 제일 아래에 한번만 써놓으면 진입신호각각에 적용되는건가요? 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : 부탁합니다. > 안녕하세요 예스스탁입니다. 1 수식에 오류가 있었습니다. MarketPosition == -1이 되어야 합니다. if MarketPosition == -1 and MaxEntries == 1 and crossup(var1,var3) Then sell("s2",AtMarket); MaxEntries는 진입최대누적횟수입니다. 첫진입후 하고 두번째진입을 의미합니다. 즉 두번째로만 진입이 가능합니다. 2 아래와 같이 작성하신 후에 피라미딩을 다른진입신호만 허용으로 설정하시면 됩니다. 각 진입명로 한번씩만 진입합니다. 즐거운 하루되세요
프로필 이미지
한바다
2017-06-21
209
글번호 110630
시스템