커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4398
글번호 230811
답변완료
문의 드립니다.
월봉에서 차트의 과거부터 현재까지 전범위중에 가장 많은 거래량이 있었던 봉을 찾고,
그 봉의 시가와 종가 중에 더 높은 가격이 차트에 표시되게 할 수 있나요?
첨부파일처럼 가로선 긋고 6,340원 이런식으로 자세하게는 안나와도
가로선 등의 형태로 표시가 될 수는 있는지 궁금합니다
2017-04-24
206
글번호 109107
답변완료
함수변환요청
안녕하세요?
아래는 키움에서 사용하였던 스크립트입니다.
YT로 변환 부탁드립니다.
Vars :
TickValue( 0 ),
RSI_value( 0 ),
RSI_period( 14 ),
MACD_OSC_value( 0 ),
MACD_period1( 12 ),
MACD_period2( 26 ),
MACD_signal_period( 9 ),
H_value1( 0 ),
H_bar1( 0 ),
L_value1( 0 ),
L_bar1( 0 ),
H_value2( 0 ),
H_bar2( 0 ),
L_value2( 0 ),
L_bar2( 0 ),
ShortPeriod( 9 ), // 전환선 기간
LongPeriod( 26 ); // 기준선 기간
// 호가단위
TickValue = OneTick * PriceScale;
// RSI
RSI_value = RSI(C, RSI_period);
// MACD 오실레이터
v0 = MACD(C, MACD_period1, MACD_period2); // MACD value
v1 = Ema(v0, MACD_signal_period); // MACD 시그널
MACD_Osc_value = v0 - v1; // MACD 오실레이터
// 전환선 & 기준선 HighestLowest 주어진 기간동안의 극단적인 최고가, 최저가를 반환
//ShortPeriod 기간 동안 고가(H) 중에 최고가를 찾아내어 그 값은 H_value1 값에 저장
//Shortperiod 기간 동안 저가(L) 중에 최저가를 찾아내어 그 값은 L_value1 값에 저장
//위의 최고가와 최저가를 바탕으로 아래와 같이 전환성과 기준선을 계산
highestlowest(H, L, ShortPeriod, H_value1, H_bar1, L_value1, L_bar1);
highestlowest(H, L, LongPeriod, H_value2, H_bar2, L_value2, L_bar2);
Value1 = (H_value1 + L_value1)/2; // 전환선 9개의 봉 동안 최고가 와 최저가의 중간값
Value2 = (H_value2 + L_value2)/2; // 기준선 26개의 봉 동안 최고가 와 최저가의 중간값
// 매수 진입
If Value1 > Value2 //전환선이 기준선보다 크고
And MACD_Osc_value > 0 //오실레이터 값이 0보다 크고
And CrossUp(RSI_value, 70) //RSI가 70을 상향 돌파
Then Buy("매수");
// 매도 진입
If Value1 < Value2 //전환선이 기준선보다 작고
And MACD_Osc_value < 0 //오실레이터 값이 0보다 작고
And CrossDown(RSI_value, 30) //RSI가 30을 하향 이탈
Then Sell("매도");
// 이하 청산 : 1계약당 손익이 10틱보다 크고
If ContractProfit > TickValue * 10 Then
Begin
// 매수 청산 : RSI가 70을 하향 이탈
If CrossDown(RSI_value, 70) then ExitLong("매수청산");
// 매도 청산 : RSI가 30을 상향 돌파
If CrossUp(RSI_value, 30) Then ExitShort("매도청산");
End;
// 손절 10틱
SetStopLoss(TickValue * 10);
2017-04-24
189
글번호 109106
답변완료
ask
아래 수식은 상승추세시 buy만 2회 하는 수식입니다.
하락추세시 sell만 2회 하는 수식으로 전환바랍니다.
거래 방식은 BUY와 같고 역방향이므로
BUY와 SELL의 진입과 청산 지점은 다릅니다.
(BUY1->SELL1->BUY2->SELL2 reverse 거래)
늘 고맙습니다.
******
input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4);
var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then{
if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b1");
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;
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 TotalTrades > TotalTrades[1] Then
LL = L;
if L < LL Then
LL = L;
if MarketPosition == 0 and entry == 1 Then{
if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b2");
}
}
#if MarketPosition == 1 Then{
# if MarketPosition== 1 and entry == 2 Then
# exitlong("bx3",AtStop,EntryPrice-PriceScale*13);
#}
if MarketPosition == 1 Then{
if entry == 2 then{
if CurrentContracts > CurrentContracts[1] Then
E1 = 0;
if E1 == 0 and L <= EntryPrice-PriceScale*13 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("bx3");
E1 = 0;
}
}
}
2024-09-02
170
글번호 109104
답변완료
수식 문의드립니다.
if index >= 1 then{
if O < C Then
var1 = var1+v;
if O > C Then
var1 = Var1-V;
}
plot1(var1);
위 식에서 그냥 양봉,음봉만 가려서 거래량에 총합해주는것이 아닌
캔들의 몸통 비율에 비례해서 거래량을 가감해 주고 싶습니다.
가령
양봉캔들이고 시가=저가이고, 고가=종가 일때(꼬리가 전혀없음)
이 캔들에서 만들어진 거래량은 100% 합해주고
총 캔들길이에 몸통이 반이고 위아래 혹은 위나 아래에만 있는 꼬리가 절반이면
거래량에 50%에 값만 합해주고...
도지는 0%
음봉은 반대로 빼주고..
이렇게 거래량을 가감해주는 식을 만들어 보고싶어서 관리자님께 문의 드려봅니다.
가뭄의 단비같이 궁금증을 해결해 주시는 수식게시판 관리자님께 항상 감사드립니다.
2017-04-24
196
글번호 109101
답변완료
문의드립니다
문의드립니다
적용 주식일봉 입니다
주가가 일목균형표에서 선행스팬 1과 선행스팬2 한마디로 주가의 종가가 구름대 아래에있고
주가가 단순이동평균선240선 위에있고
단순이평 5 20 60 정배열 이고요
upticks > downticks 크면
검색하고십습니다
시스템에서 는 위식을 사용하여
당일 종가매수 하고요
익절은 진입가에서 3% 입니다
손절은 진입가에서-5% 입니다
청산되기전 신호는 무시해야합니다
감사합니다
2017-04-24
197
글번호 109094
답변완료
매수 수식 문의 드립니다.
if crossup(DayOpen,dayopen+PriceScale*1) Then
Buy();
그날의 시초가에서 1틱 상승 시 매수를 하려고 합니다.
위의 수식대로 하면 안되는데
수식 부탁드립니다.
감사합니다.
2017-04-24
172
글번호 109092
답변완료
부탁드립니다.
종가가 당일 고가와 저가 변동폭의 하위 20%내에서 형성시 종가 매수
종가가 당일 고가와 저가 변동폭의 상위 20%내에서 형성시 다음날 시가에 매도
하는 시스템식 부탁드립니다..
2017-04-24
171
글번호 109089
답변완료
문의드립니다
안녕하세요?
아래지표식에서 추세선막대기가 형성될때 소리출력기능을 추가해주세요
감사합니다
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),
TL_Val1(0),TL_Val2(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);
If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then
TL_Delete(TL2);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,red);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
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);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then
TL_Delete(TL3);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,blue);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
2017-04-24
188
글번호 109088
kss 님에 의해서 삭제되었습니다.
2017-04-24
0
글번호 109087