커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1374
글번호 230811
살빼고싶다 님에 의해서 삭제되었습니다.
2024-09-20
13
글번호 183548
살빼고싶다 님에 의해서 삭제되었습니다.
2024-09-20
8
글번호 183547
답변완료
종목검색
a=ma(c,240);
b=(a+avgif(c-a,-1,0.0)
-2*stdevif(c-a,-1,0.0));
d=(b*1.02);
crossup(c,d)
2024-09-19
745
글번호 183546
와우리 님에 의해서 삭제되었습니다.
2024-09-19
364
글번호 183545
와우리 님에 의해서 삭제되었습니다.
2024-09-19
379
글번호 183544
답변완료
질문 드립니다.
//매수 : 상승추세 전환(고가가 전고점 돌파) 후 2번의 되돌림 후 전고점(스윙고점) 상향돌파 시
//매수청산 : 전저점 하향이탈 시
//매도 : 하락추세 전환(저가가 전저점 돌파) 후 2번의 되돌림 후 전저점(스윙저점) 하향이탈 시
//매도청산 : 전고점 상향돌파 시
input:swingPeriod(5);
Var:신고가(False), 신저가(False), j(0),jj(0),최종꼭지점(""),추세구간(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : TL1(0);
var : HighStop(0), LowStop(0), TrendV(0);
# 추세 판정
신고가 = Highest(H,swingPeriod) == H ;
신저가 = Lowest (L,swingPeriod) == L ;
If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생
If 최종꼭지점 == "저점" Then {
If 저[1,1] > L Then
추세구간 = -1;
Else
추세구간 = 1;
}
Else If 최종꼭지점 == "고점" Then {
If 고[1,1] < H Then
추세구간 = 1;
Else
추세구간 = -1;
}
}
Else If 신고가 == True Then //신고가 발생
추세구간 = 1;
Else If 신저가 == True Then //신저가 발생
추세구간 = -1;
# 상승추세 구간
If 추세구간 == 1 Then {
If 최종꼭지점 == "저점" Then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 고[1,1] < H Then { // 1번 고점보다 높은 고가 출현
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
# 하락추세 구간
If 추세구간 == -1 Then {
If 최종꼭지점 == "고점" then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 저[1,1] > L then {
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
# 직전 스윙고가, 스윙저가
if 추세구간 == 1 Then
HighStop = 고[2,1];
Else
HighStop = 고[1,1];
if 추세구간 == -1 Then
LowStop = 저[2,1];
Else
LowStop = 저[1,1];
if H >= HighStop Then
TrendV = 1;
if L <= LowStop Then
TrendV = -1;
# 매매식
var : retraceScnt(0), retraceBcnt(0);
if TrendV == 1 Then {
retraceScnt = 0;
if 추세구간[1] == 1 and 추세구간 == -1 Then
retraceBcnt = retraceBcnt + 1;
}
if TrendV == -1 Then {
retraceBcnt = 0;
if 추세구간[1] == -1 and 추세구간 == 1 Then
retraceScnt = retraceScnt + 1;
}
if retraceBcnt == 2 and C>HighStop Then
Buy("B", AtMarket);
if MarketPosition == 1 and C<Lowstop Then
ExitLong("EL", AtMarket);
if retraceScnt == 2 and C<Lowstop Then
Sell("S", AtMarket);
if MarketPosition == -1 and C>HighStop Then
ExitShort("ES", AtMarket);
위의 식을 활용하되 data2에 적용시켜 마켓타이밍을 결정하여
메인 종목을 매수,매도하고 싶은데
식을 만들 수 있을까요?
항상 감사드립니다.
2024-09-19
678
글번호 183543
답변완료
전환추세 피보나치
Input : 전환(0.8);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""), TL(0),TX(0),TX2(0);
Array:고[10,4](0),저[10,4](0);
HH = H;
LL = 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
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 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;
loBar = -1;
TL = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL,1);
TL_SetColor(TL,Red);
Text_SetSize(tx,25);
Text_SetColor(tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
if abs(고[1,1][1]-저[1,1][1]) < 1 Then
Text_Delete(tx);
TX = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1]-저[1,1],2));
Text_SetSize(tx,25);
Text_SetColor(tx,Red);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
}
Else If 고[1,1] < HH[hiBar] Then
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,고[1,3],고[1,4],고[1,1]);
Text_SetString(TX,NumToStr(고[1,1]-저[1,1],2));
Text_SetLocation(TX,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
Plot1(고[1,1]);
NoPlot(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;
TL = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL,1);
TL_SetColor(TL,Green);
Text_SetSize(tx,25);
Text_SetColor(tx,Red);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
if abs(고[1,1][1]-저[1,1][1]) < 1 Then
Text_Delete(tx);
TX = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(고[1,1]-저[1,1],2));
Text_SetSize(tx,25);
Text_SetColor(tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
}
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(TL,저[1,3],저[1,4],저[1,1]);
Text_SetString(TX,NumToStr(고[1,1]-저[1,1],2));
Text_SetLocation(TX,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
Plot2(저[1,1]);
NoPlot(1);
}
1.당일 고점보다 낮은 하락추세선이 생기면,
낮은 추세선의 상단을 당일 고점으로부터 50%라고 가정하고 0% 되는 지점에 네모 표시.
38.2%라고 가정하고 0% 되는 지점에 네모 표시.
당일 저점보다 높은 상승추세선이 생기면, 반대.
추세선의 크기가 1보다 작으면 생략.1보다 큰것만 표시.
2. 1번 수식의 네모 표시를 수평선으로 변경.(크기가 1 이상시 표시)
하락추세선이 생기면 네모 표시된 부분부터(0%) 그 하락추세선이 끝날 때까지 수평선 표시.
상승은 반대. 감사합니다.
2024-09-20
622
글번호 183542
답변완료
검색식 부탁 드려요
1. 전고점돌파 종목중 (일봉 1~30봉 기준),
9일 신고가 종목 (몸통기준,종가기준,양봉)종목검색식
2. 전고점 돌파 종목 검색식 (1~60봉 기준.몸통기준,종가기준,양봉)
3. 전고점돌파 종목검색식 부탁드립니다 (추천)
2024-09-20
593
글번호 183540
답변완료
지표 확인 부탁 드립니다.
3분봉 또는 5분봉에서 전일 대비 당일 N%갭상시의 첫봉의 기준선과 검색식 입니다.
지표가 맞는지 확인 부탁 드리며 분봉상 당일에만 기준선이 나오게 수정
부탁 드립니다.
1.
Input : N(1.05);
if date != date[1] Then{
var1 = C;
Var2 = O;
Var3 = (C+O)/2;
var4 = (O+L)/2;
}
if dayopen >= DayClose(1)*N Then
Plot1(VAR1);
Plot2(VAR2);
Plot3(VAR3);
plot4(Var4);
2.
Input : N(1.05);
if date != date[1] Then{
var1 = C;
Var2 = O;
Var3 = (C+O)/2;
Var4 = (O+L)/2;
}
if dayopen >= DayClose(1)*N and
crossup(c,var1) Then
find(1);
2024-09-19
844
글번호 183539