커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1691
글번호 230811
답변완료
수식 문의 드립니다
수고하십니다
전주봉 5 10 이평상향크로스 발싱시 분봉에 5 10 이평선을 추세선으로 그리고십
어요
다른분게서 무의 수식중에 Array:고점[10,2](0),저점[10,2](0); 이런문법 설명종
부작드립니다
2022-07-06
1283
글번호 160475
답변완료
수식 질문드립니다.
input : a(1),b(1),,,,,,,,,, z(1); 26개를
0/1 조합해보면, 총 2의 26승이 나옵니다.
이걸 시뮬하려면 총 67108864 개라서 AMD 5950x 기준 20년간 시뮬해야합니다.
intel 11500 이라면 200년 가까이 시뮬 돌려야합니다.
현실적으로 불가능하고,
a+b+c+.............+z >= 13 인 경우만
시뮬할 방법이 있을지 궁금합니다.
이정도만 되도 30분 안쪽으로 해결 될듯합니다.
2022-07-06
1411
글번호 160474
답변완료
문의 드립니다
안녕하세요 수정할 부분이 있어서 다시 올립니다~
시가 종가 차이가 n틱 이상일때 1회씩 카운팅하는 부분에서
"마지막 진입 가격보다 아래 있을때만"이란 조건도 만족할때
카운팅하도록 수정할수 있을까요~?
>>>안녕하세요
예스스탁입니다.
1
input: n(30), k(5);
var: counting(0);
if Bdate != Bdate[1] or (MarketPosition == 0 and TotalTrades > TotalTrades[1]) Then
counting = 0;
if C <= O-PriceScale*n Then
{
counting = counting+1;
if counting >= 3 and counting <= k+2 Then
Buy("b");
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
var1 = CurrentContracts-CurrentContracts[1];
Condition1 = true;
}
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx1" Then
{
Condition1 = False;
counting = 1;
}
if Condition1 == true Then
ExitLong("bx1",AtLimit,lowest(L,BarsSinceEntry)+PriceScale*n,"",MaxContracts-var1,1);
ExitLong("bx2",AtLimit,lowest(L,BarsSinceEntry)+PriceScale*n*2);
}
}
2
input: n(3), k(5);
var: counting(0);
if Bdate != Bdate[1] or (MarketPosition == 0 and TotalTrades > TotalTrades[1]) Then
counting = 0;
if C <= O*(1-n/100) Then
{
counting = counting+1;
if counting >= 3 and counting <= k+2 Then
Buy("b");
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
var1 = CurrentContracts-CurrentContracts[1];
Condition1 = true;
}
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx1" Then
{
Condition1 = False;
counting = 1;
}
if Condition1 == true Then
ExitLong("bx1",AtLimit,lowest(L,BarsSinceEntry)*(1+n/100),"",MaxContracts-var1,1);
ExitLong("bx2",AtLimit,lowest(L,BarsSinceEntry)*(1+(n*2)/100));
}
}
즐거운 하루되세요
> JTH 님이 쓴 글입니다.
> 제목 : 문의 드립니다
> input: n(30), k(5);
var: counting(0);
분봉 마감에서 시가 - 종가 차이가 n틱을 넘게 하락하면 1회로 카운팅하여,
3회 카운팅된때부터 다음봉 시가에 1차 매수
4회 카운팅된 후 다음봉 시가에 2차 매수
K+2회 카운팅 된 후에 다음봉 시가에 k차 매수
매수가 시작된 이후부터 최저가에서 n틱 상승 가격에 k-1회 매수분 물량 매도
카운팅은 1회로 초기화
최저가에서 2n틱 상승 가격에 나머지 1회 매수분 물량 매도
카운팅은 0회로 초기화
*n틱 대신에 n%로 바꾼 수식도 부탁드립니다
2022-07-06
1502
글번호 160473
답변완료
안녕하세요
혹시 아래 수식을 당일기준으로 변경 가능할까요? 전일종가랑 이어지지않고
당일기준으로 부탁드리겟습니다!
Input : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
PlotPaintBar(H,L,"강조",Red,Def,4);
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
PlotPaintBar(H,L,"강조",Blue,Def,4);
}
2022-07-05
1528
글번호 160472
답변완료
매도 청산식 요청드립니다.
아래의 식은 예전에 요청드렸던 분할매도청산식인데
수정이 필요한 부분이 있어 요청을 드립니다.
예를 들어 3%,4%,5%,7%,10% 차례대로 분할매도청산 식에서
평단가가 3%가 되었을때 매도를 안하다가 4% 가 되면 4%로 매도되고 주가가 떨어지면서
3%가 매도가 됩니다.
결과론적으로 condition2 가 매도가 되어야 condition1 이 시스템식이 적용됩니다.
확인좀 부탁드리겠습니다. 모가 문제인지..ㅜ.ㅜ
--------------------------------------------------------------------------------
#매수진입
if MarketPosition == 1 Then
{
#전봉대비 수량 감소(일부 청산발생을 위미)
if CurrentContracts < CurrentContracts[1] Then
{
#청산가 저장
var1 = LatestExitPrice(0);
Condition1 = False;
Condition2 = False;
Condition3 = False;
Condition4 = False;
Condition5 = False;
}
#전봉대비 수량 증가(추가 진입발생을 의미)
if CurrentContracts > CurrentContracts[1] Then
{
#현재수량 저장
Var3 = CurrentContracts;
Condition1 = False;
Condition2 = False;
Condition3 = False;
Condition4 = False;
Condition5 = False;
}
#일부청산이 한번이상 발생하고
#현재 시간이 일부청산후 10분 이후이고
#종가가 청산가 보다 작으면
#전량 청산
if var1 > 0 and C < AvgEntryPrice*1.007 then
ExitLong("bx");
#평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산
if Condition1 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수"))Then
ExitLong("3%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.4),1);
#평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산
if Condition2 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then
ExitLong("4%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.3),1);
#평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산
if Condition3 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then
ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor(Var3*0.1),1);
#평단가+7%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산
if Condition4 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then
ExitLong("7%익절",AtLimit,AvgEntryPrice*1.07,"",Floor(Var3*0.1),1);
#평단가+10%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 전량 청산
ExitLong("10%익절",AtLimit,AvgEntryPrice*1.10);
#평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산
if Condition1 == False AND ((LatestEntryName(0) == "D매수"))Then
ExitLong("1-D%익절",AtLimit,AvgEntryPrice*1.01,"",Floor(Var3*0.3),1);
#평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산
if Condition2 == False AND ((LatestEntryName(0) == "D매수")) Then
ExitLong("2-D%익절",AtLimit,AvgEntryPrice*1.02,"",Floor(Var3*0.3),1);
#평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산
if Condition3 == False AND ((LatestEntryName(0) == "D매수")) Then
ExitLong("3-D%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.3),1);
#평단가+6%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산
if Condition4 == False AND ((LatestEntryName(0) == "D매수")) Then
ExitLong("4-D%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.1),1);
#평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산
if Condition1 == False AND ((LatestEntryName(0) == "E매수"))Then
ExitLong("본절",AtLimit,AvgEntryPrice,"",Floor(Var3*0.6),1);
#평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산
if Condition2 == False AND ((LatestEntryName(0) == "E매수")) Then
ExitLong("1-E%익절",AtLimit,AvgEntryPrice*1.01,"",Floor(Var3*0.3),1);
#평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산
if Condition3 == False AND ((LatestEntryName(0) == "E매수")) Then
ExitLong("2-E%익절",AtLimit,AvgEntryPrice*1.02,"",Floor(Var3*0.1),1);
}
Else#매수진입중이 아니면
{
#변수 0으로 초기화
var1 = 0;
Var2 = 0;
}
if MarketPosition == 1 Then
ExitLong("손절",AtStoP,손절);
2022-07-05
1520
글번호 160471
답변완료
피보나치 지표
안녕하세요.
해외선물 지표 중 피보나치 되돌림 지표가 있나요?
(정확한 명칭이 피보나치 되돌림 인지는 모르겠습니다.
없다면 피보나치 비율을 적용할 수 있는 지표를 만들어 주실수 있습니까?
2022-07-05
1492
글번호 160470
답변완료
수식 부탁드립니다.
Input:전환비율(5);
input : StartTime(090000),EndTime(055500);
Input :익절(25),손절(33),당일수익(45),당일손실(50);
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);
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 (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
Xcond = false;
N1 = NetProfit;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 or daypl <= -당일손실 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
}
if Tcond == true and Xcond == false then
{
if MarketPosition >= 0 and T == 1 and L > 고[1,1]* (1 - (전환비율/100)) Then
Sell("s",AtStop,고[1,1]* (1 - (전환비율/100)));
if MarketPosition <= 0 and T == -1 and H < 저[1,1]* (1 + (전환비율/100)) Then
Buy("b",AtStop,저[1,1]* (1 + (전환비율/100)));
}
if MarketPosition == 1 then
{
ExitLong("bl",AtStop, max(EntryPrice-손절,고[1,1]* (1 - (전환비율/100))));
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
ExitShort("sl",AtStop, min(EntryPrice+손절,저[1,1]* (1 + (전환비율/100))));
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
SetStopProfittarget(익절,PointStop);
SetStopLoss(손절,PointStop);
============================================================================
1.그 동안 만들어주신 시스템으로 짜집기해서 만들어 봤는데, 맞는지 검토 한번 해주세요
# 0. 진입조건 : 전환비율(분홍점선) 돌파시 매수, 파란점선 붕괴시 매도
# - 종가봉 완성 전에 조건만족시 즉시 진입
#1. 매매시간조정 09:00~익일 05:55
#2. 1회 매매시 익절 25pt, 손절 33pt
#3. 하루 수익 45pt, 하루 손실 50pt 달성시 매매중지
2. 다음 조건으로 시스템 하나 더 부탁드립니다.
# 0. 진입조건 : 전환비율(분홍점선)+7pt 돌파시 매도,
전환비율(파란점선)-7pt 붕괴시 매수
# - 종가봉 완성 전에 조건만족시 즉시 진입
# 1~3. 조건은 동일
2022-07-05
1703
글번호 160468
회원 님에 의해서 삭제되었습니다.
2022-07-06
238
글번호 160467
답변완료
옵션 매매건수 데이터
시스템트레이딩 초보라서 그러는데 참조데이터에 선물 데이터 같은 옵션 매수호가 총건수, 옵션 매도호가 총건수 추가하는 방법 좀 알려주시면 감사하겠습니다.
2022-07-05
1342
글번호 160466