커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4700
글번호 230811
답변완료
지표 작성 문의드립니다
안녕하세요
현재가가 20이평선,60이평선에 닿았을때 각각 알람소리가 나오게 하고싶습니다
수식 부탁드려요
단, 두 경우다 봉완성 종가기준이 아니라 봉 완성전에라도 닿으면 소리나게하려하는데 가능한지요?
이평선 수치는 추후 제가 필요하면 조절할수있게 해주시면 좋겠고 알람소리는 아무거나 지정해주시면 제가 조절,변경해서 쓰겠습니다
감사합니다
2016-01-06
119
글번호 94100
답변완료
문의 드립니다.
예를 들어
accumn(iff(crossup(c,ma(c,60)),1,0),3)>= 1
and a > ma(c,60)
then buy("가");
이고 설정에서 중복진입 금지, 목표수익 4틱으로 설정했을 경우
이 경우에 만족하는 결과값이 3개가 나왔어도 중복진입 금지이므로
첫번째 결과로 진입이 됩니다.
그런데 첫번째 진입하자마자 4틱 수익 나고 청산된 경우에 곧 다음 캔들에서
두번째 결과가 진입이 되고, 두번째 결과도 4틱 수익이 나면
세번째 결과도 진입이 됩니다.
이 경우에 첫번째 진입이 청산되면 곧바로 2,3번째 진입이 되지 않도록 할 수
있을까요?
감사합니다.
2016-01-06
94
글번호 94099
답변완료
함수수정요청(11-1호)
안녕하세요?
아래 함수를 수정요청드립니다.
아래 함수에서 익절청산하고자하는 값, 즉 sp1, sp2, bx의 값과
1% 수익(가령 GOld 1000에 매도 진입시 10 수익)을 비교하여 큰값으로 청산하고자 합니다.
감사합니다.
------------------------------------------------------------------------------------
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
if bdate != bdate[1] Then
entry1 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = Dayhigh-Dayopen;
OL1 = DayOpen-DayLow;
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
V1 = dayopen(0)+maho1;
V2 = DayOpen(0)-maOL1;
V3 = DayOpen(0)+maHL1;
V4 = DayOpen(0)-maHL1;
V5 = NthMaxList(1,V1,V2,V3,V4);
V6 = NthMaxList(2,V1,V2,V3,V4);
V9 = NthMaxList(3,V1,V2,V3,V4);
V10 = NthMaxList(4,V1,V2,V3,V4);
V7 = (V5+V10)/2;
V8 = (V6+V9)/2;
if MarketPosition == 0 and entry1 == 0 Then{
if V7 > V8 Then
sell("s1",AtStop,v7);
if V7 < V8 Then
sell("s2",Atlimit,v8);
}
if MarketPosition == -1 and IsEntryName("s1") == true Then{
ExitShort("sp1",atlimit,V9);
ExitShort("sl1",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s2") == true Then{
ExitShort("sp2",atlimit,V9);
ExitShort("sl2",AtStop,V6);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
2016-01-06
92
글번호 94098
답변완료
SetStopProfittarget 지정시 청산기준
먼저 운영자님 !! 새해복많이 받으세요 ^^
시스템식은 SetStopProfittarget(0.11, PointStop); 작성했습니다.
궁금한점은 그림#1처럼 매수진입을 햇는데요 체결가 99.620 입니다.
이후 1/6 01:30의 최고가가 99.730 일때 청산이 되야 정상인것 같은데요..
왜냐하면 99.730 - 99.620 = 0.11으로써 SetStopProfittarget 의 목표치에 도달했기 때문에요
그런데.. 청산이 안되었습니다..
문의 사항은 청산조건이 체결가 + 수수료 = 99.620 + 5 = 99.625 기준으로
SetStopProfittarget 의 목표치로 계산이 되는지요?
아니면 컴퓨터 성능이 안좋아서 그런건지요?
답변 부탁드립니다.. 수고하세요..
2016-01-06
126
글번호 94097
답변완료
부탁드립니다.
1. 마지막 진입신호가 b33인 경우 다음 두 가지 경우에 손절
b33이 오늘 한번진입된 상태이면서 진입바로다음봉에서 음봉이 발생한 경우
종가가 앞봉의 일간최저점보다 낮은 경우
If marketposition==1 and LatestEntryname(0)=="b33" and ((b33cnt==1 and BarsSinceEntry==1 and C<O) or C<daylow[1]) Then{
Exitlong("bx33");
}
위와 같이 시스템식을 작성해봤는데, 진입신호가 난 바로다음봉에서 음봉이 발생해도 청산신호가 발생하질 않네요.
무엇이 잘못된 것인지요.
2. b2매수조건이 되면 매수포지션이 총3개가 되게 진입하라는 것을 다음처럼 작성했습니다.
If b2매수조건 Then
Buy("b2",onclose,def,3-currentcontracts);
결과는
무포지션상태에서 진입시 3계약이 매수되었고
1개의 매수포지션상태에서의 진입시 추가로 2계약이 매수되어서 여기까진 맞는데
1개의 매도포지션상태에서 b2신호가 발생했을 때 그것을 청산하고 2계약만 진입되는 걸로 나타나고 있습니다. 저의 의도는 매도청산후 3계약의 매수포지션이 되어야 하는 것인데요. 어떻게 수정해야 하는지, 가르침을 부탁드립니다.
2016-01-06
91
글번호 94096
매버릭 님에 의해서 삭제되었습니다.
2016-01-06
3
글번호 94095
답변완료
함수요청(장악형)
안녕하세요?
함수 요청드립니다.
분봉상 전봉의 크기(머리에서 꼬리까지)가 당일봉 제외 최근 10일동안의 고점과 저점의 평균값의 50% 이상이며,
전봉의 색깔과 반대되는 현재봉으로 전봉의 몸통 크기(꼬리를 짜름)보다 현재봉의 몸통이 크게 완성되면, 익봉 시가에 진입
전봉이 음봉, 현재봉이 양봉이면 익봉 시가에 매수
전봉이 양봉, 현재봉이 음봉이면 익봉 시가에 매도
매수와 매도로만 이루어졌습니다.
2016-01-06
94
글번호 94094
답변완료
청산식 부탁드립니다.
안녕하세요
아래 청산식(익절,손절)을 분할청산식으로 변경 부탁드립니다.
=> 처음 지정한 틱수로 1계약 청산후(익절,손절) 다음 청산부터는 직전 청산가격에
+ - 틱으로 청산 (한번 청산된 자리에서는 또 청산되지않게함).
익절 = 처음 P1(20틱)에서 1 계약 청산
이후 5 틱씩 수익 발생시마다 1 계약씩 청산.
손절 = 처음 S1(20틱)에서 1 계약 청산
이후 5 틱씩 손실 발생시마다 1 계약씩 청산.
=============================================================================
##청산(익절)
if MarketPosition == 1 and highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*P1 Then
exitlong("btr",AtStop,highest(H,BarsSinceEntry)-PriceScale*1);
if MarketPosition == -1 and Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*P1 Then
exitshort("str",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*1);
##청산(손절)
if MarketPosition == 1 and c < (var1+var2)/2 and c < var1-pricescale*s1 Then
ExitLong("손절11",AtStop,EntryPrice-PriceScale*s1);
if MarketPosition == -1 and c > (var1+var2)/2 and c > var2+pricescale*s1 Then
ExitShort("손절12",AtStop,EntryPrice+PriceScale*s1);
감사합니다.
2016-01-05
115
글번호 94093
답변완료
부탁드려요
10분봉 복합차트(주간 야간 모두 포함)에서 전전일(2일전)의 주간(정규)장 고가를 표시하는 지표 부탁드립니다.
2016-01-05
117
글번호 94092