커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

프로필 이미지
회원
2014-04-18
9
글번호 74527
지표

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

프로필 이미지
회원
2014-04-17
0
글번호 74526
지표
답변완료

35931번 질의 재문의합니다.

답변 감사히 잘 보았습니다. 작성해 주신 수식을 옵션분봉에서 적용하였는데 진입가격 2.00~2.99 가격은 청산신호가 잘 나오는데 다른 가격에선 4월15일 9시30분경에 매수진입은 되었으나 목표가가 도달하였음에도 청산이 안되는군요. 목표가를 모든가격 동일하게 진입가격+20% 로 하였습니다. 손절에 관한 수식을 매수진입때 저가갱신으로 수식을 작성부탁했었는데, 진입봉의 저가 이탈 완성봉에 손절이 되는 수식도 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식문의드려요. > 안녕하세요 예스스탁입니다. input : P1(5),P2(20); var1 = ma(C,P1); var2 = ma(C,P2); #매수진입 if crossup(var1,var2) Then buy(); #매수청산 if MarketPosition == 1 Then{ ExitLong("bx",AtStop,L[BarsSinceEntry]-PriceScale*1); if EntryPrice >= 2.00 and EntryPrice <= 2.99 Then{ ExitLong("bx1",atlimit,EntryPrice*1.30); ExitLong("bx2",atlimit,EntryPrice*1.50); } } #매도진입 if CrossDown(var1,var2) Then Sell(); #매도청산 if MarketPosition == -1 Then{ ExitShort("sx",AtStop,H[BarsSinceEntry]+PriceScale*1); if EntryPrice >= 2.00 and EntryPrice <= 2.99 Then{ ExitShort("sx1",atlimit,EntryPrice*0.70); ExitShort("sx2",atlimit,EntryPrice*0.50); } } 즐거운 하루되세요 > 대화명 님이 쓴 글입니다. > 제목 : 수식문의드려요. > 예스스탁에서 제공하는 단순이동평균 교차 시스템수식을 작성하고 싶습니다. 옵션차트에서 적용하고 싶습니다. ** 매수청산전략 ** 5일선과 20일선 골든크로스때 매수진입하고, 매수진입 옵션가격 2.00~2.99 는 진입가격 대비 30% 수익에 강제청산, 2.00~2.99 를 제외한 다른 진입가격은 50% 수익에 강제청산, 손절은 모든 가격대에서 동일하게 진입한 봉의 저가갱신때로 하고 싶습니다. 옵션차트에서 적용하고 싶습니다. 수식작성을 부탁드립니다.
프로필 이미지
대화명
2014-04-17
173
글번호 74525
시스템

오동도물개 님에 의해서 삭제되었습니다.

프로필 이미지
오동도물개
2014-04-17
0
글번호 74520
지표
답변완료

부탁드립니다

아래의 지표를 야간장(CME)에 적용하고싶습니다 수정부탁드립니다,,,, input:renkoSize(0.5), length(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); //이평선 If DayIndex == 0 Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산 gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산 For j = 49 DownTo 1 { //금일 시가봉을 신규 추가 OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다 HH[0] = C; LL[0] = C; CC[0] = C; } Else { If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점 If OO[0] - renkoSize >= C Then { gubun = -1; //하락 방향 CC[0] = OO[0] - renkoSize; //음봉 HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); //true range 계산식 참조 //macd 계산 당시와 마찬가지로 sum 값이 있을 때만 처리 If sum > 0 Then { sum = sum + CC[0] - CC[length]; //이평선 계산 원리 그대로, 현재가를 더하고 n봉전 가격 뺌 trSum = trSum + TR[0] - TR[length]; //true range의 합을 계산 maV[0] = Sum / length; //n개의 종가 합을 n으로 나누어 이동평균 계산 atrV = trSum / length; //ATR 계산식 참조 upperLine[0] = maV[0] + atrV * NumATRs; //상단 밴드 계산 lowerLine[0] = maV[0] - atrV * NumATRs; //하단 밴드 계산 } j = 0; if printOK then print(filename, "1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } Else If OO[0] + renkoSize <= C Then { gubun = 1; //상승 방향 CC[0] = OO[0] + renkoSize; //양봉 HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); If sum > 0 Then { //계속 반복되는 공통 루틴이므로 if문 바깥으로 뺄까도 했으나 sum = sum + CC[0] - CC[length]; //더 복잡해지므로 copy & paste로 처리 trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; if printOK then print(filename, "2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } If LL[0] - renkoSize >= C Then { gubun = -1; renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = LL[j+1]; CC[j] = LL[j+1] - renkoSize; HH[j] = OO[j]; LL[j] = CC[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename, "3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If HH[0] + renkoSize <= C Then { gubun = 1; renkoCnt = Int(Round((C-HH[0])/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = HH[j+1]; CC[j] = HH[j+1] + renkoSize; HH[j] = CC[j]; LL[j] = OO[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename, "4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If Time >= 151500 Then { //당일 종가봉에서 For j = 49 DownTo 1 { OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } If LL[1] > C Then { //종가가 이전 봉보다 아래 형성 OO[0] = LL[1]; CC[0] = C; HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성 OO[0] = HH[1]; CC[0] = C; HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else { //종가가 이전 봉의 중간에 형성 OO[0] = C; CC[0] = C; HH[0] = C; LL[0] = C; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } If sum > 0 Then { sum = sum + CC[0] - CC[length]; trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; //채널 값을 새로이 계산 if printOK then print(filename, "5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } if sum == 0 and CC[length] > 0 then { for j = 0 to length - 1 { sum = sum + CC[j]; trsum = trsum + max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); } } If OO[0] > 0 Then Plot1(OO[0],"OO"); //지표속성 -> 차트표시 -> 채우기 -> OO < CC 면 빨강 추가 If CC[0] > 0 Then Plot2(CC[0],"CC"); // OO > CC 면 파랑 추가 if upperLine[0] > 100 then plot3(upperLine[0],"UpperBand"); if lowerLine[0] > 100 then plot4(lowerLine[0],"LowerBand"); if maV[0] > 100 then plot5(maV[0],"MidLine");
프로필 이미지
오동도물개
2014-04-17
234
글번호 74519
지표
답변완료

시스템식 검토 부탁드립니다.

=========================================== - 한국시간 저녁 8시부터 오전 5시 15분 까지 매매 - 매매횟수 3회 제한 - 손절 20틱 - 미국 s&p 500 매매 - 15분봉 매매 ============================================ input : var: ============================================= 매수조건 ======================================== elder ray power(2) binary wave macd(20,12,5,3,12,26,9) ======================================== if stime == 080000 or (stime > 080000 and stime[1] < 080000) Then count = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then count = count+1; if (stime >= 080000 or stime < 050000) and bear > bull and bw macd > bw macd_sig and count < 3 then buy(); if (stime >= 080000 or stime < 050000) and bear < bull and bw macd < bw macd_sig and count < 3 then sell(); #포지션이 있다면 무조건 05시 00분 종가 청산 if stime == 050000 Then{ ExitLong(); ExitShort(); SetStopEndofday(); } # 매수/매도 보유 포지션에 대한 20틱 손절 SetStopLoss(PriceScale*20,PointStop); =============================================
프로필 이미지
바람날개
2014-04-17
248
글번호 74513
시스템
답변완료

문의

안녕하세요. 일전에 간단한 수식을 하나 만들어 주셨는데, 아래와 같습니다. 이 수식에 추가를 좀 부탁드리겠습니다. 1. 우선 진입신호가 나오면 그 진입봉 5봉전 내의 저가를 인식한다.(편의상 LL 이라 하겠습니다.) 2. 진입신호 후 LL 과 -10틱 중 작은값을 깨면 손절한다. 3. 진입신호 후 LL 대비 10틱 이상 상승하면 트레일링스탑을 적용하여 LL과 그 이후 생긴 고가의 절반을 깨면 익절한다. 4. 2p 상승하면 청산한다. 매도는 위의 반대로 하시면 됩니다. 감사합니다. ---------------------------------------------------------------------------------------- input : Sto1(10),Sto2(3); var : AA(0); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); var : stoLval(0), stoHval(0), fstK(0), stoK(0); if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) gap = Open-Close[1]; // 일간갭 sumGap = sumGap+gap; // 일간갭 누적 } GO = O - sumGap;// 갭보정 시가 GH = H - sumGap;// 갭보정 고가 GL = L - sumGap;// 갭보정 저가 GC = C - sumGap; // 갭보정 종가 stoLval = lowest(GL,Sto1); stoHval = highest(GH,Sto1); fstK = (GC-stoLval)/(stoHval-stoLval)*100; stoK = ema(fstK, Sto2); AA = stoK; var1 = Highest(AA, 3); var2 = Highest(AA, 10)[3]; var3 = Highest(GC,3); var4 = Highest(GC,10)[3]; var5 = Lowest(AA, 3); var6 = Lowest(AA, 10)[3]; var7 = Lowest(GC,3); var8 = Lowest(GC,10)[3]; if AA < AA[1] and AA[1] > AA[2] and var1<var2 and var3>var4 Then sell(); if AA > AA[1] and AA[1] < AA[2] and var5>var6 and var7<var8 Then buy();
프로필 이미지
쿠루드
2014-04-17
250
글번호 74508
시스템

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

프로필 이미지
현671
2014-04-17
0
글번호 74507
지표

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

프로필 이미지
현671
2014-04-17
0
글번호 74506
지표