커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

질문드립니다

안녕하십니까? 다음지표식을 씨스템식으로 바꿔주세요 그런데 매수신호는 지표식이완성된 그봉이아닌 그 다음봉에 발생하록 해주세요 감사합니다 var : sindex1(0), sindex2(0), Lindex1(0), Lindex2(0); value1 = stochasticsD(12,5,5); Condition1 = value1 > value1[1] and value1[1] <= value1[2]; Condition2 = L > L[1] and L[1] <= L[2]; sindex1 = MRO(Condition1,15,1); // stochasticsD의 최근 저점이 발생한 시점의 현재로부터 index sindex2 = MRO(Condition1,15,2); // stochasticsD의 직전 저점이 발생한 시점의 현재로부터 index Lindex1 = MRO(Condition2,15,1); // 저가의 최근 저점이발생한 index Lindex2 = MRO(Condition2,15,2); // 저가의 직전 저점이 발생한 index if value1[sindex1+1] > value1[sindex2+1] and //stochastics의 최근저점값이 직전저점값보다크고 L[Lindex1+1] < L[Lindex2+1] and //저가의 최근저점저점값이 직전저점값보다 작고 Condition1 and //저가의 상승반전이 발생했고 lowest(L,5) == lowest(L,15) //최근 5개봉의 최저가가 최근 15개 봉의 최저가이면 then var1 = 1; else var1 = 0; plot1(var1); if var1 == 1 Then PlaySound("C:₩WRFutures₩YesGlobalPro₩data₩Sound₩GAudio_Call.wav");
프로필 이미지
새벽에
2017-11-03
174
글번호 113867
지표
답변완료

수식문의드립니다...

아래수식은 파동선 지표식인데요 이 파동선 고점 -30틱을 crossdown하면 매도 파동선 저점 +30틱을 crossup하면 매수하는 시스템식 부탁드립니다 미리감사드립니다. input : 텍스트소수점자리수(1); Var:jjjjj(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),Tx(0),trnd(0),tx22(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); For jjjjj = 0 To 9 { barArr[jjjjj] = barArr[jjjjj] + 1; } Condition1 = Highest(H,26) == H and lastHiVal <> H; Condition2 = Lowest(L,26) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; If turnPntBit <> "" Then { If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } If turnPntBit <> turnPntArr[1] Then { for jjjjj = 8 downto 1 { valArr[jjjjj+1] = valArr[jjjjj]; barArr[jjjjj+1] = barArr[jjjjj]; turnPntArr[jjjjj+1] = turnPntArr[jjjjj]; } } If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; If turnPntArr[1][1] <> turnPntArr[1][0] Then { Tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],NumToStr(valArr[2],텍스트소수점자리수)); Text_SetStyle(tx,0,2); TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } if turnPntArr[1][0] == "Lo" Then trnd = -1; if turnPntArr[1][0] == "hi" Then trnd = 1; } } TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Text_Delete(tx22); tx22 = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],NumToStr(valArr[1],텍스트소수점자리수)); TL_SetSize(TL1[1],0); TL_SetColor(TL1[1],BLACK);
프로필 이미지
베비슬립
2017-11-03
157
글번호 113866
시스템
답변완료

문의요~

2 Input : 당일손실틱수(200); Var : N1(0),dayPl(0),당일손실(0),Xcond(false); 당일손실 = PriceScale*당일손실틱수; if Bdate != Bdate[1] Then{ Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then Xcond = true; if Xcond == false and 매수진입조건 Then{ buy("b"); } if Xcond == false and 매도진입조건 Then{ sell("s"); } if MarketPosition == 1 then{ ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } if (sdate != sdate[1] and stime >= 020000) or (sdate == sdate[1] and stime > 020000 and stime[1] < 020000) Then{ if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } 어제문의한 당일손실제한200틱인데요~ 수익도200틱제한으로 추가 부탁드릴게요 식을 이해를 못해서 수정을 못하겠습니다~ 위식에서 간단히 주석설명도 부탁드립니다. 감사합니다~ 특히 N1 = NetProfit; //(청산종결된모든거래의손익금액) 이렇게 선언을 했는데 daypl = NetProfit-N1; 여기서는 daypl은 무조건 0이 나오는게 아닌가요 특히 이부분이 이해가 어렵습니다~
프로필 이미지
겐지
2017-11-03
150
글번호 113865
시스템
답변완료

문의드립니다

안녕하세요. 지표수식을 부탁드립니다 1) 특정한 가격대를 입력하여 피보나치수열의선을 만들고 싶습니다 ex) 최고값 55.00 최저값 51.00 경우 1) 최고값선 2) 95.00 선 3) 88.60 선 4) 76.40 선 5) 61.80 선 6) 50.00 선 7) 38.20 선 8) 23.60 선 9) 11.40 선 10) 5.00 선 11) 최저값선 ___________________________________________________________________ 2) 조건의 선이 만들어지면( 최고값/ 95.00 /88.60 / 76.40/ 61.80/ 50.00/ 38.20/ 23.60/ 11.40/ 5.00/ 최저값) 선위에 가격대를 표기하여주시면 감사하겠습니다 항상건강하시고 행복하세요~
프로필 이미지
럭키잭팟
2017-11-03
157
글번호 113864
지표
답변완료

분봉 차트에 틱 이평선이나 지표를 추가할수있나요??

제목 그대로입니다. 타주기 data2에 지표를 따로 지정하기 힘들다고 하여 분봉차트에 틱차트 지표를 적용시키고 싶습니다. 답변 부탁드립니다 감사합니다.
프로필 이미지
하늘이여o
2017-11-03
163
글번호 113863
시스템
답변완료

cci 시스템

항상감사드립니다 아래조건식을 시스템으로 구현하고 싶습니다 /*********************************/ Input : Period5(80),Period6(40); var : CCIv80(0),CCIs80(0); CCIv80 = CCI(Period5); CCIs80 = ema(CCIv80,Period6); /*********************************/ Input : Period7(20),Period8(10); var : CCIv20(0),CCIs20(0); CCIv20 = CCI(Period7); CCIs20 = ema(CCIv20,Period8); /********************************/ 1_시스템식 ccis80<0 인상태에서 두번째 crossup(ccis20,ccis80) 이면 매수진입 b1 (첫번째,두번째 crossup이 ccis80<0 이고 연속해서 발생해야함) ccis80>0 인상태에서 두번째 crossdown(ccis20,ccis80)이면 매도진입 s1 (첫번째,두번째 crossdown이 ccis80>0 이고 연속해서 발생해야함) 2_시스템 crosssup(ccis20,ccis80) 이 연속3회 발생시 매수 b2 crossdown(ccis20,ccis80)이 연속3회 발생시 매도 s2 3_시스템 첫번째 crossup(ccis20,ccis80) 위치 < 두번째 crossup(ccis20,ccis80) 위치 이고 crossup이 연속해서 나오면 b3 첫번째 crossdown(ccis20,ccis80) 위치 > 두번째 crossdown(ccis20,ccis80) 위치이고 crossdown이 연속해서 나오면 s3 감사합니다
프로필 이미지
조민철
2017-11-03
187
글번호 113862
시스템
답변완료

문의합니다

아래 시스템 수식(VR)입니다 이수식을 지표로 전환하여 주시기 바랍니다 감사합니다 Input : Period(20); Var : value(0); value = VR(Period); # 매수/매도청산 If CrossUP(value, 100) Then { Buy(); } # 매도/매수청산 If CrossDown(value, 300) Then { Sell(); }
프로필 이미지
남산
2017-11-02
157
글번호 113860
지표
답변완료

시작시간 초기화

아래 수식의 시간조절로는 단순히 시작시간만 변경됩니다. input에서 시간을 입력하면 090000부터 계산은 초기화하고 입력한 시간부터 장시작으로 인식하는 수식으로 변경 바랍니다. 항상 고맙습니다. ************************************ input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ; var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then LL = L; if L < LL Then LL = L; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{ if E1 == 0 and C >= LL+PriceScale*B1 and C[1] < LL+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx2"); E1 = 0; } } }
프로필 이미지
좌오비우오비
2017-11-02
172
글번호 113852
시스템
답변완료

수식 문의

안녕하세요 하기 수식 구현 부탁드립니다. ADX 라인이 아래에 위치하고 있으며, DP/DM 라인이 ADX 위에 있을때 만 적용됩니다. 상기 상태에서 가격이 볼린져 밴드 하단에 닿으면 매수 진입 상기 상태에서 가격이 볼린져 밴드 상단에 닿으면 매도 진입하는 수식 부탁드립니다. 감사합니다
프로필 이미지
softtoug
2017-11-02
158
글번호 113846
시스템