커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1697
글번호 230811
답변완료
영웅문에서 아무리 해도 안되네요 이격도 검색식 문의 사진참조
항상 너무 너무 감사 드립니다
문의사항
이격도 60 이 DMI Minus 14를 골든 크로스 하는 종목을 검색하고 싶은데
아무리 시도해도 안되네요
예스트레이더는 영웅문에서 안되는게 거의 대부분 되더라구요
사진과 같이 검색이 될 수 있는지 문의 드립니다
되면 꼭 부탁 드립니다 항상 감사 합니다
2021-11-11
881
글번호 153525
답변완료
수식수정
아래수식중 분활매수 수식수정좀부탁드립니다 평단2퍼떨어질때마다고정금액1만원추가매수10번 평단5프로떨어질때마다2만원고정10번 평단10프로떨어질때마다3만원고정10번 1만원10번 끝나면2만원10번 끝나면3만원10번 이런식으로 순차적으로 매수되게 가능하면수정좀부탁드립니다 그리고매도수식은 평단2퍼상승시전액매도 각포지션 2퍼상승시 분활매도 요거2개남겨주시고 나머진 없애주세요 궁금한게잇는데 코인에서수식돌리는중인데 추가매수는수식상으로20번으로제한되잇나요?아니면 무한으로계속들어갈수잇나요?아래수식상으론 추가매수횟수를늘려도20번정도박에안들어가는거같던데 시물레이션돌려밧는데 어느시점밑으론추가매수되는게안나오던데 추가매수횟수제한이잇는지궁금합니다
input : Period(20),금액(10000);
var1 = Disparity(Period);
if MarketPosition == 0 and CountIf(C<O and var1 <= 97,3) == 3 Then
Buy("b",OnClose,DEF,금액/C);
if MarketPosition == 1 and MaxEntries < 10 Then
{
Buy("bb",AtLimit,AvgEntryPrice*0.98,(금액*(MaxEntries+1))/C);
if C > O Then
{
Var2 = Var2+1;
if Var2 == 3 Then
Var3 = L;
}
ExitLong("Bp",AtLimit,AvgEntryPrice*1.02);
if Var2 >= 3 and C < Var3 Then
ExitLong("bx1");
if CountIf(C>O and var1 >= 103,3) == 3 Then
ExitLong("bx2");
}
Else
{
var2 = 0;
}
SetStopProfittarget(2,PercentStop);
2021-11-10
761
글번호 153524
답변완료
문의 드립니다.~~~~
아래와 같이 답을 주셨는데
실행을 해 보니
의도대로 되지 않고
청산과 재진입이 과다 실행이 되어
다시 문의 드립니다,~~
1,진입은 추세 진입식으로
2,트레일링 추세익절청산과 동시에 재진입,
추세손절과 동시에 재진입으로 부탁드립니다.
정확한 수식을 위해
답변 주신 수식 위에 있는
변수와 시간조건식을 같이 올립니다.
input : 진입틱수(20);
input : 최소손실틱(0),손실감소틱(20);
input : StartTime1(70000),EndTime1(53000);
input : StartTime2(99999999),EndTime2(99999999);
input : StartTime3(99999999),EndTime3(99999999);
input : StartTime4(99999999),EndTime4(99999999);
var : Tcond(false);
var : OO(0),HH(0),LL(0);
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
{
Tcond = False;
}
if (DayOfWeek(sDate) != 1 and sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond = true;
OO = O;
HH = H;
LL = L;
}
if (sdate != sdate[1] and stime >= EndTime2) or
(sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then
{
Tcond = False;
}
if (DayOfWeek(sDate) != 1 and sdate != sdate[1] and stime >= StartTime2) or
(sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then
{
Tcond = true;
OO = O;
HH = H;
LL = L;
}
if (sdate != sdate[1] and stime >= EndTime3) or
(sdate == sdate[1] and stime >= EndTime3 and stime[1] < EndTime3) Then
{
Tcond = False;
}
if (DayOfWeek(sDate) != 1 and sdate != sdate[1] and stime >= StartTime3) or
(sdate == sdate[1] and stime >= StartTime3 and stime[1] < StartTime3) Then
{
Tcond = true;
OO = O;
HH = H;
LL = L;
}
if (sdate != sdate[1] and stime >= EndTime4) or
(sdate == sdate[1] and stime >= EndTime4 and stime[1] < EndTime4) Then
{
Tcond = False;
}
if (DayOfWeek(sDate) != 1 and sdate != sdate[1] and stime >= StartTime4) or
(sdate == sdate[1] and stime >= StartTime4 and stime[1] < StartTime4) Then
{
Tcond = true;
OO = O;
HH = H;
LL = L;
}
if Tcond == true Then
{
if MarketPosition == 0 and OO > 0 and LL > OO-PriceScale*진입틱수 Then
Buy("시작매수",AtStop,LL+PriceScale*진입틱수);
if MarketPosition == 0 and OO > 0 and HH < OO+PriceScale*진입틱수 Then
Sell("시작매도",AtStop,HH-PriceScale*진입틱수);
}
if MarketPosition == 1 Then
{
if Tcond == true Then
Sell("Bl1",AtStop,EntryPrice-PriceScale*진입틱수);
Else
Exitlong("Bl2",AtLimit,EntryPrice-PriceScale*진입틱수);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*최소손실틱 Then
{
if Tcond == true Then
Sell("sx1",AtLimit,highest(H,BarsSinceEntry)-PriceScale*손실감소틱);
Else
ExitLong("sx2",AtLimit,highest(H,BarsSinceEntry)-PriceScale*손실감소틱);
}
}
if MarketPosition == -1 Then
{
if Tcond == true Then
Buy("sl1",AtStop,EntryPrice+PriceScale*진입틱수);
Else
ExitShort("sl2",AtStop,EntryPrice+PriceScale*진입틱수);
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*최소손실틱 Then
{
if Tcond == true Then
Buy("bx1",AtStop,lowest(L,BarsSinceEntry)+PriceScale*손실감소틱);
Else
ExitShort("bx2",AtLimit,Lowest(L,BarsSinceEntry)+PriceScale*손실감소틱);
}
}
2021-11-11
974
글번호 153523
답변완료
수식 수정 의뢰드립니다!
안녕하세요!
아래 수식을 주봉, 월봉, 일봉에서도 사용할 수 있도록 수정을 좀 부탁드립니다!
감사합니다!
var1 = dayhigh(0)-daylow(0);
plot1(DayHigh+var1);
plot2((DayHigh+var1)-0.05);
plot3(DayLow-var1);
plot4((DayLow-var1)+0.05);
2021-11-10
929
글번호 153521
답변완료
시스템식 문의 드립니다.
해당 식을 작성이후에 시뮬레이션을 돌려봤는데. 적용이 안되는 이유가
무엇인지 확인하고 싶습니다.
위 그림대로 고점 과 저점 라인을 정확히 변수로 넣었지만. 매수가 안됩니다.
그리고, 보시면 고점을 기준을 주가가 아래로 하락하다가 해당타점에서 매수를
해야 하는데, 매수는 커녕 아무런 반응이 없네요..ㅜ.ㅜ
마지막으로 하나 궁금한점은. 아래의 식을 사용하면,
제가 고점이라고 변수로 금액을 입력하게 되면, 해당 봉 이후에, 타점이 와서 매수가
되는지 궁금하네요..
제가 생각하는 매수 시점이 입력된 고점(그 봉 이후에) 주가가 하락하다가
작성 타점에서 매수하는것을 생각하면서 만든 식인데 제대로 작성하는지도 궁금합니다.
확인을 부탁드립니다.
해당 시스템식은 아래와 같습니다.
------------------------------------------------------------------
input : 고점(7000),저점(2000);
input : 투자금액(10000000);
var : entry(False),매수786(0),매수618(0),매수5(0),손절382(0),타점익절1(0),타점익절2(0);
매수786 = 저점+(고점-저점)*0.786;
매수618 = 저점+(고점-저점)*0.618;
매수5 = 저점+(고점-저점)*0.5;
손절382 = 저점+(고점-저점)*382;
타점익절1 = 매수618+(매수786-매수618)*0.66;
타점익절2 = 매수5+(매수618-매수5)*0.66;
if Bdate != Bdate[1] Then
entry = true;
if TotalTrades > TotalTrades[1] Then
entry = False;
if MarketPosition == 0 and entry == true Then
{
Buy("618매수",AtLimit,매수618,Floor(투자금액));
}
if MarketPosition == 1 and MaxEntries == 1 and IsEntryName("618매수") == true Then
{
Buy("5매수",AtLimit,매수5,Floor(투자금액));
}
if MarketPosition == 1 Then
{
if MaxEntries == 1 Then
{
ExitLong("1타점익절",AtLimit,타점익절1);
}
if MaxEntries == 2 Then
{
ExitLong("2타점익절",AtLimit,타점익절2);
}
ExitLong("382손절",AtStop,손절382);
}
-----------------------------------------------------------------------
2021-11-10
1098
글번호 153520
답변완료
문의 드립니다.
친절한 도움에 감사드립니다.
수식 사용 중에 의도한 것과 상이하여 문의 드립니다.
제가 확인하고 싶은 것은 현재 캔들이 현재 캔들 이전 1~N번째 캔들 중에 최고가를 돌파하면 현재캔들의 종가에 매수(단, 양봉에만).
최저가를 돌파하면 현재캔들의 종가에 매도(단, 음봉에만).
이 내용입니다.
아래 수식은 N을 5로 해서 해봤는데요.
세가지 상이한 점을 말씀드립니다.
1. 제 의도한 개념으로는 1번 음봉의 종가에 매도 신호가 나오고 진입하는 것이 맞는 거 같습니다. 이전 5개 캔들의 최저가를 돌파한 캔들이니까요.
그런데 그 다음 양봉캔들에서 매수로 진입하였습니다.
2. 3번 매수 진입은 왜 진입한 건지 이해가 안됩니다. 이전 캔들 5개의 최고가를 넘긴 것이 안닌데 말입니다. 오히려 앞에 2번째 음봉 캔들(2번)의 종가에 매도가 들어가는 것이 맞는데요. 이 부분도 확인 부탁드립니다.
3. 4번 매수 진입도 맞지 않습니다. 이전 5개 캔들의 최저가를 돌파했으니 매도 진입이 맞는데, 양봉이니 매도 진입하지 않아야 맞습니다.
확인 수정 부탁드립니다.
아래 수식 수정한 것 외에.....
* 신호가 나온 현재 캔들의 종가 진입인데, 다음봉에서 N틱이상 눌렀다가 신호나온 캔들의 종가를 돌파할 때 진입하는 수식, 추가로 부탁드립니다.
수식과 차트 이미지 같이 올려드립니다.
감사합니다.
input : n1(5);
input : StartTime(233000),EndTime(013000);
input : 익절틱수(80),손절틱수(0);
var : Tcond(false), T(0);
Array : H1[50](0),L1[50](0);
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
{
T = 0;
Tcond = true;
}
if Tcond == true Then
{
if C > H1[n1]+PriceScale*1 and C > O Then
Buy("b");
if C < L1[N1]-PriceScale*1 and C < O Then
Sell("s");
if MarketPosition == 1 Then
ExitLong("bx",AtStop,L[BarsSinceEntry]-PriceScale*1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,H[BarsSinceEntry]+PriceScale*1);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-11-10
1060
글번호 153518
답변완료
수식 관련 문의 드립니다
안녕하세요,
1분봉 기준으로 이미 매수가 들어갔다고 가정하고, stop loss 조건을 어떻게 넣어야 하는지 여쭤보려고요.
가정
- 1분봉 기준
- 오늘 어제의 저가보다 높은 가격으로 매수 들어감. 손익실현 조건이 만족할때까지 (1분봉이지만) 몇일간 매수 포지션 유지
Stoploss
- 어제의 저가보다 X%낮은 가격에 도달하면 stop loss
바쁘시겠지만 수식 작성 요청 드립니다.
매번 무한 감사드립니다.
2021-11-10
992
글번호 153516
답변완료
조건에 따라 setstoploss 변경
안녕하세요 ^^ 각 조건에 따라 setstoploss, setstoptrailing 를 변경하는 코드를 짜고 있습니다
if entry_timing_band_width > 8 Then {
SetStopLoss(1.2,PercentStop);
SetStopTrailing(30,1.8,PercentStop);
}
Else if entry_timing_band_width > 4 Then {
SetStopLoss(0.9,PercentStop);
SetStopTrailing(30,1.5,PercentStop);
}
Else {
SetStopLoss(0.5,PercentStop);
SetStopTrailing(30,1,PercentStop);
}
모든 주문이 맨 마지막 조건을 충족했을 때 실행되는 코드로 실행되는것 같은데요, 어떻게 해야 할까요?
2021-11-10
1066
글번호 153515
답변완료
최소변화청산1
코스피200선물 5분봉차트에서
1개만 사용하던 최소변화 수식을
아래처럼 3개의 시간대로 나누어 사용해보았는데...시뮬레이션이 되더군요.
12시건 시뮬레이션 후 거래내역 s1오케이
13시건 시뮬레이션 후 거래내역 s2 오케이
14시건 시뮬레이션 후 거래내역 s3 오케이
거래내역을 보면 s1,s2,s3 모두 존재합니다.
그런데, 역으로 접근했을 때에는 문제가 발생합니다.
14시건 시뮬레이션 후 거래내역 s3 오케이
13시건 시뮬레이션 후 거래내역 s2 오케이...그런데 이 때 거래내역 s3이 없어집니다. 5분봉이니까 봉맥스는 12개까지 했고요.
봉맥스를 넘지 않는다면
시간대별로 구분되는 수식을 원합니다.
그렇다면 시간순으로 하던지 역으로 하던지 같은 결과가 나올 겁니다
아무래도 수식을 무리하게 나눈 것이 문제인 것 같으니 수정바랍니다.
*********************************************************************************
var : hh(0),ll(0),ii(0);
input : dnHLtime1(120000),dnbar1(12),dnHLrange1(1.00);
input : dnHLtime2(130000),dnbar2(12),dnHLrange2(1.00);
input : dnHLtime3(140000),dnbar3(12),dnHLrange3(1.00);
if bdate != bdate[1] Then
{
hh = 0;
ll = 0;
ii = 0;
}
if stime >= dnHLtime1 then
{
ii = ii +1;
if hh == 0 or (hh > 0 and h > hh) Then
hh = h;
if ll == 0 or (ll > 0 and l < ll) Then
ll = l;
if ii >= dnbar1 and hh-ll < dnHLrange1 Then
ExitShort("s1최소변화");
}
if stime >= dnHLtime2 then
{
ii = ii +1;
if hh == 0 or (hh > 0 and h > hh) Then
hh = h;
if ll == 0 or (ll > 0 and l < ll) Then
ll = l;
if ii >= dnbar2 and hh-ll < dnHLrange2 Then
ExitShort("s2최소변화");
}
if stime >= dnHLtime3 then
{
ii = ii +1;
if hh == 0 or (hh > 0 and h > hh) Then
hh = h;
if ll == 0 or (ll > 0 and l < ll) Then
ll = l;
if ii >= dnbar3 and hh-ll < dnHLrange3 Then
ExitShort("s3최소변화");
}
2021-12-16
709
글번호 153513