커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1595
글번호 230811
답변완료
수식 수정 부탁드립니다.
아래 수식은 당월 평균가입니다.
var : 월(0),sumi(0),sumO(0),sumC(0);
월=FLOOR(DATE/100);
if 월 != 월[1] Then
{
sumO = 0;
sumC = 0;
sumi = 0;
}
sumO = sumO + O;
sumC = sumC + C;
sumi = sumi + 1;
Plot1(sumO/sumi);
Plot2(sumC/sumi);
전월의 평균가 수식 부탁드립니다.
감사합니다.
2022-12-28
1386
글번호 164913
답변완료
수식 문의
항상 친절한 답변 감사드립니다.
일전 아래와 같은 수식을 도움 받았는데,
이에 추가하여,
연속으로 진입 신호가 나올 때 마다
진입의 수량을 마틴게일로 설정하고 싶습니다.
그 비율은 인풋값에서 입력가능토록 하고 싶습니다.
(최초 진입수량은 1로 설정)
감사합니다.
Input : Vector(14), Period(9), 매수선(50), 매도선(50);
input : n(10),n1(10);
Var : rsi_(0), rsi_signal(0) ;
var : ll(0),hh(0),eh(0),el(0),BuyEntry(False),SellEntry(False);
rsi_ = RSI(Period);
rsi_signal = MA(RSI(Period), Vector);
ll = lowest(l,n);
hh = highest(h,n);
if MarketPosition != 0 Then
{
if MarketPosition != MarketPosition[1] or CurrentContracts > CurrentContracts[1] Then
{
eh = hh;
el = ll;
}
}
BuyEntry = true;
SellEntry = true;
if MarketPosition == 0 Then
{
if MarketPosition(1) == 1 and (C > ll[BarsSinceEntry(1)]-PriceScale*n1 and C < HH[BarsSinceEntry(1)]+PriceScale*n1) Then
BuyEntry = False;
if MarketPosition(1) == -1 and (C > ll[BarsSinceEntry(1)]-PriceScale*n1 and C < HH[BarsSinceEntry(1)]+PriceScale*n1) Then
SellEntry = False;
}
else
{
if MarketPosition == 1 and C > el-PriceScale*n1 and C < eh+PriceScale*n1 Then
BuyEntry = false;
if MarketPosition == -1 and C > el-PriceScale*n1 and C < eh+PriceScale*n1 Then
SellEntry = false;
}
if rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then
{
if BuyEntry == true Then
Buy();
}
if rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then
{
if SellEntry == true Then
Sell();
}
2022-12-28
1457
글번호 164912
답변완료
수정 부탁합니다
1.기본차트(틱차트)에 구현하고 싶습니다
data2를 입혔는데......
2.if 1==1 then // 어떤 의미인가요?
감사합니다!!
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0),고점변곡(""),저점변곡("");
var : clr1(0),clr2(0),BE(0),SE(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,data2(C),data2(H));
LL = IFF(0==1,data2(C),data2(L));
If data2(Index) == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = data2(Highest(HH,length)) == HH and 최종고가 <> HH;
Condition2 = data2(Lowest (LL,length)) == LL and 최종저가 <> LL;
처리구분 = "";
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
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,Red);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, -1);
Text_SetColor(Text1,Blue);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then
{
TL12 = TL_New(고[2,3],고[2,4],고[2,1],data2(sdate),data2(stime),고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],data2(Sdate),data2(Stime),고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL13,2);
TL_SetColor(TL12,clr1);
TL_SetSize(TL12,2);
clr1 = Pink;
TL_SetColor(TL13,Pink);
}
if T == 1 and T[1] != 1 Then
{
TL14= TL_New(저[2,3],저[2,4],저[2,1],data2(sdate),data2(stime),저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],data2(sdate),data2(stime),저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetColor(TL14,clr2);
TL_SetSize(TL14,2);
clr2 = LightBlue;
TL_SetColor(TL15,clr2);
TL_SetSize(TL15,2);
}
if min(data2(C),data2(ma(c,5))) > TL_GetValue(TL13,data2(sDate),data2(sTime)) Then
{
clr1 = Red;
TL_SetColor(TL13,clr1);
}
if max(data2(C),data2(ma(c,5))) < TL_GetValue(TL15,data2(sDate),data2(sTime)) Then
{
clr2 = Blue;
TL_SetColor(TL15,clr2);
}
2022-12-27
1355
글번호 164911
졸던 님에 의해서 삭제되었습니다.
2022-12-27
954
글번호 164910
답변완료
나스닥 참조하여 시가 매수
안녕하세요
알려주신
if NextBarSdate != sDate then buy("b",AtMarket);
을 이용하여 시가 매수하는 법은 알았으나,
이 코드를 이용하여 나스닥 참조 전략을 구사하려할 때
전일 나스닥 수익률을 참조하여 오늘 아침에 시가매수를 하고 싶은데
ndq_ratio = 100*(data2(c)-Data2(c[1]))/Data2(c[1]);
이런식으로 나스닥 전일 수익률을 사용하면 2일 전 수익률이 반영되게 됩니다.
if NextBarSdate != sDate 이거 판단하는 시점에서 c[1]이 전전일이 되는 것 같은데
이걸 해결할 수 있는 방법이 있을까요?
2022-12-27
1310
글번호 164909
퀀텀점프 님에 의해서 삭제되었습니다.
2022-12-27
0
글번호 164908
답변완료
익절후 재진입 방지
다음 세 가지 조건으로 거래를 하려고 합니다
1) COND1 +1 / -1 신호 발생시 매수 / 매도
2) 3% 이익발생시 매수익절 / 매도익절
3) 매수익절 / 매도익절 후에는 항상 COND1 신호에 따라 반대로만 진입 (매도 / 매수)
이를 위해 다음 수식을 작성하였습니다.
If IsExitName("EL", 1) == False AND IsExitName("ES", 1) == False Then
Begin
If COND1 == 1 Then Buy("B1");
If COND1 == -1 Then Sell("S1");
End
If MarketPosition == 1 AND IsEntryName("B1") == True AND C > EntryPrice * 1.03 Then ExitLong("EL");
If MarketPosition == -1 AND IsEntryName("S1") == True AND C < EntryPrice * 0.97 Then ExitShort("ES");
If IsExitName("EL") Then
Begin
If COND1 == -1 Then Sell("S2");
End
If IsExitName("ES") Then
Begin
If COND1 == 1 Then Buy("B2");
End
이를 그대로 적용했더니 이런 오류가 생깁니다
(청산후에 거래가 없음)
참고로 익절 이후 관련된 부분을 다음 식을 사용해봐도 오류가 생깁니다.
(S2로 재진입후 청산. 똑같이 청산후에 거래없음)
Condition1 = MarketPosition(1) == 1 and IsExitName("EL",1) == true;
Condition2 = MarketPosition(1) == -1 and IsExitName("ES",1) == true;
if Condition1 == false and COND1 == 1 Then
buy("B2");
if Condition2 == false and COND1 == -1 Then
sell("S2");
2022-12-27
1666
글번호 164906
답변완료
수식을 문의드립니다.
다음 수식을 종목검색식으로 부탁드립니다.
max( avg(C,short), avg(C,mid), avg(C,long)) <
min( avg(C,short), avg(C,mid), avg(C,long)) * (1+Percent/100) &&
Highest(H,2, 1) < C
and O < C
and ((C(1)*1.5 <= C) or (O*1.5 <= C))
and (C-O)*1.5 >= (H-C)
and V(1)*1.3 <= V
and avg(V, 5) >= 20000
and PreDayClose() >= 550
and Crossup(C,SAR(0.02, 0.2))
and CrossUp(h,BBandsUp(20, 2))
항상 고맙습니다.
2022-12-27
1309
글번호 164903
답변완료
문의드립니다^^
단일캔들의 현재가(종가)가 5,20,60 이평을 동시 돌파하는 캔들이면 노란색으로 시가~종가 까지 강조색을 반대이면 화이트색으로 강조되게 수식을 부탁드립니다^^
2022-12-27
1007
글번호 164900