커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1664
글번호 230811
답변완료
종가기준 어제 200일이평선 수식
안녕하세요,
종가기준 200일 이평선은 MA(C,200)으로 사용하면 되는데, 어제 200일 이평선 수치를 참고하려면 MA(C,200)[1]이 맞는가요?
항상 감사드립니다.
2021-06-08
1646
글번호 149747
답변완료
수식 문의
질문 두가지가 있습니다
1.
if MarketPosition == -1 Then
{
if X5 == -1 and CountIf(X5 == 1,BarsSinceEntry) == 0 and
X == 1 and CountIf(X == 1 and X != X[1],BarsSinceEntry) >= 3 and (C+O)/2 >= Var27 Then
ExitShort("풋청1",AtMarket);
풋 청산을 예로 들면, 위 식에서, 진입한 이후에 5선(X)이 변곡3번이상 나오고 양봉이면 청산인데요..
Barsinceentry 대신에 5와 20이 Deadcross가 나오고 나서 5선이 상승 변곡이 3번이상나오면 청산으로 하고 싶은데요..countif 조건문에서 Deadcross를 넣을수는 없어서요..
Countif(X == 1 and X !=[1], Deadcross(5,20)) >=3 <- 이렇게 표현하고 싶습니다.
2. 보내주신 수식 설명좀 부탁드릴수 있을까요?
var : mav1(0),mav2(0),mav3(0),S(0),T(0);
mav1 = ma(C,20);
mav2 = ma(C,60);
mav3 = ma(C,240);
if mav1 > mav1[1] Then
S = 1;
if mav1 < mav1[1] Then
S = -1;
if CrossUp(mav2,mav3) Then
T = 1;
if CrossDown(mav2,mav3) Then
{
T = -1;
if mav1 > mav2 Then
T = 0;
}
if T == -1 and CrossUp(mav1,mav2) Then
T = -2;
if T == -2 and (mav1 < mav2 or mav1 > mav3) Then
T = 0;
if T == -2 and S == -1 and S != S[1] Then
{
T = -3;
Sell();
}
위 조건에서 T = 0 를 다른 조건으로 두번을 썻는데요..수식이 이해가 안되서요
그리고 60-240이 deadcross한 시점에서 60선이 1파동일때만 진입하고 3파동일때는 진입이 안되게 하는건 어떤부분인지 궁금합니다
- 수식을 잘 작동하고 있습니다.
///////////////////////////////////////////////////////////////////////////////
var : Period1(3),Period2(10),Period3(30),Period4(120),X5(0),X20(0),X60(0),XP(0),X(0),Y(0),Z(0),Q(0),Mav1(0), Mav2(0),Mav3(0),Mav4(0);
Input : Left(3),right(3);
var : B5(0),BP60(0),B20(0),B60(0),S5(0),S20(0),S60(0),SP60(0),Bcnt5(0),Bcnt20(0),Bcnt60(0),BcntP60(0), Scnt5(0), Scnt20(0), Scnt60(0),ScntP60(0),H1(0),H2(0),L1(0),L2(0);
InPUT : 진입시작시간(090000), 매매종료시간(153000);
if Bdate != Bdate[1] Then
{
Condition1 = False;
Condition2 = False;
}
Var26 = ema(Ema(Ema(c,period1),period1),period1); //ma(c,period1); //5선
Var27 = ema(Ema(Ema(c,period2),period2),period2); //20선
Var28 = ema(Ema(Ema(c,period3),period3),period3); //60선
Var29 = ema(Ema(Ema(c,period4),period4),period4); //240선
if CrossUp(Var26,Var27) Then
X5 = 1; //5-20 cross
if CrossDown(Var26,Var27) Then
X5 = -1;
if CrossUp(Var27,Var28) Then
X20 = 1; //20-60 cross
if CrossDown(Var27,Var28) Then
X20 = -1;
if CrossUp(Var28,Var29) Then
X60 = 1; //60-240 cross
if CrossDown(Var28,Var29) Then
X60 = -1;
if CrossUp(Var26,Var28) Then
XP = 1; //5-60 cross
if CrossDown(Var26,Var28) Then
XP = -1;
if Var26 > var26[1] Then
X = 1;
if Var26 < var26[1] Then
X = -1;
if Var27 > var27[1] Then // X5 : 5-20 Cross X : 5선
Y = 1; // X20 : 20-60 Cross Y : 20선
if Var27 < var27[1] Then // X60 : 60-240 cross Z : 60선
Y = -1; // XP : 5-60 cross
if Var28 > var28[1] Then
Z = 1;
if Var28 < var28[1] Then
Z = -1;
if X == 1 and X != X[1] and Bdate == Bdate[1] Then
Condition1 = true;
if X == -1 and X != X[1] and Bdate == Bdate[1] Then
Condition2 = true;
//////////////////////상방기준//////////////////
if XP == 1 and X == 1 and Condition1 == true Then //5-60 정배열 & 5상승
{
if X != X[1] Then //5선이 상승변곡 이면 B = 1
{
BP60 = 1;
} //5선이 상승변곡 & 20선 상승 & 5선 20선위 & 몸통이 5 BC 면 B =2
if BP60 == 1 and Y == 1 and Var26 > Var27 and C > O and (C+O)/2 >= var26 Then
{
BP60 = 2;
}
}
else
BP60 = 0;
if sDate == 20210429 and sTime < 92000 Then
MessageLog("%.2f",BP60);
//////////////////////하방기준//////////////////
if XP == -1 and X == -1 and Condition2 == true Then
{
if X!= X[1] Then
{
SP60 = 1;
}
if SP60 == 1 and Y == -1 and Var26 < Var27 and C < O and (C+O)/2 < var26 Then
{
SP60 = 2;
}
}
else
SP60 = 0;
//////////////////////////상방시그널/////////////////
if sTime >= 진입시작시간 and sTime <= 매매종료시간 and
XP == 1 Then
{
if XP != XP[1] Then
BcntP60 = 0;
if BP60 == 2 and BP60 != BP60[1] Then
{
BcntP60 = BcntP60+1;
if BcntP60 <= 1 Then
Buy("BP60");
}
}
////////////////////////하방 시그널//////////////////
if sTime >= 진입시작시간 and sTime <= 매매종료시간 and
XP == -1 Then
{
if XP != XP[1] Then
ScntP60 = 0;
if SP60 == 2 and SP60 != SP60[1] Then
{
ScntP60 = ScntP60+1;
if ScntP60 <= 1 Then
Sell("SP60");
}
}
if MarketPosition == 1 Then
{
if X5 == 1 and CountIf(X5 == -1,BarsSinceEntry) == 0 and
X == -1 and CountIf(X == -1 and X != X[1],BarsSinceEntry) >= 3 and (C+O)/2 <= Var27 then
ExitLong("콜청1",AtMarket);
if X5 == -1 and X == -1 and CountIf(X == -1 and X != X[1],BarsSinceEntry) >= 1 and (C+O)/2 <= Var27 Then
ExitLong("콜정2",AtMarket);
}
if MarketPosition == -1 Then
{
if X5 == -1 and CountIf(X5 == 1,BarsSinceEntry) == 0 and
X == 1 and CountIf(X == 1 and X != X[1],BarsSinceEntry) >= 3 and (C+O)/2 >= Var27 Then
ExitShort("풋청1",AtMarket);
if X5 == 1 and X == 1 and CountIf(X == 1 and X != X[1],BarsSinceEntry) >= 1 and (C+O)/2 >= Var27 Then
ExitShort("풋정2",AtMarket);
}
2021-06-08
1763
글번호 149745
답변완료
늘 수고많습니다
늘 고맙습니다
매수식에서 1회만 진입과 3% 손절을 구현하고 싶습니다
매수했는데 3% 손절되면 재 진입안되게 하고 싶습니다
5.20 골든 크로스로 식을 부탁드립니다
고맙습니다
2021-06-08
1494
글번호 149739
답변완료
수식작성
Inputs: XAvgLen(180), HiLoLen(50), Retrace(0.382);
Vars: XAvg(0), HiHi(0), LoLo(0), Retracement(0), HRetrace(0), LRetrace(0);
XAvg = Ema(C, XAvgLen);
HiHi = Highest(High, HiLoLen);
LoLo = Lowest(Low, HiLoLen);
Retracement = (HiHi - LoLo) * Retrace;
HRetrace = HiHi - Retracement;
LRetrace = LoLo + Retracement;
if crossup(c,HRetrace) Then
buy();
if crossdown(c,LRetrace) Then
sell();
-----------------------------
위 수식어는 ca1076님의 수식어 입니다.
매매시간을 19시 ~ 익일 5시55분으로 추가 부탁드립니다
2021-06-08
1588
글번호 149738
답변완료
다른 이평과의 이격에 관한 질문
안녕하세요
점점 더워지는 날씨에 수고가 많으십니다.
단순이평 60과 가중이평60을 설치하고 보면 서로간에 차이가 납니다.
예를들어 가중60 이 단순 60을위로 통과하면 매수 ,아래로 통과하면 매도 입니다.
청산 기준은 이평과의 이격을 기준으로 하고 싶은데 이 부분을 잘 몰라서 질문드립니다.
가중이평과 단순이평의 간격이 1mm 이면 청산...
이렇게 하는것인지요?
분명 크로스하기전에 서로 간격이 좁아질것이고 좁아지다가 크로스 하지않고 다시 멀어지면
청산이후 이격이 벌어지기에 다시 매도가 들어가는 방법으로 하고싶습니다.
반대는 매수겠지요
글로 표현을 잘 못해서 죄송합니다.
그리고 고맙습니다.
2021-06-08
1795
글번호 149737
답변완료
캔들 중간에라도 조건 만족하면 진입
안녕하세요.
제목 그대로 캔들이 만들어지는 중간에라도 조건 만족하면 진입하도록 수식을 만들 수 있나요?
지금 상황에서는 안되면 해당 옵션을 만드실 계획이라도 없을까요?
2021-06-07
1605
글번호 149736
답변완료
검색 문의
안녕하세요?
항상 도움주셔서 감사드립니다.
아래 로직을 노가다 하드코딩으로는 짜겠는데,
어떻게 하면 이쁘게 잘 짤수 있을지 잘 모르겠어서 조언을 구합니다.
1) 60개봉 내에 세개의 양봉이 연속으로 나오고
2) 1번 조건을 충족한 이후 봉부터 3개의 음봉이 연속으로 나오고
3) 2번의 조건이 충족하고 3개의 양봉이 연속으로 나오면 find(1)을 하고 싶습니다.
시간순서가 끼다보니..어떻게 하면 이쁜 코딩이 나올까요??
항상 감사드립니다.
2021-06-07
1529
글번호 149735
답변완료
직전거래 손실의 경우 if문 적용방법
질문1.
if 직전 거래가 손실 거래이면 then
당일 거래에 대한 기준이 아니라 몇일 되었어도
가장 마지막 사인에 거래된 조건이 손실인경우
전략1로 매수하고, 아니면 전략2로 매수하라는 명령을 하고 싶습니다.
직전거래 조건에 해당하는 bdate를 지웠는데도
여전히 그날에 전략2가 실행되는 오류가 있습니다.
아래부분을 보시고 조언 좀 부탁 드립니다.
하루종일해도 아직 해결이 안됩니다.
항상 감사합니다. ^^
if Bdate != Bdate[1] Then
if TotalTrades > TotalTrades[1] Then
loss = 1;
{
if PositionProfit(1) < 0 Then
{
loss = loss+1;
}
Else
loss = 0;
}
질문2.
직전손실거래가 연속하여 2회 이상 발생한 경우
전략3으로 매수하라는 명령도 어떻게 코딩해야하는지 궁금합니다.
2021-06-07
1786
글번호 149734
답변완료
늘 고맙습니다
늘 고맙습니다
검색할 때 시가총액 1조원 이상만 검색하고 싶습니다
부탁드립니다
2021-06-07
1969
글번호 149733