커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1687
글번호 230811
2wnwn 님에 의해서 삭제되었습니다.
2022-07-15
33
글번호 160763
답변완료
수식 부탁드립니다.
더운데 고생 많으십니다.
1.아래 수식에 당일손절(800) 추가 해 주세요.
2.전일 마지막신호가 매수였다면, 당일 시작과 동시에 매수진입이 될수 있게 해 주세요.
3.같은 수식을 이베스트하고 nh선물에 적용하면 거래선이 틀리던데, 왜 그럴까요?
================================================================================
Input:전환비율(5);
input : StartTime(070000),EndTime(060000);
Input :익절(500),손절(200),당일수익(900);
Var : N1(0),dayPl(0),Tcond(false),Xcond(false);
Var : j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분("");
var : TL1(0),Text1(0),ADXV1(0),tl2(0),tl3(0),tx2(0),tx3(0),t(0);
Array:고[10,4](0),저[10,4](0);
if V == highest(V,120) Then
var5 = (C+H+L)/3; #120거래선#
if V == highest(V,360) Then
var12 = (C+H+L)/3; #360거래선#
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1] * (1 + (전환비율/100)) < HH and hiBar == 0;
Condition2 = 고[1,1] * (1 - (전환비율/100)) > LL and loBar == 0;
처리구분 = "";
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;
If 최종꼭지점 == "저점" Then
{
TL_SetEnd(TL2,저[1,3],저[1,4],고[1,1]* (1 - (전환비율/100)) );
Text_SetLocation(TX2,저[1,3],저[1,4],고[1,1]* (1 - (전환비율/100)) );
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,RED);
TL2 = TL_New(고[1,3],고[1,4],고[1,1]*(1-(전환비율/100)) ,NextBarSdate,NextBarStime,고[1,1]*(1-(전환비율/100)) );
TL_SetColor(TL2,Cyan);
TL_SetStyle(TL2,3);
Tx2 = Text_New(NextBarSdate,NextBarStime,고[1,1]*(1-(전환비율/100)),NumToStr(고[1,1]*(1-(전환비율/100)),2));
Text_SetColor(Tx2,Cyan);
}
Else If 고[1,1] < HH[hiBar] Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetBegin(TL2,고[1,3],고[1,4],고[1,1]* (1-(전환비율/100)) );
Text_SetString(TX2,NumToStr(고[1,1]*(1-(전환비율/100)),2));
}
최종꼭지점 = "고점";
}
If 처리구분 == "저점처리" Then
{
t = -1;
If 최종꼭지점 == "고점" Then
{
TL_SetEnd(TL3,고[1,3],고[1,4],저[1,1]* (1 + (전환비율/100)) );
Text_SetLocation(TX3,고[1,3],고[1,4],저[1,1]* (1 + (전환비율/100)) );
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,BLUE);
TL3 = TL_New(저[1,3],저[1,4],저[1,1]* (1 + (전환비율/100)) ,NextBarSdate,NextBarStime,저[1,1]* (1 + (전환비율/100)) );
TL_SetColor(TL3,Magenta);
TL_SetStyle(TL3,3);
TX3 = Text_New(NextBarSdate,NextBarStime,저[1,1]*(1+(전환비율/100)),NumToStr(저[1,1]*(1+(전환비율/100)),2));
Text_SetColor(TX3,Magenta);
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetBegin(TL3,저[1,3],저[1,4],저[1,1]* (1 + (전환비율/100)) );
Text_SetString(TX3,NumToStr(저[1,1]*(1+(전환비율/100)),2));
}
최종꼭지점 = "저점";
}
TL_SetEnd(TL2,NextBarSdate,NextBarStime,고[1,1]* (1 - (전환비율/100)) );
Text_SetLocation(TX2,NextBarSdate,NextBarStime,고[1,1]* (1 - (전환비율/100)) );
TL_SetEnd(TL3,NextBarSdate,NextBarStime,저[1,1]* (1 + (전환비율/100)) );
Text_SetLocation(TX3,NextBarSdate,NextBarStime,저[1,1]* (1 + (전환비율/100)) );
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if Bdate != Bdate[1] Then
{
Tcond = true;
Xcond = false;
N1 = NetProfit;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then
Xcond = true;
}
if Tcond == true and Xcond == false then
{
if MarketPosition >= 0 and T == 1 and L > 고[1,1]* (1 - (전환비율/100)) and Var5<var12 Then
Sell("s",AtStop,고[1,1]* (1 - (전환비율/100)));
if MarketPosition <= 0 and T == -1 and H < 저[1,1]* (1 + (전환비율/100)) and Var5>var12 Then
Buy("b",AtStop,저[1,1]* (1 + (전환비율/100)));
}
if MarketPosition == 1 then
{
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
}
/**********************************************************************/
if MarketPosition == 1 and Var5<Var12 Then
exitlong("eB_b120");
if MarketPosition == -1 and Var5>Var12 Then
ExitShort("eS_s120");
/*
if MarketPosition == 1 and T == 1 and L > 고[1,1]* (1 - (전환비율/100)) Then
ExitLong("eb_1",AtStop,고[1,1]* (1 - (전환비율/100)));
if MarketPosition == -1 and T == -1 and H < 저[1,1]* (1 + (전환비율/100)) Then
ExitShort("es_1",AtStop,저[1,1]* (1 + (전환비율/100)));
*/
SetStopProfittarget(익절,PointStop);
SetStopLoss(손절,PointStop);
2022-07-15
1203
글번호 160759
답변완료
함수요청
추가적으로 질문드립니다.
아래글번호 78065번 재질문입니다.
시스템 A와 시스템 B를 각각 동시에 돌린 것과 시스템 C 한개를 돌린 것과 신호와 손익이 같도록 작성 요청드리되 시스템 A의 강제청산 시간(15시)과 시스템 B의 강제청산 시간(15시 15분)을 달리하고자 합니다.
(시스템 A = 글번호 77970번에서 작성주신 스크립트 : 15시 포지션 강제청산)
(시스템 B = 글번호 77955번에서 작성주신 스크립트 : 15시 15분 포지션 강제청산)
/시스템 A
var : T(0),S(0),mav(0);
mav = ma(c,20);
if Bdate != Bdate[1] Then
{
T = 0;
S = 0;
if L[1] > mav[1] and H < mav Then
Sell("s",AtMarket);
if H[1] < mav[1] and L > mav Then
Buy("b",AtMarket);
}
if MarketPosition == -1 Then
{
if CrossUp(c,mav) Then
ExitShort("sx",AtMarket);
if L < DayLow(0)[1] and L[1] != DayLow(0)[1] Then
{
var1 = var1+1;
if var1 == 3 Then
ExitShort("sx1");
}
}
Else
var1 = 0;
if MarketPosition == 1 Then
{
if CrossDown(c,mav) Then
ExitLong("bx",AtMarket);
if H > DayHigh(0)[1] and H[1] != DayHigh(0)[1] Then
{
var2 = var2+1;
if var2 == 3 Then
ExitLong("bx1");
}
}
Else
Var2 = 0;
SetStopEndofday(150000);
/시스템B
var : T(0),S(0),mav(0);
mav = ma(c,20);
if Bdate != Bdate[1] Then
{
T = 0;
S = 0;
if L > mav Then
T = -1;
if H < mav Then
T = 1;
}
if T == -1 and CrossDown(C,mav) Then
{
S = S+1;
if S == 2 Then
Sell();
}
if T == 1 and CrossUp(C,mav) Then
{
S = S+1;
if S == 2 Then
Buy();
}
if MarketPosition == 1 and Bdate == Bdate[1] and C < DayLow(0)[1] Then
ExitLong("bx",AtMarket);
if MarketPosition == -1 and Bdate == Bdate[1] and C > DayHigh(0)[1] Then
ExitShort("sx",AtMarket);
SetStopEndofday(151500);
2022-07-15
1287
글번호 160758
답변완료
수식 문의 드립니다.
노고가 많으십니다.
일봉 거래식 입니다
매수 : 5이평선 상향시 즉시 매수
매도 : 5이평선 하향시 즉시 매도
매도 : 당일 최고점 대비 5% 하향시 즉시 매도
매도 : 음봉시 즉시 매도
2022-07-15
1240
글번호 160757
답변완료
문의합니다
안녕하세요
이전 4개의 봉이 연속 양봉일 때 진입하지 않는다 부탁드려요
(조건식을 만들어서 해봤는데 잘 안먹혀서 간단한 건데 문의합니다^^)
2022-07-14
1407
글번호 160756
답변완료
78093 답변 확인 부탁합니다
<질문>
가장 낮은 양봉 고가와 두번째로 낮은 양봉 종가를 표시한다
가장 높은 음봉 저가와 두번째로 높은 음봉 종가를 표시한다
<답변>
가장 낮은 양봉 고가와 두번째로 낮은 양봉 고가를 표시
가장 높은 음봉 저가와 두번째로 높은 음봉 저가를 표시
확인 부탁드립니다
감사합니다
---------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
if C > O Then
{
var1 = H;
Var2 = C;
}
Else
{
var1 = 99999999;
var2 = 99999999;
}
if C < O Then
{
Var3 = L;
Var4 = C;
}
Else
{
Var3 = 0;
Var4 = 0;
}
value1 = NthLowest(1,Var1,8);
value2 = NthLowest(2,Var2,8);
value3 = NthHighest(1,Var3,8);
value4 = NthHighest(2,Var4,8);
if value1 < 99999999 Then
Plot1(value1);
Else
NoPlot(1);
if value2 < 99999999 Then
Plot2(value2);
Else
NoPlot(2);
if value3 > 0 Then
Plot3(value3);
Else
NoPlot(3);
if value4 > 0 Then
Plot4(value4);
Else
NoPlot(4);
즐거운 하루되세요
> uuppaa 님이 쓴 글입니다.
> 제목 : 지표 질문입니다
> 최근 8캔들 가운데
가장 낮은 양봉 고가와 두번째로 낮은 양봉 종가를 표시한다
가장 높은 음봉 저가와 두번째로 높은 음봉 종가를 표시한다
감사합니다
2022-07-14
1519
글번호 160755
답변완료
종목검색
종목검색 부탁드립니다.
키움증권만 쓰다가 예스트레이더는 처음입니다.잘 부탁드립니다.
'단순 3 이평선이 피봇중심선을 돌파'하는 종목을 검색해보고 싶습니다.
감사합니다
2022-07-14
1594
글번호 160754
답변완료
추가 문의드립니다.
수고많으십니다.
또한 친절한 답변에 감사드립니다.
답변 주신 내용은 아래 수식입니다.
아래 수식은 "◆"이 고정되어 있는데요.
한개의 봉이 완성될 때 마다 그때 그때 구분될 수 있게 하려고 합니다.
어떤 수식을 수정이나 추가해야 하나요?
1. 직전 완성봉이 완성될 때(직전 봉 종가 완성 또는 다음 봉 시가 시작할 때) 마다
"◆"의 색깔을 White, Green 로 지정해서 교대로 나오게 하는 수식 부탁드립니다.
2. 또는 화살표 진입 신호처럼 봉이 완성될 때마다 2-3 차례 점등되는 수식 부탁드립니다.
감사합니다.
var : tx1(0),tx2(0);
#직전완성봉
Text_Delete(tx1);
tx1 = Text_New(sdate,stime,H+PriceScale*5,"◆");
text_setStyle(tx1,2,1);
text_setcolor(tx1,White);
text_setsize(tx1,10);
#현재 미완성봉
Text_Delete(tx2);
tx2 = Text_New(NextBarSdate,NextBarStime,H+PriceScale*5,"◆");
text_setStyle(tx2,2,1);
text_setcolor(tx2, Yellow);
text_setsize(tx2,10);
2022-07-15
1484
글번호 160753
답변완료
수식 문의 드립니다. 매도후 재진입
안녕하세요
국내주식입니다
ex) 매도후 재진입인데요. 5프로 상승후 2프로 하락하면 매수(2개) 를 할려고 하는데요
수식 문의 드립니다
2022-07-14
1226
글번호 160752