커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

프로필 이미지
신대륙발견
2014-06-16
18
글번호 75845
시스템
답변완료

분봉에 관한 질문

5분봉에서 1분봉 시스템 신호를 표현 할 수 있을까요? 예스랭귀지의 경우 시스템 신호를 차트 시간 기준으로 계산하는 걸로 알고 있는데 시간값을 1분봉으로 부여하고 5분봉차트를 켜놓고 신호를 확인 할 수 있는지 문의드립니다. 가능하다면 간단한 예시 부탁드립니다. 함수를 참고하고자 합니다
프로필 이미지
forexar
2014-06-15
147
글번호 75844
시스템
답변완료

당일 포지션제한에 대해서 문의 드립니다.

직전 매매가 0.5포 이상 수익이면 당일 매매를 제한하는 식을 부탁드립니다. 즉, 당일 총 손익이 아니라 직전매매가 0.5이상 수익이 나면 당일 모든 매매를 종료하는 식입니다.
프로필 이미지
회원
2014-06-15
122
글번호 75843
시스템
답변완료

수식 수정을 부탁드립니다

항상 도움을 주셔서 감사를드립니다. 아래의 식 중에서 주봉, 일봉, 챠트의 분봉, 타분봉1, 타분봉2의 스톡케스틱을 단순 스토케스틱으로 수정을 부탁드립니다. ============================================================================= Input : Period(25), Period1(6), Period2(6), MAP(5),수량1(1),수량2(2); input : Atime1(240),Atime2(30),StoPeriod(25), StoPeriod1(6), StoPeriod2(6); var : StoK(0),StoD(0),vol1(0),vol2(0),mav(0),SH(0),cross(0),Dncnt(0),Gncnt(0); Var : Lvalue(0), Hvalue(0),FK(0),BuySetup(true),BuySetup2(true),SellSetup(true),SellSetup2(true),ExitSetup1(false),ExitSetup2(false),ExitSetup3(false),ExitSetup4(false); var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0); var : dhighVal(0), dlowVal(0), dFK(0), dSK(0), dSD(0); var : dEp1(0), dEp2(0),dPreSK(0), dPreSD(0); Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0); var : wHvalue1(0),wLvalue1(0),wsum1(0),wsum2(0); Array : WHH[50](0),WLL[50](0),wFK1[50](0),wSK1[50](0),wSD1[50](0); var : nTF(0),nHvalue1(0),nLvalue1(0),nsum1(0),nsum2(0); Array : nHH[50](0),nLL[50](0),nFK1[50](0),nSK1[50](0),nSD1[50](0); #주봉 스토케스틱 if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{ wHH[0] = H; wLL[0] = L; for cnt = 1 to 49{ wHH[cnt] = wHH[cnt-1][1]; wLL[cnt] = wLL[cnt-1][1]; wFK1[cnt] = wFK1[cnt-1][1]; wSK1[cnt] = wSK1[cnt-1][1]; wSD1[cnt] = wSD1[cnt-1][1]; } } if H > wHH[0] Then wHH[0] = H; if L < wLL[0] Then wLL[0] = L; if wHH[StoPeriod] > 0 Then{ wHvalue1 = wHH[0]; wLvalue1 = wLL[0]; for cnt = 0 to StoPeriod-1 { if wHH[cnt] > wHvalue1 then wHvalue1 = wHH[cnt]; if wLL[cnt] < wLvalue1 then wLvalue1 = wLL[cnt]; } wFK1[0] = (C-wLvalue1)/(wHvalue1-wLvalue1)*100; } if wFK1[StoPeriod1] > 0 Then{ wsum1 = 0; for cnt = 0 to StoPeriod1-1{ wsum1 = wsum1+wFK1[cnt]; } wSK1[0] = wsum1/StoPeriod1; } if wSK1[StoPeriod2] > 0 Then{ wsum2 = 0; for cnt = 0 to StoPeriod2-1{ wsum2 = wsum2+wSK1[cnt]; } wSD1[0] = wsum2/StoPeriod2; } #일봉 스토케스틱 #N일간 최고가 및 최저가 dhighVal = dayhigh(0); dlowVal = daylow(0); for cnt = 0 to Period-1 { if dayHigh(cnt) > dhighVal then dhighVal = dayhigh(cnt); if dayLow(cnt) < dlowVal then dlowVal = dayLow(cnt); } #Fast StochasticsK dFK = (C-dlowVal)/(dhighVal-dlowVal)*100; #Slow StochasticsK / Slow StochasticsD dEp1 = 2/(Period1+1); dEp2 = 2/(Period2+1); if date != date[1] then { dPreSK = dSK[1]; dPreSD = dSD[1]; } dSK = dFK * dEP1 + dPreSK * (1-dEP1); dSD = dSK * dEP2 + dPreSD * (1-dEP2); #차트의 스토케스틱 Lvalue = lowest(L,Period); Hvalue = highest(H,period); FK = (Close - Lvalue) / (Hvalue - Lvalue) * 100; StoK = ma(FK,Period1); StoD = ma(StoK,Period2); mav = ma(C,MAP); #타분봉1 스토케스틱 TF = TimeToMinutes(stime)%Atime1; if dayindex == 0 or (TF < TF[1] and stime > stime[1]) Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 49{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; FK1[cnt] = FK1[cnt-1][1]; SK1[cnt] = SK1[cnt-1][1]; SD1[cnt] = SD1[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if HH[StoPeriod] > 0 Then{ Hvalue1 = HH[0]; Lvalue1 = LL[0]; for cnt = 0 to StoPeriod-1 { if HH[cnt] > Hvalue1 then Hvalue1 = HH[cnt]; if LL[cnt] < Lvalue1 then Lvalue1 = LL[cnt]; } FK1[0] = (C-Lvalue1)/(Hvalue1-Lvalue1)*100; } if FK1[StoPeriod1] > 0 Then{ sum1 = 0; for cnt = 0 to StoPeriod1-1{ sum1 = sum1+FK1[cnt]; } SK1[0] = sum1/StoPeriod1; } if SK1[StoPeriod2] > 0 Then{ sum2 = 0; for cnt = 0 to StoPeriod2-1{ sum2 = sum2+SK1[cnt]; } SD1[0] = sum2/StoPeriod2; } #타분봉2 스토케스틱 nTF = TimeToMinutes(stime)%Atime2; if dayindex == 0 or (nTF < nTF[1] and stime > stime[1]) Then{ nHH[0] = H; nLL[0] = L; for cnt = 1 to 49{ nHH[cnt] = nHH[cnt-1][1]; nLL[cnt] = nLL[cnt-1][1]; nFK1[cnt] = nFK1[cnt-1][1]; nSK1[cnt] = nSK1[cnt-1][1]; nSD1[cnt] = nSD1[cnt-1][1]; } } if H > nHH[0] Then nHH[0] = H; if L < nLL[0] Then nLL[0] = L; if nHH[StoPeriod] > 0 Then{ nHvalue1 = nHH[0]; nLvalue1 = nLL[0]; for cnt = 0 to StoPeriod-1 { if nHH[cnt] > nHvalue1 then nHvalue1 = nHH[cnt]; if nLL[cnt] < nLvalue1 then nLvalue1 = nLL[cnt]; } nFK1[0] = (C-nLvalue1)/(nHvalue1-nLvalue1)*100; } if nFK1[StoPeriod1] > 0 Then{ nsum1 = 0; for cnt = 0 to StoPeriod1-1{ nsum1 = nsum1+nFK1[cnt]; } nSK1[0] = nsum1/StoPeriod1; } if nSK1[StoPeriod2] > 0 Then{ nsum2 = 0; for cnt = 0 to StoPeriod2-1{ nsum2 = nsum2+nSK1[cnt]; } nSD1[0] = nsum2/StoPeriod2; } # 일봉이 상승중이고, 240분봉이 %k가 25을 하향돌파하면 BuySetup은 true if BuySetup == false and CrossDown(nSK1[0],25) Then{ BuySetup = true; } if nSK1[0] >= 60 Then BuySetup = false; #BuySetup이 true일때 if BuySetup == true and crossup(stok,20) Then{ BuySetup2 = true; Dncnt = 0; } #%k가 60이상 상승하면 BuySetup2은 false if stok >= 60 Then BuySetup2 = false; #BuySetup2이 true일때 if BuySetup2 == true Then{ #데드크로스가 발생하면 횟수 저장 if CrossDown(stok,stod) and stok[1] > stod[1] Then Dncnt = Dncnt+1; #매수조건 if Dncnt == 1 and crossup(stok,stod) and stok[1] < stod[1] and MarketPosition == 0 and dSK > dSD Then buy("1차매수",OnClose,def,수량1); }
프로필 이미지
뽄때
2014-06-15
139
글번호 75842
시스템

와라바다 님에 의해서 삭제되었습니다.

프로필 이미지
와라바다
2014-06-15
0
글번호 75841
시스템

와라바다 님에 의해서 삭제되었습니다.

프로필 이미지
와라바다
2014-06-15
13
글번호 75840
시스템
답변완료

매수 매도 주문 처리_ 재질문

지난번 질문입니다. > 조건1 매수("B1") 조건2 매수("B1-1") 조건3 매수("B2") 조건4 매수("B2-1") 조건5 매도("S1") 조건6 매도("S1-1") 조건7 매도("S2") 조건8 매도("S2-1") 이렇게 처리되는 경우가 있다고 가정을 할때 매수 주문의 -1 이 붙어 있는 주문의 청산 조건을 동일하게 하고... 매도 주문의 -1이 붙어 있는 주문의 청산 조건을 다르게 처리할 수 있을까요? 매수 매도의 각각 다른 이름이 상당이 많이 있는데.. 그 중에 신호가 발생한 반대 방향으로 진행될경우 청산 후 반대 신호를 내려고 하는데.. 그 반대로 나오는 신호의 이름을 같게 하려고 하기 때문입니다. 청산 조건에 or 를 써서 모두 적어야하는걸까요? 청산조건 then if IsEntryName("B-1")==True or IsEntryName("B-2")==True or 등등 then 매도 진입 상기와 같이 처리되어야 하나요? 처리 명령이 상당히 많아서 그렇습니다. /////////////////////////////////////////////////////////////////////// 답변이구요.. 그런데.. 않됩니다...^^ 안녕하세요 예스스탁입니다. InStr함수를 이용하시면 됩니다. if MarketPosition == 1 and InStr(EntryName(0),"-") > 0 and 매수청산조건 Then exitlong(); if MarketPosition == -1 and InStr(EntryName(0),"-") > 0 and 매도청산조건 Then ExitShort(); 즐거운 하루되세요 조금 자세히 적겠습니다. 현재 제 시스템에서 매수 명은 B1-B B11-B B2-B B3-B $1-B $2-B 매도명은 S1-S S2-S S3-S S31-S $1-S $2-S 이상과 같습니다. 이름 명을 변경하고 .. 위에서 알려주신데로.. Instr 함수를 써서 해보았더니.. 작동하지 않더군요... Instr 함수가 str함수라서 한글자 말고.. 단어도 될듯해서 해봐도 않되더라구요.. 제 방법으로 하면 모든 매수 매도 신호에 작용을 하구요.. 위와 같은 매수 매도 명일때... 매수에 대해서는 모두 동일하게.. 처리하고.. 매도에 대해서도 모두 동일하게 처리하려고 합니다. 동일하게 처리하면서. 별도의 매수 매도 신호명을 줄겁니다. 위에 명시한 내용으로 할때.. 일괄로 동일하게 처리될수 있도록 도움 부탁드립니다.
프로필 이미지
hjkang철인
2014-06-16
191
글번호 75839
시스템
답변완료

swinghigh 함수값이 -1이 나오는 현상

첨부그림대로 swinghigh함수를 이용한 지표를 작성했습니다. 선물 분봉에서는 정상적으로 지표가 표시되었으나 틱(10틱, 30틱)차트에서 첨부그림에 나오는 것 처럼 swinghigh 함수값이 -1 이 출력되는 현상이 간간히 나타납니다. 아마 120봉 안에 swinghigh봉이 3개까지 존재하지 않는 경우에 이런 현상이 발생하는것 같습니다. 120봉 기준이 아닌 당일날 전체 봉 중에서 1. 현재봉에서 가장 가까운 swinghigh봉값을 swingH[0]에 입력 2. 두번째로 가까운 swinghigh값을 swingH[1]에 입력 3. 세번째로 가까운 swinghigh값을 swingH[2]에 입력되도록 수식 수정 부탁드립니다.
프로필 이미지
훈sys
2014-06-16
172
글번호 75838
지표

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

프로필 이미지
2wnwn
2014-06-14
30
글번호 75837
지표