커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6420
글번호 230811
답변완료
문의 하나 더 드립니다~
/*
In "Whet's The Difference?" in this issue 2005, John Ehlers
*/
Input: L39(39), TS(0.002);
VAR: MP(0), SMOOTH(0), ALPHA(0),AvgLen(39),FILT(0),LEN(0);
MP=(H+L)/2;
Smooth=(MP+2*MP[1]+2*MP[2]+MP[3])/6;
IF L39>3 THEN LEN=L39-2;
alpha=2/(Len+1);
Value1=Median(Smooth,Len);
Value2=AMA(Smooth,alpha);
Value3=abs(Value1-value2)/value1;
AvgLen=IFF(value3>TS,Len,AvgLen);
Alpha=2/(AvgLen+1);
Filt=AMA(Smooth,alpha);
Plot1(Filt, "M Filt");
Plot2(C, "가격");
위 수식을 이용한 신호발생
기준은 M Filt 선을 뚫는 봉을 기준으로 신호발생조건
위 동그라미친 부분이 매수,매도 신호 발생 지역~
2016-06-16
243
글번호 99186
답변완료
재문의드립니다~
Input:length(10);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),tx(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때;
// 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때;
// 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
// 전환점구분 null값으로 초기화;
turnPntBit = "";
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환점구분 = 저점;
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 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 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 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
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 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 0값 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then{
if turnPntArr[1][0] == "Hi" then
tx = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],"고점");
else
tx = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],"저점");
Text_SetStyle(tx,2,2);
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,4);
TL_SetColor(TL1,GREEN);
Plot1(Highest(H,length));
Plot2(Lowest(L,length));
밑에 글에 고점,저점 표시 입니다
1. 고점 저점에 매수,매도 신호를 도입하고싶습니다
고점=매도 저점=매수 (청산신호는 패스 그냥 매수,매도 신호만 나오게) 화살표는 하나만
2. 예시: 120틱을 2가지 차트를 켜놓고 하나의 차트에는 Input:length(5);
또 다른 하나의 차트에는 Input:length(10); 그리고난후
두가지가 같이 1번처럼 고점=매도 저점=매수 가 일치할경우 신호발생
2차트가 동시에 고점 이 나올경우 매도로 신호발생
2차트가 동시에 저점 이 나올경우 매수로 신호발생
3.번 위 2번에서 다른 밑에 청산 수식하나 더 부탁드립니다~
청산은 고점이 나와서 매도 신호가 나왔는데 매도 신호가 나온 봉을 기준으로 고점을
뚫으경우
청산은 저점이 나와서 매수 신호가 나왔는데 그 매수신호 나온 봉의 기준으로 고점을
뚫을경우
2016-06-16
164
글번호 99185
답변완료
보내주신 수식 살짝수정하고십습니다.
보내주신 수식 잘 사용하고 있습니다.
살짝 수정해보려고 하는데요
다음 신호 이후
상승일 경우에는 스토K선이 바로 이전 고점보다 크거나 같을때 상승신호가 찍히도록(아래수식의 상승신호는 없앱니다.)
하락일 경우에는 스토K선이 바로 이전 저점보다 작거나 같을때 하락신호가 찍히도록(아래수식의 하락신호는 없앱니다.)
Input : Period(5), Period1(3), Period2(3);
var : StoK(0),StoD(0),T(0);
var : Hi1(0),Hi2(0),HH1(0),HH2(0);
var : Li1(0),Li2(0),LL1(0),LL2(0);
StoK = StochasticsK(Period,Period1);
StoD = StochasticsD(Period,Period1,Period2);
if crossup(stok,stod) Then{
T = 1;
Hi1 = stok;
Hi2 = Hi1[1];
HH1 = H;
HH2 = HH1[1];
if Li1 < Li2 and LL1 < LL2 and LL2 > 0 Then and
Hi1 < Hi2 and HH1 < HH2 and HH2 > 0 Then
buy();
}
if T == 1 Then{
if stok > Hi1 Then
Hi1 = stok;
if H > HH1 Then
HH1 = H;
}
if CrossDown(stok,stod) Then{
T = -1;
Li1 = stok;
Li2 = Li1[1];
LL1 = L;
LL2 = LL1[1];
if Li1 > Li2 and LL1 > LL2 and LL2 > 0 Then and
Hi1 > Hi2 and HH1 > HH2 and HH2 > 0 Then
sell();
}
if T == -1 Then{
if stok < Li1 Then
Li1 = stok;
if L < LL1 Then
LL1 = L;
}
2016-06-16
121
글번호 99184
답변완료
부탁드립니다.
도움 주심에 한량없는 감사를 드립니다.
1)이번주 시작가선
지난주 종가선
고저선간의 61.8%,38.2%선
2)이번달 시작가선
지난달 종가선
고저선간의 61.8%,38.2%선
부탁 드립니다.
참고수식1)
var : WH(0),WL(0),WH1(0),WL1(0);
#주변경
if dayofweek(date) < dayofweek(date[1]) Then{
WH = H;
WL = L;
WH1 = WH[1];
WL1 = WL[1];
}
if H > WH Then
WH = h;
if L < WL Then
WL = L;
plot5(WH,"이번주최고가");
plot6(WL,"이번주최저가");
plot7(WH1,"전주최고가");
plot8(WL1,"전주최저가");
참고수식2)
var : MH(0),ML(0),MH1(0),ML1(0);
#월변경
if date > date[1]+30 Then{
MH = H;
ML = L;
MH1 = MH[1];
ML1 = ML[1];
}
if H > MH Then
MH = h;
if L < ML Then
ML = L;
plot1(MH,"당월최고가");
plot2(ML,"당월최저가");
plot3(MH1,"전월최고가");
plot4(ML1,"전월최저가");
2016-06-17
115
글번호 99183
답변완료
두 종목 주문
안녕하세요,
Pair Trading을 하려고 하는데
두 종목을 어떻게 해야 주문을 낼 수 있나요?
하나의 차트에서 가능한가요?
예시를 주시면 감사하겠습니다.
2016-06-16
125
글번호 99181
답변완료
시스템식 부탁합니다.
안녕하세요.
48215 재질문은 DEMA 지표식을 제가 잘못 만들어서 드린질문 죄송하게생각합니다.
아래식은 DEMA 지표식을 이용한 시스템식입니다.
기존식을 조금 보완해주십시요.
20틱 익절이나 손절시 그다음봉에서 정배열이면 매수신호 역배열이면 매도신호가
나오게 해주시고요.
장시작시간 07시00분 장마감시간 다음날 05시50분 그리고 05시50분이전에 진입된 포지션은
장시작하기전까지 청산이 되게끔 해주십시요.
감사합니다.
INPUTS: LENGTH1(5),LENGTH2(20),LENGTH3(60),LENGTH4(100),수익틱수(20),손실틱수(20);
VARS : DEMA1(0),DEMA2(0),DEMA3(0),DEMA4(0);
var1= EMA(C,LENGTH1);
value1= EMA(EMa(C,LENGTH1),LENGTH1);
var2= EMA(C,LENGTH2);
value2= EMA(EMa(C,LENGTH2),LENGTH2);
var3= EMA(C,LENGTH3);
value3= EMA(EMa(C,LENGTH3),LENGTH3);
var4= EMA(C,LENGTH4);
value4= EMA(EMa(C,LENGTH4),LENGTH4);
DEMA1 = var1 * 2 - value1;
DEMA2 = var2 * 2 - value2;
DEMA3 = var3 * 2 - value3;
DEMA4 = var4 * 2 - value4;
Condition1 = DEMA1 > DEMA2 and DEMA2 > DEMA3 and DEMA3 > DEMA4;
Condition2 = DEMA1 < DEMA2 and DEMA2 < DEMA3 and DEMA3 < DEMA4;
if stime >= 070000 or stime < 055000 Then{
if Condition1 == true and Condition1[1] == false Then
buy();
if Condition2 == true and Condition2[1] == false Then
sell();
}
SetStopProfittarget(PriceScale*수익틱수,PointStop);
SetStoploss(PriceScale*손실틱수,PointStop);
2016-06-17
112
글번호 99180
답변완료
시스템 부탁 드립니다!!!
#옵션 시스템;수평선 신호 16개(각각 매수 16개,매도16개)
#조건;수평선 매수 가격 16개,매수청산(매도) 가격 16개
--->매수만 거래하고 매도는 청산만 합니다.(3분 종가 기준)
--->매수 가격대 상향시 매수.매도 가격대 하락시 모든 잔량 청산만 합니다.
#(예1) 매수 가격대 Line1(3.50) 상향시 매수,Line1(3.20) 하락시 청산만,
다음 Line2부터 Line16까지 Line1과 마찬가지 입니다.
#(예2) Line1이 Line3 통과하면 매수 계속 유지함.
#거래시간;09;00~14;50까지 입니다.
#부탁드립니다
2016-06-16
118
글번호 99179
답변완료
지표식부탁합니다.
수고하십니다.
DEMA (5) 이평
(20) 이평
(40) 이평
(60) 이평
(100) 이평
(120) 이평
지표식부탁드립니다.
수고히세요.
2016-06-16
120
글번호 99174
답변완료
수식 재 문의 드립니다.
안녕하세요
주신 수식 잘 받았습니다.
시뮬레이션과 전략실행 챠트에서 해 보았는데,
제가 말씀드린게 않된 것이 있는 것 같습니다.
하기 말씀드린대로, 일단 매매 진입을 하면 목표 수익을 얻고 이익 청산하거나.
손실을 입고 강제 청산 두가지가 발생되어야 하는데
상기 수식은 봉이 바뀔 때마다 따라 자동 매매가 됩니다.
이외에 매매 시작봉에서 봉이 끝날 때,
신호가 바뀌었으면 한 봉 쉬고 두번째 봉에서 다시 진입하고,
손절이 났으면 한 봉 쉬고 두 번째 봉에서 다시 진입하는 것입니다.
봉이 끝날고 바뀔마다 청산하고 재진입하면 않되는데...
시스템은 그렇게 표현되고 있습니다.
확인 부탁드립니다.
하기 부분도 표현이 없는 것 같습니다. 검토 부탁드립니다.
만약, 한 봉내에서 31(조절가능)틱이 넘게 손절이 나면,
바로 포지션 체인지를 부탁드립니다.
이 포지션 체인지는 상기의 강제 청산 사항이 해당되지 않게 부탁드립니다.
다음 봉에서도 매매 유지 부탁드립니다.
오직 손절매를 당할 때만 한봉 쉬고 다음봉 진입으로 부탁드립니다
만약 한 봉내에 20틱이상의 익절이나면,
해당 봉 종료시에 청산 부탁드립니다.
첨부 파일은 제가 생각하는 프로그램 진행 방법을 부분적으로 표현해 봤습니다.
참조 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 문의
> 안녕하세요
예스스탁입니다.
input : P1(5),P2(20),목표수익틱수(20),손절매틱수(30);
var1 = ma(C,5);
var2 = ma(C,20);
if crossup(var1,var2) Then
buy("b");
if CrossDown(var1,var2) Then
sell("s");
if MarketPosition == 0 and IsExitName("stopProfitTarget",1) == true then{
if var1 > var2 Then
buy("b1",AtMarket);
if var1 < var2 Then
sell("s1",AtMarket);
}
if MarketPosition == 0 and IsExitName("StopLoss",1) == true then{
if BarsSinceExit(1) == 1 and var1 > var2 Then
buy("b2",AtMarket);
if BarsSinceExit(1) == 1 and var1 < var2 Then
sell("s2",AtMarket);
}
SetStopProfittarget(PriceScale*목표수익틱수,PointStop);
SetStopLoss(PriceScale*손절매틱수,PointStop);
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식 문의
> 안녕하세요
저는 해외선물 매매 중입니다.
바쁘시지만 하기 수식 부탁드립니다.
이동평균선 매매 :
(long & short period의 숫자는 제가 시뮬레이션으로 사용한 후,
최종 전략실행챠트 사용시 선택가능하게 부탁드립니다.)
기본적으로 매수인 상황에서는 매수로 진입,
매도인 상황에서는 매도로 진입하는 수식 부탁드립니다.
추가 조건은 하기와 같습니다.
1. 연달아서 지속적인 매매가 가능하도록 부탁드립니다.
2. 현재의 매매가 이익이나서 청산되면 (20 틱을 목표 수익 - 조정가능)
다음 봉에 시작과 동시에 재진입하는 것입니다.
같은 매수 또는 매도 포지션을 취하더라도 재진입 하는 것입니다.
결론적으로, 이동평균선의 지시만 따르게 끔 부탁드립니다.
3. 일단 매매가 시작 되면, 시간이 지나 봉이 바뀌어도(음봉/양봉 상관없이 모두 해당)
목표수익을 달성할 때까지 청산 없이 갖고 가도록 하겠습니다.
강제 손절매를 기능을 사용하여 강제 손절매를 하기 전까지는,
진입 상황 유지 부탁드립니다.
- 단, 새로 진입한 봉에서 신호가 바뀌면 바로, 실시간 강제 청산하고 나옵니다.
하기 강제 청산 조건처럼, 다음 한 봉 쉬고 두번째 봉에 다시 진입 부탁드립니다.
4. 손절매를 한번 당하면 다음 봉 진입은 쉬고,
두번째 봉으로 재진입하는 조건 부탁드립니다.
손절매를 30틱(조절가능)으로하고,
만약, 한 봉내에서 31(조절가능)틱이 넘게 손절이 나면,
바로 포지션 체인지를 부탁드립니다.
이 포지션 체인지는 상기의 강제 청산 사항이 해당되지 않게 부탁드립니다.
다음 봉에서도 매매 유지 부탁드립니다.
오직 손절매를 당할 때만 한봉 쉬고 다음봉 진입으로 부탁드립니다
만약 한 봉내에 20틱이상의 익절이나면,
해당 봉 종료시에 청산 부탁드립니다.
귀찮게 해드려서 죄송합니다.
시스템 매매는 하고 싶은데, 컴퓨터를 할 줄 몰라서 양해 부탁드립니다.
감사합니다.
2016-06-16
138
글번호 99161