커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7053
글번호 230811
답변완료
10봉이내 반대방향 교차시 진입
이평선 5,20선이 상향교차 후 10봉이내 하향교차시에만 매도
이평선 5,20선이 하향교차 후 10봉이내 상향교차시에만 매수
수식 부탁합니다.
2022-01-13
1086
글번호 155428
답변완료
문의 드립니다.~~~~
계시판을 보며 나름 열심히 공부하고 있습니다.
아래식의 자세한 주석을 부탁드립니다.
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),color(0);
var:T(0),B(0),Bx(0),S(0),Sx(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
{
T = 1;
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);
}
if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then{
color = RED;
# buy("b");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,color);
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
{
T = -1;
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);
}
if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{
color = blue;
# sell("s");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,color);
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);
#상승구간의 마지막저점 저장
if Color == RED Then
{
var1 = 저점[2,1];
}
#하락구간의 마지막 고점 저장
if Color == BLUE Then
{
var2 = 고점[2,1];
}
if MarketPosition <= 0 Then
{
if color == BLUE and var1 > 0 and L > var1-PriceScale*50 Then
Buy("b",AtLimit,var1-PriceScale*50,1);
}
if MarketPosition == 1 Then
{
value1 = Floor(MaxEntries/2)+1;
Buy("bb",AtLimit,(var1[BarsSinceEntry]-PriceScale*50)-(PriceScale*50)*MaxEntries,value1);
if T == -1 and 고점[1,1] > 0 Then
ExitLong("bx1",AtLimit,고점[1,1]+PriceScale*1);
if T == 1 and 고점[2,1] > 0 Then
ExitLong("bx2",AtLimit,고점[2,1]+PriceScale*1);
}
if MarketPosition >= 0 Then
{
if Color == RED and Var2 > 0 and H < var2+PriceScale*50 Then
Sell("s",AtLimit,Var2+PriceScale*50,1);
}
if MarketPosition == -1 Then
{
value1 = Floor(MaxEntries/2)+1;
Sell("ss",AtLimit,(var2[BarsSinceEntry]+PriceScale*50)+(PriceScale*50)*MaxEntries,value1);
if T == 1 and 저점[1,1] > 0 Then
ExitShort("sx1",AtLimit,저점[1,1]-PriceScale*1);
if T == -1 and 저점[2,1] > 0 Then
ExitShort("sx2",AtLimit,저점[2,1]-PriceScale*1);
}
2022-01-13
855
글번호 155427
크라켄 님에 의해서 삭제되었습니다.
2022-01-14
8
글번호 155426
답변완료
문의드립니다
1)input : ntime1(5),P1(5),P2(20),P3(60);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),mav1(0),sum11(0),mav11(0);
var : sum2(0),mav2(0),sum21(0),mav21(0);
var : sum3(0),mav3(0),sum31(0),mav31(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P1] > 0 then
{
sum1 = 0;
sum11 = 0;
for cnt = 0 to P1-1
{
sum1 = sum1+C1[cnt];
sum11 = sum11+C1[cnt+1];
}
mav1 = sum1/P1;
mav11 = sum11/P1;
plot1(mav1,"이평1",IFf(mav1 > mav11,GREEN,GREEN));
}
if C1[P2] > 0 then
{
sum2 = 0;
sum21 = 0;
for cnt = 0 to P2-1
{
sum2 = sum1+C1[cnt];
sum21 = sum21+C1[cnt+1];
}
mav2 = sum2/P2;
mav21 = sum21/P2;
plot2(mav2,"이평2",IFf(mav2 > mav21,GREEN,GREEN));
}
if C1[P3] > 0 then
{
sum3 = 0;
sum31 = 0;
for cnt = 0 to P3-1
{
sum3 = sum3+C1[cnt];
sum31 = sum31+C1[cnt+1];
}
mav3 = sum3/P3;
mav31 = sum31/P3;
plot3(mav3,"이평3",IFf(mav3 > mav31,GREEN,GREEN));
}
}
2)INPUTS: LENGTH1(13);
VARS : DEMA1(0);
var1= EMA(C,LENGTH1);
value1= EMA(EMa(C,LENGTH1),LENGTH1);
DEMA1 = var1 * 2 - value1;
if C >DEMA1 Then
PLOT1(DEMA1, "DEMA1",GREEN);
Else
PLOT1(DEMA1, "DEMA1",GREEN);
1번과2번수식으로 5이평선이 60이평선을상승 크로스하면 오른쪽으로 일자수평선이 나오게(트리로)색은노랑색 색상크기조정하게끔,
반대로 5이평선이 60이평선을 하락크로스하면 오른쪽으로 일자수평선이 나오게 (트리로)색상은 레드색으로 색상크기조정하게,그리고 상승이나하락크로스하면 압전것은 사라지고일자수평선1개만유지하도록 1번과2번동일하게 2개 수정부탁드립니다~~미리감사드립니다
2022-01-13
1021
글번호 155424
답변완료
문의
"b2" 거래가 먼저 발생하여 1패 했을 때 "b1" 거래는 진입금지를 아래 수식에 추가해 주십시요.
*********************************************************************************
input : n(50);
input : 진입횟수(1);
var : entry(0);
if Bdate != Bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if C[1] == O[1] Then
{
var1 = n/100;
var2 = Floor(C[1]);
var3 = FracPortion(C[1]);
Var4 = floor(Var3/(n/100));
value1 = var2+(Var4+1)*var1;
value2 = var2+Var4*var1;
if C[1] != Value2 Then
{
if C > O and C >= Value1 and entry < 진입횟수 Then
Buy("b1");
}
Else
{
if C > O and C >= Value2 and entry < 진입횟수 Then
Buy("b2");
}
}
2022-01-14
1088
글번호 155422
답변완료
문의드립니다
어떤 지표의 장시작시(9시) 값을 가로선으로 나타내고 싶습니다
예를 들어 ma(c,n) 의 값이라면... 아침 9시 장시작시 값을 구해 가로선으로 표시하고 싶습니다
감사합니다
2022-01-13
1270
글번호 155417
답변완료
문의 드립니다.
스토케스틱 10 5 5에서 기준선20을 스토케스틱K선이 아래로 돌파 시 매수 진입
청산은 기준선80을 스토케스틱K선이 위로 돌파 시 매도 청산 완료
스토케스틱 10 5 5에서 기준선80을 스토케스틱K선이 위로 돌파 시 매도 진입
청산은 기준선20을 스토케스틱K선이 위로 돌파 시 매수 청산 완료
각각으로 분리해서 부탁드립니다.
2022-01-13
1064
글번호 155415
크라켄 님에 의해서 삭제되었습니다.
2022-01-13
1
글번호 155407
답변완료
[해외선물 - 나스닥 100] 일부 변경 요청건
매수 진입후 청산되지 않을때 매주 금요일 (토요일 새벽) AM 5시00분에
청산되지 않는 매수된 계약의 평균값이 플러스일때 (수익일때) 일괄 청산
청산되지 않는 매수된 계약의 평균값이 마이너스일때 (손실일때) 청산 되지 않는 수식을
추가 될수 있게 수식 부탁드림니다.
-----------------------------------------------------------------------------------
input : MFI기간(25),MFI값(7),하락틱수(250),하락틱수1(400),익절틱(525),손절틱(50000);
input : MFI청산기간(8),MFI청산값(86);
input : 추가매수횟수(6),X(25),Y(100);
var : MoneyFlow(0),MoneyFlow1(0);
MoneyFlow = MFI(MFI기간);
MoneyFlow1 = MFI(MFI청산기간);
if MarketPosition == 0 and MoneyFlow <= MFI값 and C <= Highest(H,X)-PriceScale*Y Then
Buy("b",OnClose,DEf,1);
if MarketPosition == 1 and MaxEntries < 추가매수횟수 and MoneyFlow < MFI값 and C < O and V > V[1] Then
Buy("추매",AtLimit,LatestEntryPrice(0)-PriceScale*하락틱수);
if MarketPosition == 1 and MaxEntries < 추가매수횟수 and C < O and V > V[1] Then
Buy("325틱추가매수",AtLimit,LatestEntryPrice(0)-PriceScale*하락틱수1);
if MarketPosition == 1 and MoneyFlow1 > MFI청산값 Then
ExitLong("MFI청산",atlimit,AvgEntryPrice*1.005);
SetStopLoss(PriceScale*손절틱,PointStop);
SetStopProfittarget(PriceScale*익절틱,PointStop);
2022-01-13
1275
글번호 155406