커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3371
글번호 230811
답변완료
제1조건과 제2조건을 동시에 만족하는 식
안녕하세요?
추세도 있으면서 변동성도 좋을때에 수직선을 긋는 식을 만들고 싶은데 잘 안됩니다.
수정 좀 부탁드립니다.
=======================================================================
//============== TDI(추세지표) ===============//
input : len1(20),len2(40);
var : mt(0),sum1(0),sum2(0),TDI(0),T(0);
mt = Abs(C-C[len1-1]);
sum1 = AccumN(mt,len1);
sum2 = AccumN(mt,len2);
TDI = sum1-(sum2-sum1);
If TDI[0] > TDI[1] Then {
T = 1;
}
//============== ATR(변동성지표) ===============//
Input : Period(14),SigPeriod(9);
var : AvgTrueRange(0,Data1),ATRsig(0,Data1);
Var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),TL9(0),TL10(0);
AvgTrueRange = Data1(ATR(Period));
ATRsig = ema(Data1(ATR(Period)),SigPeriod);
//=========================================//
If T==1 and cRossUp(AvgTrueRange, ATRsig) Then {
TL1 = TL_New(sdate,stime,99999999,sdate,stime,0);
TL_SetColor(TL1,ReD);
TL_SetSize(TL1,0);
PlaySound("C:₩EugeneYesTrader₩Bin10₩data₩Sound₩@거래량증가시작변동성확때시작");
}
2023-03-23
1347
글번호 167468
답변완료
수식 문의드립니다.
1. 일봉 저가가 5일선을 데드크로스 후, 30분봉상 5선이 10선을 골든크로스할 때 매수
2. 일봉 저가가 5일선 데드크로스 후, 30분봉상 20선을 골든크로스 할때 매수
1번 조건일때 1차매수, 2번 조건일 때 2차매수하고
익절 5%, 손절 5%
수식을 만들고 싶습니다. 항상 감사합니다.
2023-03-23
2132
글번호 167460
답변완료
피라미딩별청산2
피라미딩 적용했을 때
a,b 진입 후
a는 xb1
b는 xb2로 청산하는 수식을 작성했는데
a,b 모두 xb1으로 청산됩니다.
b는 xb2로 청산되게 수식 수정 부탁드립니다.
******************************************************************************
input:st1(101000),butd21(100),butd31(10000);
input:st2(103000),butd22(2000),butd32(12500);
input : exst(103000),ex하락1(99999),ex하락2(99999);
var : T1(0),entry(0);
if Bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and sTime>=st1 and entry==0 and
!(data2(c<Highd(0)-butd21)) and !(data3(c>Lowd(0)+butd31)) Then
Buy("a");
if MarketPosition == 1 then
{
if MaxEntries==1 and sTime>=st2 and entry==1 and
!(data2(c<Highd(0)-butd22)) and !(data3(c>Lowd(0)+butd32)) Then
Buy("b");
}
var : Tcond(false,Data2),h2(0,Data2),L2(0,Data2);
if Data2(Bdate != Bdate[1]) Then
Tcond = False;
if Data2((sdate != sdate[1] and stime >= exst) or
(sdate == sdate[1] and stime >= exst and stime[1] < exst)) Then
{
Tcond = true;
h2 = Data2(h);
l2 = Data2(l);
}
if Tcond == true Then
{
if Data2(H) > h2 Then
h2 = Data2(h);
if Data2(L) < l2 Then
l2 = Data2(l);
if MarketPosition == 1 and IsEntryName("a") and data2(c<h2-ex하락1) then
exitlong("xb1");
if MarketPosition == 1 and IsEntryName("b") and data2(c<h2-ex하락2) then
exitlong("xb2");
}
2023-04-24
1430
글번호 167458
답변완료
문의 드립니다.
안녕하세요.
당일 포함한 10 ATR 를 구하고 W 값에 저장
당일 최저가 에서 하락하면 하락한 값만큼 W 값 에서 마이너스 시키고 W1에 저장 (저장값에 0.3을 더하거나 뺄수 있음)
당일 최고가 에서 상승한 가격을 W 에 더한값이 W2(저장값에 0.3을 더하거나 뺄수 있음)
W가격 화면에 플릇으로 표시
당일최저가 -W1 값 플릇 으로 표시
당일최고가 +W2 값 플릇 으로 표시
2023-03-23
1482
글번호 167457
답변완료
수식 문의 드립니다.
안녕하세요
전에 올려주신 식입니다.
아래 식중에서 500.300.300 이 Crossup 상태에서 10.6.6 이 Crossup 되면은 매수
신호가 나에게 되어 있습니다.
이 식중에서 500.300.300 이 Crossup 된 상태에서 10.6.6 이 침체권(20) 아래로
내려 왔다가 올라가면서 다시 Crossup 이 되면은 매수신호 나오게 하는 식을 부탁드리겠습니다..
(여기서 10.6.6 Crossup 되는것이 20 아래든 20 위던간에 상관없이
Crossup 만 되면은 매수신호, 반드시 20 아래로 왔다가 탈출해야 매수신호출현)
여기서 침체권 영역 (20) 을 25 나 30 과 같이 조절할수 있도록 해 주시면 감사하겠습니다.
Input : Period(500), Period1(300), Period2(300), Period3(10), Period4(6), Period5(6);
var : T(0);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
value3 = StochasticsK(Period3,Period4);
value4 = StochasticsD(Period3,Period4,Period5);
# 스토캐스틱 500,300,300 이 crossup 상태 일때에만
If CrossDown(value1, value2) Then
T = 1;
if CrossUp(Value1, Value2) Then
T = -1;
# 20 이평과 60 이평이 골드시에 매수 하고
if T == 1 and CrossDown(Value3, Value4) Then
{
Sell();
}
# 이미 매수해 놓은것은 이평 20 이 60을 하향돌파 할때에 청산 신호
if CrossUp(Value3, Value4) Then
{
ExitShort();
}
항상 감사드립니다.
2023-03-23
1585
글번호 167455
답변완료
문의드립니다.
답변 감사드립니다. 답변중에 이해가 잘 안되는 부분이 있어서 다시 질문 드립니다.
HH10 = (High[1] + High[2] + High[3] + High[4] + High[5] + High[6] + High[7] + High[8] + High[9] + High[10]) /10 ;
저번 질문 HH10 계산된 값과 가로선 출력값의 오차가 나는 부분을
추세선과 텍스트는 봉완성시에 동작합니다.
차트의 마지막봉은 미완성봉으로 해당값을 기준으로 출력되게는 할수 없습니다.
현재봉이 포함되면 미완성봉이라 평균 값이 계속 틀려지는건 어쩔수 없지만
과거봉 [1] ~ [10] 또는 [2] ~ [11] 으로 하면 현재봉이 포함되지 않을텐데
HH10 값이 가로선 그려지는 값과 왜 틀릴까요?
감사합니다.
2023-03-23
1175
글번호 167454
답변완료
수식문의드립니다.
개발자님 감사합니다.
시스템 조건식 부탁드립니다.
삼각가중이평 180
삼각가중이평 60
삼각가중이평 30
위의 3개의 삼각가중이평중에
두개 이상의 이평선 위에서 봉의시가가 시작할때 매수진입
위의 3개의 삼각가중이평중에
두개 이상의 이평선 아래에서 봉의시가가 시작할때 있을때 매도진입
건강한 봄날되시고, 좋은일 가득하시길 바랍니다.
감사합니다.
2023-03-23
2042
글번호 167453
답변완료
문의 드립니다.
아래 식에서 익절 청산 추가를 원합니다.
매수와 매도 진입 후 각각 익절 설정할 수 있도록 부탁드립니다.
var1 = BollBandUp(20,2);
Var2 = BollBandDown(20,2);
if CrossUp(c,var1) Then
Buy();
if CrossDown(c,var1) Then
ExitLong();
if CrossDown(c,var2) Then
Sell();
if CrossUp(c,var2) Then
ExitShort();
2023-03-23
1588
글번호 167446
답변완료
수고하십니다.
안녕하십니까?
Text2 위에 Text3에 봉갯수 표시 되도록 추가부탁드립니다.
Input:length(20),종가사용여부(0),파동선두께(2),수치표시(1);
Input:가로라인두께(2),고점라인색상(RED),저점라인색상(BLUE);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),text2(0),TL2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = 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
{
최종고가 = HH;
// 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
var1 = 고[2,1]-저[1,1];
TL2 = TL_New(저[1,3],저[1,4],저[1,1],sDate,sTime,저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 1, 1);
Text_SetSize(Text1, 26);
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1]-저[1,1],2)+NewLine);
Text_SetStyle(Text2, 1, 1);
Text_SetSize(Text2, 26);
Text_SetColor(text2,RED);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUe);
TL_SetSize(TL2,가로라인두께);
TL_SetColor(TL2,저점라인색상);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetEnd(TL2,고[1,3],고[1,4],저[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1]-저[1,1],2)+NewLine);
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
var1 = 고[1,1]-저[2,1];
TL2 = TL_New(고[1,3],고[1,4],고[1,1],sDate,sTime,고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 1, 0);
Text_SetSize(Text1, 26);
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NewLine+NumToStr(저[1,1]-고[1,1],2));
Text_SetStyle(Text2, 1, 0);
Text_SetSize(Text2, 26);
Text_SetColor(text2,RED);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUe);
TL_SetSize(TL2,가로라인두께);
TL_SetColor(TL2,고점라인색상);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetEnd(TL2,저[1,3],저[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NewLine+NumToStr(저[1,1]-고[1,1],2));
}
}
최종꼭지점 = "저점";
}
2023-03-23
1435
글번호 167445