커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식수정 문의

1. 상방 진입조건에 60선위에 5가 상방 변곡시 진입인데. 이때 조건을 1) 진입 시점 이전에 60과 240 이 데드이후에 60선이 5파이상이거나(상승변곡이 3번 이상) 2) 60선이 쌍바닥이 나왔을때 - (쌍바닥의 정의는 : 1)이평선이 꺽였을때의 지점의 이평선 가격을 비교 2)저점이 더 낮아진 쌍바닥이더라도 5틱 이내 or 국내선물 기준 0.15pt 이내는 쌍바닥으로 정의합니다) 3)60선이 턴한 지점간의 즉, 쌍바닥간의 봉의 개수는 30개 이상 나야함 이 조건을 추가하고 싶습니다 /////////////////////////////////////////// var : Period1(3),Period2(10),Period3(30),Period4(120),X5(0),X20(0),X60(0),XP(0),X(0),Y(0),Z(0),Q(0),Mav1(0), Mav2(0),Mav3(0),Mav4(0); Input : Left(3),right(3); var : B5(0),BP60(0),B20(0),B60(0),S5(0),S20(0),S60(0),SP60(0),Bcnt5(0),Bcnt20(0),Bcnt60(0),BcntP60(0), Scnt5(0), Scnt20(0), Scnt60(0),ScntP60(0),H1(0),H2(0),L1(0),L2(0); InPUT : 진입시작시간(090000), 매매종료시간(153000); if Bdate != Bdate[1] Then { Condition1 = False; Condition2 = False; } Var26 = ema(Ema(Ema(c,period1),period1),period1); //ma(c,period1); //5선 Var27 = ema(Ema(Ema(c,period2),period2),period2); //20선 Var28 = ema(Ema(Ema(c,period3),period3),period3); //60선 Var29 = ema(Ema(Ema(c,period4),period4),period4); //240선 if CrossUp(Var26,Var27) Then X5 = 1; //5-20 cross if CrossDown(Var26,Var27) Then X5 = -1; if CrossUp(Var27,Var28) Then X20 = 1; //20-60 cross if CrossDown(Var27,Var28) Then X20 = -1; if CrossUp(Var28,Var29) Then X60 = 1; //60-240 cross if CrossDown(Var28,Var29) Then X60 = -1; if CrossUp(Var26,Var28) Then XP = 1; //5-60 cross if CrossDown(Var26,Var28) Then XP = -1; if Var26 > var26[1] Then X = 1; if Var26 < var26[1] Then X = -1; if Var27 > var27[1] Then // X5 : 5-20 Cross X : 5선 Y = 1; // X20 : 20-60 Cross Y : 20선 if Var27 < var27[1] Then // X60 : 60-240 cross Z : 60선 Y = -1; // XP : 5-60 cross if Var28 > var28[1] Then Z = 1; if Var28 < var28[1] Then Z = -1; if X == 1 and X != X[1] and Bdate == Bdate[1] Then Condition1 = true; if X == -1 and X != X[1] and Bdate == Bdate[1] Then Condition2 = true; //////////////////////상방기준////////////////// if XP == 1 and X == 1 and Condition1 == true Then //5-60 정배열 & 5상승 { if X != X[1] Then //5선이 상승변곡 이면 B = 1 { BP60 = 1; } //5선이 상승변곡 & 20선 상승 & 5선 20선위 & 몸통이 5 BC 면 B =2 if BP60 == 1 and Y == 1 and Var26 > Var27 and C > O and (C+O)/2 >= var26 Then { BP60 = 2; } } else BP60 = 0; if sDate == 20210429 and sTime < 92000 Then MessageLog("%.2f",BP60); //////////////////////하방기준////////////////// if XP == -1 and X == -1 and Condition2 == true Then { if X!= X[1] Then { SP60 = 1; } if SP60 == 1 and Y == -1 and Var26 < Var27 and C < O and (C+O)/2 < var26 Then { SP60 = 2; } } else SP60 = 0; //////////////////////////상방시그널///////////////// if sTime >= 진입시작시간 and sTime <= 매매종료시간 and XP == 1 Then { if XP != XP[1] Then BcntP60 = 0; if BP60 == 2 and BP60 != BP60[1] Then { BcntP60 = BcntP60+1; if BcntP60 <= 1 Then Buy("BP60"); } } ////////////////////////하방 시그널////////////////// if sTime >= 진입시작시간 and sTime <= 매매종료시간 and XP == -1 Then { if XP != XP[1] Then ScntP60 = 0; if SP60 == 2 and SP60 != SP60[1] Then { ScntP60 = ScntP60+1; if ScntP60 <= 1 Then Sell("SP60"); } } if MarketPosition == 1 Then { if X5 == 1 and CountIf(X5 == -1,BarsSinceEntry) == 0 and X == -1 and CountIf(X == -1 and X != X[1],BarsSinceEntry) >= 2 and (C+O)/2 <= Var27 then ExitLong("콜청1",AtMarket); if X5 == -1 and X == -1 and CountIf(X == -1 and X != X[1],BarsSinceEntry) >= 1 and (C+O)/2 <= Var27 Then ExitLong("콜정2",AtMarket); } if MarketPosition == -1 Then { if X5 == -1 and CountIf(X5 == 1,BarsSinceEntry) == 0 and X == 1 and CountIf(X == 1 and X != X[1],BarsSinceEntry) >= 2 and (C+O)/2 >= Var27 Then ExitShort("풋청1",AtMarket); if X5 == 1 and X == 1 and CountIf(X == 1 and X != X[1],BarsSinceEntry) >= 1 and (C+O)/2 >= Var27 Then ExitShort("풋정2",AtMarket); }
프로필 이미지
중추신경
2021-05-07
1212
글번호 148792
시스템
답변완료

수식 문의

1. 입력한 시간에 data2 양봉 and data3 양봉 and data4 음봉 then buy(); - 09시 입력결과와 13시 입력결과를 비교코자 함 2. 입력한 시간부터 data2 연속양봉 2개 and data3 연속양봉 3개 and data4 연속음봉 4개 then buy(); - 09시 입력결과와 13시 입력결과를 비교코자 함 3. 해외선물 수식 - 데이트레이딩용 - 금일 오전 9시부터 익일 오전8시까지 거래할 수 있는 시간 수식 부탁드립니다.
프로필 이미지
목마와숙녀
2021-05-07
1183
글번호 148791
시스템
답변완료

수식도움좀 부탁드려요 ,,ㅜㅡㅜ

종가가 볼린저밴드 360선 돌파 종목검색식 부탁드려요ㅜㅡㅜ
프로필 이미지
vhvh
2021-05-07
1159
글번호 148789
종목검색
답변완료

손절식 추가요

안녕하세요 늘 감사합니다 아래식에서요 매수1 매도1 는 손절 65틱 매수2 매도2 는 손절 100틱 수정좀 부탁합니다 그리고 모든신호진입해서 고점대비 100틱 이상 내령오면 진입청산 좀 추가해주세요 외부 변수로 부탁합니다 input : 완전청산 (50); input : 손절가 (15); var : T1(0),T2(0); #var : tX(0),BH(0),SH(0); var : T21(0),T26(0),T23(0),T24(0),T25(0); var : T11(0),T22(0),T33(0),T44(0),T55(0); var : Tcond(false); # 시간제한 var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); var : T(0),S(0),idx(0),entry2(False); # 딱 한번 매매 var1 = ma(c,0); var2 = ma(C,0); var3 = ma(C,0); var4 = ma(c,0); if (sdate != sdate[1] and stime >= 101600) or (sdate == sdate[1] and stime >= 101600 and stime[1] < 101600) Then { Tcond = true; idx = 0; entry2 = true; } idx = idx+1; if (sdate != sdate[1] and stime >= 172000) or (sdate == sdate[1] and stime >= 172000 and stime[1] < 172000) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if idx <= 10 then { if MarketPosition != 0 and MarketPosition != MarketPosition[1] and (IsEntryName("매수1") == true or IsEntryName("매도1") == true) Then entry2 = False; } if var1 > var2 and var1 > var3 and var1 > var4 and var4 > var2 Then T1 = 1; if var1 < var2 and var1 < var3 and var1 < var4 and var4 < var2 Then T1 = -1; var5 = ma(C,30); if CrossUp(C,var5) Then { T = 1; S = 0; } if CrossDown(C,var5) Then { T = -1; S = 0; } if Tcond == true then { if T1 == 1 and T1[1] == -1 Then buy("매수1"); if T1 == -1 and T1[1] == 1 Then sell("매도1"); if T == 1 Then { S = S+1; if idx >= 10 and S == 10 Then { if entry2 == true Then { Buy("매수2"); } Entry2 = False; } } if T == -1 Then { S = S+1; if idx >= 10 and S == 10 then { if entry2 == true Then { Sell("매도2"); } entry2 = False; } } } if MarketPosition == 1 Then { ExitLong("bx5",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1); ExitLong("bx6",AtStop,EntryPrice-PriceScale*손절가,"",5,1); } Else Lcnt = 0; if MarketPosition == -1 Then { ExitShort("sx5",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1); ExitShort("sx6",AtStop,EntryPrice+PriceScale*손절가,"",5,1); } Else Hcnt = 0;
프로필 이미지
kjdkdh
2021-05-07
1101
글번호 148787
시스템
답변완료

문의합니다

input : 전환선기간(9),기준선기간(26),선행스팬2기간(52),시작시간(080000),종료시간(230000); Var : 기준선(0), 전환선(0), 선행스팬1(0), 선행스팬2(0),구름상단(0),구름하단(0),Tcond(false); 전환선 = (Highest(H, 전환선기간) + Lowest(L, 전환선기간)) / 2; 기준선 = (Highest(H, 기준선기간) + Lowest(L, 기준선기간)) / 2; 선행스팬1 = (전환선[25] + 기준선[25]) / 2 ; 선행스팬2 = (Highest(H, 선행스팬2기간)[25] + Lowest(L, 선행스팬2기간)[25]) / 2; 구름상단 = max(선행스팬1,선행스팬2); 구름하단 = Min(선행스팬1,선행스팬2); if (sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 종료시간) or (sdate == sdate[1] and stime >= 종료시간 and stime[1] < 종료시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then{ if crossup(기준선,구름상단) Then buy(); if CrossDown(기준선,구름하단) Then sell(); } 위 수식의 발생시그널은 그대로 두고 매수는 발생시그널 봉의 저가까지 내려오는 봉에서 매수(15봉이내.변수처리). 매도는 발생시그널 봉의 고가까지 올라오는 봉에서 매도.(15봉이내, 변수처리) 수익(50틱) 및 손절(20틱) 수식추가하여 주시고 트레일링 스탑기능도 가능하면 추가 부탁드립니다. 종료시간에 맞추어 진입중인 모든계약 청산토록 설정바랍니다 만일, 발생시그널을 그대로 둘수 없다면 삼각표시(3개)의 지표추가하여주시기 바랍니다 감사합니다
프로필 이미지
gopang
2021-05-07
1377
글번호 148786
시스템
답변완료

원하던 시스템신호가 안되요.

안녕하세요 예스스탁입니다. 1 되도록 1분봉과 같은 작은주기에 적용하시면 됩니다. 2 랭귀지의 수식은 차트의 신호발생을 담당합니다. 신호가 발생하면 실제 주문가격은 시스템 트레이딩 설정창에서 매매가격에서 지정한 가격으로 주문이 집행되므로 시장가는 설정창에서 지정하시면 됩니다. 3 var : entry(0); if Bdate != Bdate[1] Then entry = 0; if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if NextBarSdate != sDate Then { Buy("b1",AtStop,NextBarOpen+1); Sell("s1",AtStop,NextBarOpen-1); } Else { if entry < 1 Then { if MarketPosition == 0 and DayHigh < DayOpen+1 Then Buy("b",AtStop,DayOpen+1); if MarketPosition == 0 and DayLow > DayOpen-1 Then Sell("s",AtStop,DayOpen-1); } } SetStopLoss(1,PointStop); SetStopProfittarget(1,PointStop); SetStopLoss(153000); 즐거운 하루되세요 > 만복이 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. 아래 문의한것에 대한 답변주신걸 적용해보니 제대로 안되는것 같아요. 시가기준 1포인트 위에서 매수하고 익절과 손절을 1포인트로 잡는데, 아래로 1포인트 가도 청산이 안되고, 매도인데 매수신호가 나타나고 뭔가 확실히 이상해요. ===================================================== > 국내선물에서, 당일시가에서 1포인트 위로 상승하면 봉완성과 관계없이 가격도달시 바로 매수하고 익절과 손절은 1포인트로 잡는것 또 당일시가에서 1포인트 아래로 하락하면 매도하고 봉완성과 관계없이 가격도달시 익절과 손절은 역시 1포인트로 잡는것을 좀 부탁드립니다. 단, 여기서 위로든 아래로든 1포인트 익절이든 손절이든 청산이 되면, 그 날은 더이상 매매가 되지 않도록 하는것을 원합니다. 주문유형은 전부 시장가로 하시면 되겠습니다. 이게 시스템식이 가능한가요? 가능하다면 좀 부탁드립니다.
프로필 이미지
만복이
2021-05-07
1496
글번호 148785
시스템
답변완료

수식작성

input : StartTime(220000),EndTime(035000),진입횟수(5),익절틱수(40),손절틱수(25); var : Tcond(false),entry(0); if StartTime < EndTime Then { SetStopEndofday(EndTime); } Else { if sDate != sDate[1] Then SetStopEndofday(EndTime); } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { if StartTime > EndTime Then SetStopEndofday(0); Tcond = true; entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if Tcond == true Then { if MarketPosition == 0 and C > O and entry < 진입횟수 Then { Buy("b"); } if MarketPosition == 0 and C < O and entry < 진입횟수 Then { Sell("s"); } } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); ---------------------------- 당일목표수익 120틱을 수식어에 추가로 부탁드립니다.
프로필 이미지
푸른
2021-05-07
1201
글번호 148783
시스템
답변완료

늘 수고많습니다

1)10분 차트서 어제 첫봉 거래량과 오늘 첫봉 거래량을 나타내는 지표를 만들고 싶습니다. 부탁드립니다 2) 일봉서 5.20.60 이동평균선 10% 이내로 밀집한 종목 검색하고 싶습니다 미리 감사드립니다
프로필 이미지
안미남
2021-05-07
1090
글번호 148782
지표
답변완료

수정 의뢰 드립니다!

안녕하세요! 아래 키움 수식을 예스로 부탁드립니다! 감사드립니다! 빨강색선으로 표시 cond=eavg(c,10)>eavg(c,50) and eavg(c,20)>eavg(c,50) ; valuewhen(1,crossup(cond,0),h) 초록색선으로 표시 cond=eavg(c,3)>eavg(c,20) and eavg(c,5)>eavg(c,20) ; valuewhen(1,crossup(cond,0),l)
프로필 이미지
qha71
2021-05-07
1385
글번호 148781
지표