커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4395
글번호 230811
답변완료
수식 작성 요청드립니다.
안녕하세요 운영자님
수식 작성 부탁드립니다.
매수조건 : TurnLen(5), StdLen(26), PrdLen(52) 일때의 전환선이 TurnLen(9), StdLen(26),
PrdLen(52) 일때의 기준선을 골든크로스 후 현재봉이 TurnLen(5) 일때의 전환선
아래 TurnLen(9) 일때의 기준선 위에 있는 경우
매도조건 : TurnLen(5), StdLen(26), PrdLen(52) 일때의 전환선이 TurnLen(9), StdLen(26),
PrdLen(52) 일때의 기준선을 데드크로스 후 현재봉이 TurnLen(5) 일때의 전환선
위 TurnLen(9) 일때의 기준선 아래에 있는 경우
감사합니다.
2017-05-01
126
글번호 109307
답변완료
부탁합니다
input : Period11(20),익절틱수(50),손절틱수(30);
input : Period1(30),Period2(18),signal(20);
Input : Period(50),sigPeriod(51);
Input : Period50(50),maPeriod51(51);
var : mav11(0),SROC(0),SROCsig(0),value1(0),value2(0),value50(0),value51(0);
mav11 = ma(c, Period11);
SROC = ema(C,Period1)/ema(c,Period1)[Period2]*100;
SROCsig = ema(SROC,signal);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
value50 = SONAR(Period50);
value51 = ema(value50, maPeriod51);
if MarketPosition <= 0 and
(SROC > SROCsig and value1 > value2 and value50 > value51) Then
buy("b",OnClose,def,1);
if MarketPosition == 1 Then{
if mav11 > mav11[1] and CurrentContracts < 5 Then
buy("bb",OnClose,def,1);
if (CrossDown(SROC,SROCsig)) or (CrossDown(value1,value2)) or (CrossDown(value50, value51)) Then{
ExitLong("bx");
}
ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수);
ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수);
}
if MarketPosition >= 0 and
(SROC < SROCsig and value1 < value2 and value50 < value51) Then
sell("s",OnClose,def,1);
if MarketPosition == -1 then{
if mav11 < mav11[1] and CurrentContracts < 5 Then
sell("ss",OnClose,def,1);
if (crossup(SROC,SROCsig)) or (crossup(value1,value2)) or (CrossUP(value50, value51)) Then{
ExitShort("sx");
}
ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수);
ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수);
}
혼자 작성하였으나 도저히 수식작성이 안되네요 수식 부탁합니다
1. == 직전에 진입한 포지션과 반대 방향으로만 진입을 허용하는 식을 부탁합니다===
즉 직전에 매수로 포지션에 들어 갔었으면 이번 거래는 매도로만 포지션 진입할 수 있고, 그 다음 거래는 매수로만 포지션 진입할 수 있도록 부탁합니다
최초 매수진입하면(SROC > SROCsig and value1 > value2 and value50 > value51)
이후 "bb" 또는 "bp" 또는 "bl"에 의거 진입청산되고
반드시 다음은 매도진입(SROC < SROCsig and value1 < value2 and value50 < value51)하고 이후 "sx" 또는 "sp" 또는 "sl"에 의거 매도청산순이 반복되도록 수식 부탁합니다
1번수식 삽입시 2번(최대수익대비 하락 또는 상승)도 넣어 주시기 바랍니다
2. 매수진입후 최대수익대비(평단가) 하락 하면 일괄청산(input : 최대수익대비청산 틱수 20틱)
매도진입후 최대수익대비(평단가) 상승 하면 일괄청산(input : 최대수익대비청산 틱수 20틱)
감사합니다
2017-05-01
118
글번호 109306
답변완료
수식 의뢰 드립니다.
캔들의 종료시간 - 시작시간
을 초로 나타내는 수식 부탁드립니다.
'floor 과 fracportion 들을 사용해서 만들어봤는데 자꾸 에러가 나네요.
다시 말씀드리면,
캔들의 시작부터 끝까지 걸린시간을 초로 나타내보고 싶습니다.
몇초동안의 시간으로 이루어진 캔들인지 알고 싶습니다.
2017-05-01
147
글번호 109305
답변완료
지표 문의 드립니다.
영웅문w에서 이렇게된 수식을 예스랭기쥐에 표현 하고 싶습니다.
수식1
valuewhen(1,avg(c,period)>avg(c,period,1),avg(c,period))
수식2
valuewhen(1,avg(c,period)<avg(c,period,1),avg(c,period))
수식3
avg(c,period)
수식3은
input : 기간(20);
var : ma1(0);
var1 = ma(c,기간);
ma1 = avg(var1);
if ma1 > ma1[1] Then
plot1(ma1, "중심선", red);
Else
plot1(ma1, "중심선", blue);
이렇게 하니까 되더라구요 나머지 수식1이랑 수식2 부탁드립니다.
2017-05-01
247
글번호 109304
답변완료
문의드립니다.
안녕하세요.
아래 호가량지표가 현대Yes에서는 작동하는데
NH Yesglobal에서는 작동이 안되는데 왜 그런지 확인 부탁합니다.
Input : Period(5);
Variables : AsksMA(0),BidsMA(0),value(0);
BidsMa = ma(bids,Period);
AsksMA = ma(asks,Period);
value = ma(bids,period)-ma(asks,period);
if BidsMA > AsksMA Then
Plot1(1,"호가1",blue);
if BidsMA < AsksMA Then
Plot1(-1,"호가1",red);
If value > value[1] Then
Plot2(2,"호가2",blue);
If value < value[1] Then
Plot2(-2,"호가2",red);
PlotBaseLine1(0,"기준선");
2017-05-01
147
글번호 109303
한바다 님에 의해서 삭제되었습니다.
2017-05-01
0
글번호 109302
답변완료
수식부탁드립니다
안녕하세요 수고많으십니다.
다음과 같은 수식을 만들려고 합니다. 해외선물용입니다.
------------------- C(시가대비 0.03% 상승)
------------------- B(시가대비 0.02% 상승)
--------------------A(시가대비 0.01%상승)
--------------------D(시가대비 0.01% 하락)
--------------------E(시가대비 0.02% 하락)
--------------------F(시가대비 0.03% 하락)
현재가가 A,B,D,E값을 돌파하거나 붕괴할때 매수, 매도진입하는 수식 인데요
1. 현재가가 A값을 돌파할 때 매수 진입하고 매수진입한 후 b값까지 상승하면 매수청산(익절)
매수진입한 후 D값까지 하락하면 매수청산(손절). 진입한 후에는 매수청산될 때까지
매도 신호 나오지 않게 한다. 수익발생하면 매수진입신호는 더이상 나오지 않는다.
2. 현재가가 A값을 붕괴할 때 매도 진입하고 매도진입한 후 D값까지 하락하면 매도청산(익절)
매도진입한 후 B값까지 상승하면 매도청산(손절).진입한 후에는 매도청산될 때까지
매수 신호 나오지 않게 한다. 수익발생하면 매도진입신호는 더이상 나오지 않는다
이런 식으로 B,E값에서도 신호가 나오게 수식좀 부탁드립니다. 그리고 주석(수식설명)도
함께 부탁드립니다
수고하십시요.
2017-05-02
147
글번호 109301
답변완료
연속 양봉,음봉 표시
일봉 차트에서 연속 양봉,음봉 중 4회 이상 나오면
차트에 표시하는 수식을 작성하고 싶습니다.
부탁드립니다.
2017-05-01
176
글번호 109300
답변완료
시스템식을 부탁드림니다.
지난번52250번에 문의드렷던 내용을 시스템식으로 만들엇으면 함니다.
(1) 고점의 새로운 고가밴드(고점의 고가선과 종가선)가 확정된후 고가선이 하방이탈시에(또는 새로운 고가밴드 확정시 10봉 이내의 양봉에서 매도) 매도,저점의 새로운 저가밴드(저점의 저가선과 저점의종가선)확정후 저점밴드를 상방이탈시(또는 새로운 저점밴드 확정시 10봉이내에서의 음봉에 매수) 매수식을 부탁드림니다.
Input:length(10);
Var:최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),
sBar(0),TL1(0),TL2(0),TL3(0),
고추세기울기(0),고추세봉개수(0),고추세시작(0),고추세시작IDX(0),고추세최종(0),
저추세기울기(0),저추세봉개수(0),저추세시작(0),저추세시작IDX(0),저추세최종(0);
Var:고1(0),고2(0),고3(0),고4(0),고5(0),고6(0),고7(0),고8(0),고9(0),고10(0),
저1(0),저2(0),저3(0),저4(0),저5(0),저6(0),저7(0),저8(0),저9(0),저10(0),
고1IDX(0),고2IDX(0),고3IDX(0),고4IDX(0),고5IDX(0),
고6IDX(0),고7IDX(0),고8IDX(0),고9IDX(0),고10IDX(0),
저1IDX(0),저2IDX(0),저3IDX(0),저4IDX(0),저5IDX(0),
저6IDX(0),저7IDX(0),저8IDX(0),저9IDX(0),저10IDX(0);
var : tl21(0),tl22(0),TL31(0),tl32(0),Tl33(0),tl34(0),t(0);
#==========================================#
Condition1 = Highest(C,length) == C and 최종고가 <> C;
Condition2 = Lowest (C,length) == C and 최종저가 <> C;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리
Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = C; // 신규고점을 체크하기 위해 저장
If 최종변곡점 == "저점" Then
{
고9 = 고8; 고9IDX = 고8IDX;
고8 = 고7; 고8IDX = 고7IDX;
고7 = 고6; 고7IDX = 고6IDX;
고6 = 고5; 고6IDX = 고5IDX;
고5 = 고4; 고5IDX = 고4IDX;
고4 = 고3; 고4IDX = 고3IDX;
고3 = 고2; 고3IDX = 고2IDX;
고2 = 고1; 고2IDX = 고1IDX;
고1 = C; 고1IDX = Index;
sBar = Index - 저1IDX; // 추세선 시작점의 위치, n봉전으로 표시
TL1 = TL_New(sDate[sBar],sTime[sBar],저1,sDate[0],sTime[0],고1);
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
TL21 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],L[index-저2IDX],sDate[index-저1IDX],sTime[index-저1IDX],L[index-저2IDX]);
TL_SetColor(TL21,CYAN);
if C[index-저2IDX] != L[index-저2IDX] then{
TL22 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],C[index-저2IDX],sDate[index-저1IDX],sTime[index-저1IDX],C[index-저2IDX]);
TL_SetColor(TL22,CYAN);
}
T = -1;
}
Else If 고1 < C Then // 1번 고점보다 높은 고가 출현
{
고1 = C; 고1IDX = Index;
TL_SetEnd(TL1,sDate[0],sTime[0],고1);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
}
/* 고점추세선 */
If 고2IDX[1] <> 고2IDX Then // 고2의 Index값이 변동 없음 즉, 새로운 고점이 생기지 않았음
{
고추세최종 = 0; 고추세기울기 = 0; 고추세시작 = 0; 고추세봉개수 = 0;
If 고2 < 고3 Then
{
고추세기울기 = (고2 - 고3)/(고2IDX - 고3IDX);
고추세시작 = 고3;
고추세시작IDX = 고3IDX;
}
Else If 고2 < 고4 Then
{
고추세기울기 = (고2 - 고4)/(고2IDX - 고4IDX);
고추세시작 = 고4;
고추세시작IDX = 고4IDX;
}
Else If 고2 < 고5 Then
{
고추세기울기 = (고2 - 고5)/(고2IDX - 고5IDX);
고추세시작 = 고5;
고추세시작IDX = 고5IDX;
}
Else If 고2 < 고6 Then
{
고추세기울기 = (고2 - 고6)/(고2IDX - 고6IDX);
고추세시작 = 고6;
고추세시작IDX = 고6IDX;
}
Else If 고2 < 고7 Then
{
고추세기울기 = (고2 - 고7)/(고2IDX - 고7IDX);
고추세시작 = 고7;
고추세시작IDX = 고7IDX;
}
Else If 고2 < 고8 Then
{
고추세기울기 = (고2 - 고8)/(고2IDX - 고8IDX);
고추세시작 = 고8;
고추세시작IDX = 고8IDX;
}
Else If 고2 < 고9 Then
{
고추세기울기 = (고2 - 고9)/(고2IDX - 고9IDX);
고추세시작 = 고9;
고추세시작IDX = 고9IDX;
}
고추세봉개수 = Index - 고추세시작IDX;
고추세최종 = 고추세기울기 * 고추세봉개수 + 고추세시작;
If 고추세최종 > 0 Then
{
TL2 = TL_New(sDate[고추세봉개수],sTime[고추세봉개수],고추세시작,sDate[0],sTime[0],고추세최종);
TL_SetSize(TL2,1);
TL_SetColor(TL2,RED);
}
}
Else If 고추세최종[1] > 0 Then
{
고추세최종 = 고추세기울기 * (Index - 고추세시작IDX) + 고추세시작;
TL_SetEnd(TL2,sDate[0],sTime[0],고추세최종);
}
If 저추세최종[1] > 0 Then
{
저추세최종 = 저추세기울기 * (Index - 저추세시작IDX) + 저추세시작;
TL_SetEnd(TL3,sDate[0],sTime[0],저추세최종);
}
최종변곡점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = C;
If 최종변곡점 == "고점" then
{
저9 = 저8; 저9IDX = 저8IDX;
저8 = 저7; 저8IDX = 저7IDX;
저7 = 저6; 저7IDX = 저6IDX;
저6 = 저5; 저6IDX = 저5IDX;
저5 = 저4; 저5IDX = 저4IDX;
저4 = 저3; 저4IDX = 저3IDX;
저3 = 저2; 저3IDX = 저2IDX;
저2 = 저1; 저2IDX = 저1IDX;
저1 = C; 저1IDX = Index;
sBar = Index - 고1IDX;
TL1 = TL_New(sDate[sBar],sTime[sBar],고1,sDate[0],sTime[0],저1);
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
T = 1;
TL21 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],H[index-고2IDX],sDate[index-고1IDX],sTime[index-고1IDX],H[index-고2IDX]);
TL_SetColor(TL21,MAGENTA);
if C[index-고2IDX]!= H[index-고2IDX] then{
TL22 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],C[index-고2IDX],sDate[index-고1IDX],sTime[index-고1IDX],C[index-고2IDX]);
TL_SetColor(TL22,MAGENTA);
}
}
Else If 저1 > C then
{
저1 = C; 저1IDX = Index;
TL_SetEnd(TL1,sDate[0],sTime[0],저1);
}
/* 저점추세선 */
If 저2IDX[1] <> 저2IDX Then
{
저추세최종 = 0; 저추세기울기 = 0; 저추세시작 = 0; 저추세봉개수 = 0;
If 저2 > 저3 and 저3 > 0 Then
{
저추세기울기 = (저2 - 저3)/(저2IDX - 저3IDX);
저추세시작 = 저3;
저추세시작IDX = 저3IDX;
}
Else If 저2 > 저4 and 저4 > 0 Then
{
저추세기울기 = (저2 - 저4)/(저2IDX - 저4IDX);
저추세시작 = 저4;
저추세시작IDX = 저4IDX;
}
Else If 저2 > 저5 and 저5 > 0 Then
{
저추세기울기 = (저2 - 저5)/(저2IDX - 저5IDX);
저추세시작 = 저5;
저추세시작IDX = 저5IDX;
}
Else If 저2 > 저6 and 저6 > 0 Then
{
저추세기울기 = (저2 - 저6)/(저2IDX - 저6IDX);
저추세시작 = 저6;
저추세시작IDX = 저6IDX;
}
Else If 저2 > 저7 and 저7 > 0 Then
{
저추세기울기 = (저2 - 저7)/(저2IDX - 저7IDX);
저추세시작 = 저7;
저추세시작IDX = 저7IDX;
}
Else If 저2 > 저8 and 저8 > 0 Then
{
저추세기울기 = (저2 - 저8)/(저2IDX - 저8IDX);
저추세시작 = 저8;
저추세시작IDX = 저8IDX;
}
Else If 저2 > 저9 and 저9 > 0 Then
{
저추세기울기 = (저2 - 저9)/(저2IDX - 저9IDX);
저추세시작 = 저9;
저추세시작IDX = 저9IDX;
}
저추세봉개수 = Index - 저추세시작IDX;
저추세최종 = 저추세기울기 * 저추세봉개수 + 저추세시작;
If 저추세최종 > 0 Then
{
TL3 = TL_New(sDate[저추세봉개수],sTime[저추세봉개수],저추세시작,sDate[0],sTime[0],저추세최종);
TL_SetSize(TL3,1);
TL_SetColor(TL3,BLUE);
}
}
Else If 저추세최종[1] > 0 Then
{
저추세최종 = 저추세기울기 * (Index - 저추세시작IDX) + 저추세시작;
TL_SetEnd(TL3,sDate[0],sTime[0],저추세최종);
}
If 고추세최종[1] > 0 Then
{
고추세최종 = 고추세기울기 * (Index - 고추세시작IDX) + 고추세시작;
TL_SetEnd(TL2,sDate[0],sTime[0],고추세최종);
}
최종변곡점 = "저점";
}
TL_Delete(TL31);
TL_Delete(TL32);
TL_Delete(TL33);
TL_Delete(TL34);
If T == 1 Then{
TL31 = TL_New(sDate[index-고1IDX],sTime[index-고1IDX],H[index-고1IDX],sDate,sTime,H[index-고1IDX]);
TL_SetColor(TL31,MAGENTA);
if C[index-고1IDX]!= H[index-고1IDX] then{
TL32 = TL_New(sDate[index-고1IDX],sTime[index-고1IDX],C[index-고1IDX],sDate,sTime,C[index-고1IDX]);
TL_SetColor(TL32,MAGENTA);
}
TL33 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],L[index-저2IDX],sDate,sTime,L[index-저2IDX]);
TL_SetColor(TL33,cyan);
if C[index-저2IDX]!= L[index-저2IDX] then{
TL34 = TL_New(sDate[index-저2IDX],sTime[index-저2IDX],C[index-저2IDX],sDate,sTime,C[index-저2IDX]);
TL_SetColor(TL34,cyan);
}
}
If T == -1 Then{
TL31 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],H[index-고2IDX],sDate,sTime,H[index-고2IDX]);
TL_SetColor(TL31,MAGENTA);
if C[index-고2IDX]!= H[index-고2IDX] then{
TL32 = TL_New(sDate[index-고2IDX],sTime[index-고2IDX],C[index-고2IDX],sDate,sTime,C[index-고2IDX]);
TL_SetColor(TL32,MAGENTA);
}
TL33 = TL_New(sDate[index-저1IDX],sTime[index-저1IDX],L[index-저1IDX],sDate,sTime,L[index-저1IDX]);
TL_SetColor(TL33,cyan);
if C[index-저1IDX]!= L[index-저1IDX] then{
TL34 = TL_New(sDate[index-저1IDX],sTime[index-저1IDX],C[index-저1IDX],sDate,sTime,C[index-저1IDX]);
TL_SetColor(TL34,cyan);
}
}
2017-05-08
166
글번호 109299