커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1691
글번호 230811
답변완료
수식문의 드립니다
아래 지그재그 수식에서 고점저점 가격과 진폭(고저차)수치가 작게보여 크게 볼 수 있는 수식을 첨가 부탁드립니다.
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),
Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],
sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)
+NewLine+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 3, 3);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],
sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)
+NewLine+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 3, 3);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,lgreen);
2022-03-22
1252
글번호 157361
카이니스 님에 의해서 삭제되었습니다.
2022-03-21
97
글번호 157359
종호 님에 의해서 삭제되었습니다.
2022-03-21
6
글번호 157358
답변완료
주식 시스템 문의 드립니다.
안녕하세요
아래 코드로 현재 1분봉으로 매매중인데요
원하는 코드가 잘 안만들어져서 수정 부탁드리고자 합니다.
1. #돌파매수 실행시
Condition11 만족하는 봉 발생시 그 봉의 종가를 CC로 리턴하고 다음봉이 음봉이면 매수대기하다가 첫 양봉 출현시 매수하고자 함
(지금 코드는 임시방편입니다.)
Ex) 조건발생 양봉 - 음봉 - 음봉 - 음봉 - 양봉 -매수
조건발생 양봉 - 양봉 - 매수
2. 마지막 분할매도 부분
수익율 3프로 이상발생한 후 var1 이평이 var3 이평을 crossdown하는 경우 전량 매도
(과거에 수익율이 3프로 이상 발생한 적이 한번이라도 있으면 현재 수익율이 얼마인지 관계없이 crossdown시 전량매도)
아래 코드로 적용해보았는데 작동되질 않습니다.
if countif(C >= AvgEntryPrice*1.03, 60) >= 1 and crossdown(var1,Var3) Then
ExitLong("Exit",OnClose,DEf,"",MaxContracts,1);
3. 분할매도시 주식수량 오차
종목당 일정 금액으로 매수를 하는데 분할매도하면 1~2주씩 남게 됩니다.
어찌해결하면 좋을지 부탁드려요
4. 전체적으로 코드 최적화
초심자이다 보니 코드가 체계적이고 효율적이지 못한것 같습니다.
효율적인 코드로 편집 부탁드릴께요
감사합니다.
--------------------------------------------------------------------------------
input : P1(5),P2(20),P3(60),P4(120),P5(240),P6(480);
Input : Period(12), Period1(6), Period2(10),Period3(12);
var : StoK(0),StoD(0),RSIV(0);
var : HH(0),LL(0),HV(0),HV1(0),HL(0),HL2(0),CC(0), CC1(0);
var1=ma(c,P1);
var2=ma(c,P2);
var3=ma(c,P3);
var4=ma(c,P4);
var5=ma(c,P5);
Var6=ma(c,P6);
StoK = StochasticsK(Period,Period1);
StoD = StochasticsD(Period,Period1,Period2);
RSIV = RSI(Period3);
HL = DayHigh/DayLow; #당일 고가-저가 차이
HH = Highest(H,120);
LL = Lowest(L,120);
HL2 = HH/LL; #2시간 내 고가 저가 차이
#돌파 신호 조건
If C >= O and C > Var5 and C > var6 and HL < 1.15 and HL2 < 1.1 and DayOpen < DayClose[1]*1.05 and countif(CrossDown(var5,Var6),240) == 0 and
countif(M > 100000000,3) >= 1 and DayVolume > (DayVolume[1]*0.3) and
Countif(crossup(RSIV,70),3) >= 1 Then
Condition11 = true;
Else
Condition11 = false;
if C < (AvgEntryPrice*0.95) and countif(M > 100000000,3) >= 1 and C > DayOpen and Countif(crossup(RSIV,70),4) >= 1 and C > var6 Then
Condition12 = true;
Else
Condition12 = false;
#돌파 매수 실행
if countif(Condition11[2],10)>= 1 and C >= O and sDate >= 20220301 and marketposition == 0 and countif(marketposition == 1,120) < 1 Then
Buy("Buy1",OnClose);
if CountIF(Condition12[2],10)>=1 and C >= O and MarketPosition == 1 and C >= O and CountIf(condition12[3],180) == 0 Then
Buy("Buy2",OnClose);
#분할매도
if c >= AvgEntryPrice*1.05 Then
ExitLong("5Per",OnClose,DEf,"",MaxContracts*(1/4),1);
if c >= AvgEntryPrice*1.10 Then
ExitLong("10Per",OnClose,DEf,"",MaxContracts*(1/4),1);
if c >= AvgEntryPrice*1.15 Then
ExitLong("15Per",OnClose,DEf,"",MaxContracts*(1/4),1);
if C >= AvgEntryPrice*1.03 and crossdown(var1,Var3) Then
ExitLong("Exit",OnClose,DEf,"",MaxContracts,1);
2022-03-21
1126
글번호 157344
답변완료
수식 수정부탁드립니다
input : v기간1(5),v기간2(20),K1(8),K2(10);
input : 이평기간1(5),이평기간2(20),이평기간3(60),이평기간4(120),이평기간5(240);
input : 양봉상승율(5), 최고량기간(240), 비교봉수(20), N(0);
input : P(12),dv(2) ;
var : mav1(0), mav2(0), mav3(0), mav4(0), mav5(0);
var1 = MA(V,v기간1);
var2 = MA(V,v기간2);
mav1 = ma(C,이평기간1);
mav2 = ma(C,이평기간2);
mav3 = ma(C,이평기간3);
mav4 = ma(C,이평기간4);
mav5 = ma(C,이평기간5);
var4 = BollBandUp(P,dv);
Var5 = ma(C,P);
Var6 = BollBandDown(P,dv);
Condition1 = (( var1[1] * K1 < V ) or ( V >= V[1] * K2 )) and (C >= C[1]*(1+양봉상승율/100)) ;
Condition2 = ( CrossDown(C, var4 ) or ( H > var4 and C < var4 ) ) and C < O ;
Condition3 = ( CrossUp(C, var4) or ( C > var5 and L < var5 ) or ( C > var6 and L < var6 )) and mav1[1] < mav1 and C > O ;
Condition4 = AccumN(iff((Condition1, 최고량기간 ), 1, 0), 비교봉수 ) >= 1 ;
if CountIf( Condition1, 최고량기간 ) >= 1 and CountIf( Condition2, N ) >= 1
and Condition3 == true and Condition4 == true Then
{
find(1);
}
상기 수식은 다음의 내용을 반영할 수 있는 것으로 만들어 본 것인데 Condition4 에서 문법에러가 난다고 하네요.
기간(240)으로 한 최고거래량이 발생(거래량 5이평보다 K1(8)배, 전일거래량보다 K2(10)배 많은 거래량이 발생)한것이 최근 비교봉수(30일)내에 있는 조건을 충족해한다. 그리고 Condition2는 최고거래량이 발생한 후 볼밴상단선을 이탈한 경우가 있어야 한다는 것이고,
Condition3은 Condition2 이후 볼밴 상단선 또는 중심선 또는 하단선을 돌파하는 캔들출현시에 매수종목으로 검색되게 하는 것입니다.
이 이상의 내용을 반영한 식으로 수정해주시고요
추가적으로 Condition1 이 발생된후 특정기간(5) 이후에 Condition3 이 발생되어야 한다는 조건(돌파시의 캔들상승율은 5%이내이어야한다)을 추가해주시면 감사하겠읍니다
2022-03-21
1589
글번호 157340
답변완료
수식작성 부탁드립니다
안녕하세요?
항상 고민을 해결하여주셔 깊이 감사드립니다
다음 조건의 시스템신호 부탁 드립니다
선물차트에서
1. 호가잔량 5이평선과 MACD(12.26)이 하락하다 상승으로 바뀌고
주가 5이평선이 상승하는 첫 캔들에서 매수신호 발생
2. 호가잔량 5이평선과 MACD(12.26)이 상승하다 하락으로 바뀌고
주가 5이평선이 하락하는 첫 캔들에서 매도신호 발생
수고하십시오
2022-03-21
1598
글번호 157335
답변완료
수식부탁드립니다
아래 수식은 C가 상승시 red color를 유지한채 굵기 변화만 나타내는 수식입니다
Plot1(C,"종가",red,DEF,IFF(C > C[1] ,2,0));
이수식을 base로 C가 상승시 굵기 2 였다가 C = H가 되면 굵기 4 가 되는 수식을 부탁드립니다
감사합니다
2022-03-21
1251
글번호 157334
답변완료
문의드립니다.
안녕하세요.
언제나 감사드립니다.
차트에 3분봉을 띄우고 3분봉으로 매수매도를 합니다.
3분봉에서 기준선을 2개 만드는데요.
일봉기준으로 기준선을 만듭니다.
일봉에서
가장 최근에 음봉이 발생하면 이 때의 최근 음봉을 음봉1 이라 하고 종가를 b 라 하고
가장 최근 음봉 보다 이전에 발생한 음봉들을 관찰하고
최근 음봉 종가 b < 이전에 발생한 음봉의 종가
인 즉 기장 최근 음봉 종가 보다 종가가 위에 있는 이전의 음봉2을 찾는 것입니다
.
그 음봉을 찾았으면 대음봉을 만드는데요. 종가는 당연히 b 가 되고요
시가는 가장 최근 음봉1의 시가와 음봉2의 시가중에 높은 것을 대음봉 시가
라고 합니다.
이렇게 대음봉 몸통이 만들어 졌으면 몸통의 1/2 즉 몸통의 절반가격을 대음봉 기준선B
라고 합니다
반대로
일봉에서
가장 최근에 양봉이 발생하면 이 때의 최근양봉을 양봉1 이라 하고 종가를 a 라 하고
가장 최근 양봉 보다 이전에 발생한 양봉들을 관찰하고
최근 양봉 종가 a > 이전에 발생한 양봉의 종가
인 즉 기장 최근 양봉 종가 보다 종가가 아래에 있는 이전의 양봉2을 찾는 것입니다
.
그 양봉을 찾았으면 대양봉을 만드는데요. 종가는 당연히 a 가 되고요
시가는 가장 최근 양봉1의 시가와 양봉2의 시가중에 낮은 것을 대양봉 시가
라고 합니다.
이렇게 대양봉 몸통이 만들어 졌으면 몸통의 1/2 즉 몸통의 절반가격을 대양봉 기준선A
라고 합니다
이제 3분봉에서 기준선A와 기준선B 가 예비선으로 준비되어 생겼습니다.
3분봉 종가가
기준선 2개 중에 어는 한선이라도 crossup 이나 crossdown 이 발생하면
그 기준선이 정말로의 실전 기준선이 됩니다.
기준선 2개중에 기준선 1개선을 위로든 아래로든 기준선 가격을 돌파하고 다시 다른 기준선을 위로든 아래로든 돌파하면
기준선은 가장 최근에 돌파된 선을 실전선으로 변경합니다.
실전 기준선이 효력이 발생하고 나서 그 후에
실전 기준선 위에 3분봉 종가가 형성되면 1계약 매수하고 100틱 이익이 발생하면
바로 청산후 청산후 무포지션이 되면 다시 즉시 1계약 재매수합니다.
이렇게 계속 반복합니다.
매수후에 실전 기준선+50틱 이상으로 종가가 형성되면 마틴게일 방법으로 50틱 간격으로 하방에 매수를 걸어 놓습니다
단 마틴게일 방법 매수가격 최하단 가격은 실전 기준선 가격위에 위치하여야 합니다.
매수후에 매수가격 50틱 아래로 지정가가 혹시 가능하면
지정가로 매수 걸어 놓고 지정가가 안된다면 안되는 방법으로 매수를 걸어 놓습니다.
다시 50틱 간격으로 아래로 5번 정도 될 때까지 하방으로
매수를 걸어 놓습니다
매수후 전체 총수익이 100틱 나면 전부 청산합니다.
그런데 매수후 종가가 실전 기준선 아래로 빠지면 모든 매수잔량을 손절 청산합니다..
매도는 반대 논리로 부탁듭니다.
즉 실전 기준선 아래에 3분봉 종가가 형성되면 매도가 들어 가는데요.
매수 때와 같은 논리로 부탁드립니다.
그리고요 3분봉 차트에 기준선 2개를 같이 표시하고 싶습니다.
함께 부탁드립니다.
2022-03-21
1327
글번호 157327
회원 님에 의해서 삭제되었습니다.
2022-03-20
139
글번호 157326