커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4755
글번호 230811
답변완료
시스템 수식 부탁드립니다.
* 일봉챠트에 적용할수 있는 수식으로 부탁드립니다.
* 특정날짜의 익일부터 매수진입 가능하도록 부탁드립니다.
* 매수조건: 가격으로 설정
매수가 1 (10000)
매수가 2 (9000)
* 매도조건: 평단가 대비
+5% 상향돌파시 홀딩 후 +10%에 도달하지 못하고 하락시 +5% 가격에 매도
+10% 상향돌파시 홀딩 후 +15%에 도달하지 못하고 하락시 +10% 가격에 매도
+15% 상향돌파시 홀딩 후 +20%에 도달하지 못하고 하락시 +15% 가격에 매도
+20% 상향돌파시 홀딩 후 +25%에 도달하지 못하고 하락시 +20% 가격에 매도
+25% 상향돌파시 홀딩 후 +30%에 도달하지 못하고 하락시 +25% 가격에 매도
+30% 상향돌파시 홀딩 후 +35%에 도달하지 못하고 하락시 +30% 가격에 매도
30%이상의 가격에서는 위와 같은 방식으로 적용이 가능할런지요??
*손절조건: 가격으로 설정
2015-09-29
113
글번호 90757
답변완료
시스템 수식 수정 부탁드립니다.
아래에 첨부하는 수식을 수정 부탁드립니다.
* 일봉챠트에 적용
* 기준봉 날짜 익일부터 매수매도 진입
* 매수 조건
1) 기준봉의 종가 가격
2) 기준봉의 시가와 종가사이 50% 가격
위 두가격중 어느 것이든 먼저 터치하는 가격이 오면 매수진입을 합니다.
* 매도조건: 평단가 대비
+5% 상향돌파시 홀딩 후 +10%에 도달하지 못하고 하락시 +5% 가격에 매도
+10% 상향돌파시 홀딩 후 +15%에 도달하지 못하고 하락시 +10% 가격에 매도
+15% 상향돌파시 홀딩 후 +20%에 도달하지 못하고 하락시 +15% 가격에 매도
+20% 상향돌파시 홀딩 후 +25%에 도달하지 못하고 하락시 +20% 가격에 매도
+25% 상향돌파시 홀딩 후 +30%에 도달하지 못하고 하락시 +25% 가격에 매도
+30% 상향돌파시 홀딩 후 +35%에 도달하지 못하고 하락시 +30% 가격에 매도
30%이상의 가격에서는 위와 같은 방식으로 적용이 가능할런지요??
* 손절 조건
기준봉의 저가 -1%
- 아 래 -
input : 날짜 (20150811);
if MarketPosition == 0 and sdate == 날짜 Then{
var1 = C;
var2 = O;
var3 = L;
Buy("매수1",atlimit,var1);
Buy("매수2",atlimit,var2+(var1-var2)*0.75);
Buy("매수3",atlimit,var2+(var1-var2)*0.50);
}
if MarketPosition == 1 Then{
ExitLong("매도",atlimit,AvgEntryPrice*1.2);
ExitLong("손절",AtStop,var3);
if MaxEntries == 1 Then
Buy("매수21",atlimit,var2+(var1-var2)*0.75);
if MaxEntries == 2 Then
Buy("매수31",atlimit,var2+(var1-var2)*0.50);
}
2015-09-29
125
글번호 90756
답변완료
미만 제외 요청
* 항상 많은 도움 과 매우 친절함에 감사드립니다.
<요청사항> 평균거래량 에서 "100주미만은 제외" 수식을 요청 드립니다.
<변수> : 봉수(10), 미만거래량(100) ;
<설명> 1분봉 그래프 에서 10개봉 평균을 구하면 (현재봉제외)
1봉전:200주
2봉전:200주
3봉전: 50주
4봉전: 50주
5봉전:200주
6봉전:200주
7봉전:200주
8봉전:200주
9봉전:200주
10봉전:200주
합계 : 1700주 거래량입니다 평균은 170주입니다.(1700/10)
하지만 중간에 "100주이하 제외" 기준을 추가 하면 평균은 200주 입니다.(1600/8)
기준:10봉 평균거래량 (단 100주 미만은 분자,분모에서 모두 제외) 보다 크면 바로매수
또한 시초 거래량 + 3개봉 과 종가 거래량 도 제외 시켜 주십시요
( 위 5개봉은 분모,분자 에서 모두 제외 하고 계산 합니다)
* 두번재 수식요청
상기 로직 에서 100주 미만은 분자,분모에서 모두 제외 하였는데
분모는 전체 거래량(변수 기준 전체거래량합(10))으로 하고
분자는 100주 미만으로 하나 더 로직 부탁 드립니다.
<기준> 10개봉 1700 / 8 = 213주 이면 바로 매수 입니다.
(분모는 시초거래량, 종가거래량 모두 포함 하면서 분자만 100주 미만 제외로 계산)
* 세번재 수식요청
상기 로직 에서(시초거래량,종가거래량 모두포함 하면서 분자만 100주 미만 제외로 계산 )
<매수기준> 10개봉 평균중 가장 큰값 보다 크면 매수
<설명> 1번평균: 1~10개전봉 평균 거래량
2번평균: 11~20개전봉 평균 거래량
3번평균: 21~30개전봉 평균 거래량
4번평균: 31~40개전봉 평균 거래량
5번평균: 41~50개전봉 평균 거래량
6번평균: 51~60개전봉 평균 거래량
7번평균: 61~70개전봉 평균 거래량
8번평균: 71~80개전봉 평균 거래량
9번평균: 81~90개전봉 평균 거래량
10번평균: 91~100개전봉 평균 거래량
에서 가장 큰 값 보다 현재봉이 크면 바로 매수
* 좋은 명절 보네십시요.
2015-09-27
140
글번호 90755
답변완료
익절 조건 식
안녕하세요. 수고하십니다.
매도 조건식을 두 가지로 해보고 싶은데, 수식 부탁 드립니다.
(i) 이전봉보다 현재봉에서 3틱 상승하면 매도
(ii) 이전봉보다 현재봉에서 20원 상승하면 매도.
감사합니다.
2015-09-27
141
글번호 90754
답변완료
수식작성 부탁드립니다.
어떠한 수식도 불가능이 없다는 것을 증명하고 심혈을 기울여 만들어 주시는 수식프로그램
담당자님께 정말 고개숙여 감사드립니다. 그리고 아래 저의 시스템전략 수식을 부탁드리고자
세가지 수식작성 내용을 작성해 올립니다. 잘 부탁드리겠습니다.
1. 위의 1번그림에서(렌코차트에서)
-. 빨강벽돌이 4일이동평균선을 이탈하여 파랑벽돌로 변환시 벽돌캔들 종가로 매도진입하고,
-. 파랑벽돌이 4일이동평균선을 돌파하여 빨강벽돌로 변환시 벽돌캔들 종가로 매도일괄청산후
즉시 종가시장가로 매수진입을 하여 계속 똑같이 반복실행 하도록 하는 자동매매수식.
2. 위의 2번그림에서(렌코차트에서)
-. 빨강벽돌이 파랑벽돌로 변환시 무조건 벽돌캔들 종가시장가로 매도진입하고,
-. 파랑벽돌이 빨강벽돌로 변환시 무조건 벽돌캔들 종가로 매도일괄청산후
즉시 종가시장가로 매수진입을 하여 계속 똑같이 반복실행 하도록 하는 자동매매수식.
3. 위의 3번그림에서
-. 렌코차트에서 4일이동평균선이 20일이동평균선을 이탈시점 캔들종가로 매도진입한후
-. 렌코차트에서 4일이동평균선이 20일이동평균선을 돌파시점 캔들종가로 매도일괄청산후
즉시 종가시장가로 매수진입을 하여 계속 똑같이 반복실행 하도록 하는 자동매매수식.
2015-09-26
184
글번호 90753
답변완료
수식 2 요청 드립니다.
수식 2가지 요청 드립니다.
1. 수익 보전 이평 추적 청산 수식
오버형 기존 시스템에서 매수 신호 발생 후
->시초가 기준 3일 이상 경과(신호 발생일 제외, 외부변수) + 1.5PT(외부변수) 이상 수익 발생 (당일 직전봉 종가 기준)
2가지 조건 충족한 후, 5이평이 10이평을 하향돌파 조건 발생 즉시 수익보전 청산수식
오버형 기존 시스템에서 매도 신호 발생 후
->시초가 기준 3일 이상 경과(신호 발생일 제외, 외부변수) + 1.5PT(외부변수) 이상 수익 발생 (당일 직전봉 종가 기준)
2가지 조건 충족한 후, 5이평이 10이평을 상향돌파 조건 발생 즉시 수익보전 청산수식
-----------------------------------------------------------------------------------------------------------
2. 아래 오버형 기존 수식에서, 설정 변폭내 진입과 청산을 제한하는 수식의 고정설정 변폭을
-> 1개월 전( 매일 전 22 거래일 만 합산 )부터 전일 종가까지 매일 누적 합산한 변폭의 평균변폭 값으로
시초가(09:00)에 매일 변동 적용되는 수식으로 변경 요청 드립니다.
감사합니다.
2.
input : Pt(4);
if 매수조건 Then{
#첫매수
if MarketPosition == 0 Then
buy();
#추가매수
if MarketPosition != 0 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then
buy();
}
if 매도조건 Then{
#첫매도
if MarketPosition == 0 Then
sell();
#추가매도
if MarketPosition != 0 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then
buy();
}
#매수진입후 pt이상 변폭이 발생하고 매수청산조건이 만족하면 청산
if MarketPosition == 1 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then{
if 매수청산조건 Then
exitlong();
}
#매도진입후 pt이상 변폭이 발생하고 매도청산조건이 만족하면 청산
if MarketPosition == -1 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then{
if 매도청산조건 Then
ExitShort();
}
#무포지션이거나 스위칭이 되면 강제청산 해제
if MarketPosition != 0 or (MarketPosition != 0 and MarketPosition != MarketPosition[1]) Then{
SetStopProfittarget(0);
SetStoploss(0);
}
#포지션 진입후 pt이상 변폭이 발생하면 셋팅
if MarketPosition == 0 and highest(H,BarsSinceEntry)-lowest(L,BarsSinceEntry) >= pt Then{
SetStopProfittarget(1,PointStop);
SetStoploss(1,PointStop);
}
2015-09-29
131
글번호 90752
답변완료
수식 1 요청 드립니다.
수식수정 요청 드립니다.
아래 데이용 시스템의 "당일진입횟수" "당일손실제한" 당일청산용 수식을
기존 오버형 시스템의 "당일진입횟수" "당일손실제한" 적용되는 수식으로 변경 요청 드립니다.
1.전일종가 기준 수식요청
//전일종가 기준 수익일경우 -> 처음 수익을 제외한 당일손실제한 강제청산 => 수익은 제외
//전일종가 기준 손실일경우 -> 처음 손실을 포함한 당일손실제한 강제청산 => 손실은 합산
2.당일시가 기준 수식요청
//당일시가 기준 수익일경우 -> 처음 수익을 제외한 당일손실제한 강제청산 => 수익은 제외
//당일시가 기준 손실일경우 -> 처음 손실을 포함한 당일손실제한 강제청산 => 손실은 합산
감사합니다.
#당일진입횟수 당일손실제한
input :N(2),당일손실(-1.5);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
ExitLong("당일손실제한bx3",AtStop,EntryPrice+당일손실-(dayPL-v1));
}
if MarketPosition == -1 Then{
ExitShort("당일손실제한sx3",AtStop,EntryPrice-당일손실+(dayPL-v1));
}
//--------------------------------------------------------------------------------------
#손실손절1
if MarketPosition == -1 and crossup(H,EntryPrice+0.3) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.3) and BCount+SCount < N and dayPL > 당일손실 Then
sell("1SX");
//--------------------------------------------------------------------------------------
2015-09-26
130
글번호 90751
답변완료
부탁드립니다.
지표의 고점과 고점을
저점과 저점을 연결 하는 선 부탁드립니다.(해선 유로화)
미리 감사 드립니다.
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (0.5/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (0.5/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
2015-09-29
183
글번호 90750
답변완료
부탁드림니다
1,시스템식 점검요,파일의 스마일부분에서 청산이 안됨니다.
2,2식의 피보 기준을 21시부터 익일 05시까지 지정하여 그리게 할수 없나요?
3,매수나 매도 진입후 조건이 맞으면 3회까지 추가하고 청산시는 전량청산으로 .
4. 아래 3수식의 이평선을 shift 를 써서 5칸 뒤로 이동하려는데 잘 안됨니다 수정부탁드림니다.
5; 세부별(글자)찿아보기 란이 잇으면 수고를 덜 끼칠텐데..(제목별 검색만 됨니다)
1식:
input : N(10);
Var : Pivot(0),R1(0),R2(0),S1(0),S2(0);
Pivot = (DayHigh(1)+DayLow(1)+DayClose(1)+dayopen)/4;
R1 = 2*Pivot-DayLow(1);
R2 = Pivot+DayHigh(1)-DayLow(1);
S1 = 2*Pivot-DayHigh(1);
S2 = Pivot-DayHigh(1)+DayLow(1);
IF crossdown(c,r2) then {
sell("매도",Atmarket);}
IF crossdown(c,Pivot) then {
exitlong("매도청산",atmarket);}
/*Plot1(Pivot, "피봇포인트");
Plot2(R1, "1차저항");
Plot3(R2, "2차저항");
Plot4(S1, "1차지지");
Plot5(S2, "2차지지");
plot6(Pivot+N*PriceScale,"Pivot+N");
*/
IF crossup(c,s2) then {
buy("매수",Atmarket);}
IF crossup(c,pivot) then {
exitlong("매수청산",atmarket);}
2식:
input : N(10);
Var : Pivot(0),R1(0),R2(0),S1(0),S2(0);
Pivot = (DayHigh(1)+DayLow(1)+DayClose(1)+dayopen)/4;
R1 = 2*Pivot-DayLow(1);
R2 = Pivot+DayHigh(1)-DayLow(1);
S1 = 2*Pivot-DayHigh(1);
S2 = Pivot-DayHigh(1)+DayLow(1);
Plot1(Pivot, "피봇포인트");
Plot2(R1, "1차저항");
Plot3(R2, "2차저항");
Plot4(S1, "1차지지");
Plot5(S2, "2차지지");
plot6(Pivot+N*PriceScale,"Pivot+N");
3식;
input : p1(20),sift(5);
var : aa(0),shift(0);
aa = wma(2*wmA(c,p1/2)-wma(c,p1),sqrt(P1));
if aa >= aa[1] Then
var1 = aa;
if shift aa>=aa[1] then var3 = aa;
if aa <= aa[1] Then
var2 = aa;
plot1(var1);
plot2(var2);
plot3(var3);
2015-09-30
205
글번호 90749