커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4801
글번호 230811
답변완료
매수 매도 표시
안녕하십니까. 아래 질문입니다.
1.
차트를 분할해서 시스템을 여러개 띄어놓을 경우에 한눈에 상태를 파악하고 싶은데요
"시스템 모니터" 말고
분할된 각차트에서 표시할수는 없을 까요?
예를 들어 "매수"인경우 차트의 색깔 혹은 최근 봉을 강조한다던지 선을 그어서 표시한다던지 등 어떤방식이라고 관계없습니다만 신호가 난 차트를 눈에띄기 쉽게 하고싶은데요..
2. 최근봉들의 가격차이가 크게나서(아모레퍼시픽의 일봉경우) Y축스케일이 상하한이 너무커져버렸습니다. 그래서 기본차트 속성에 들어가서 --> 사용자 정의로 최근값기준으로 스케일을 설정해서 보고있는데요. 이게 "기본으로 설정"을 눌러도 다음날 다시 열면 원래대로 돌아가 버리는데요. 어떻게 고정시킬수 는 없을까요..
감사합니다
2015-07-16
127
글번호 88504
답변완료
시스템 수식 문의
수고가 많습니다
간단한 수식 점 부탁드립니다
a=ema(tema (종가,기간),기간)
을 이전값보다 크면 빨강. 적으면 파랑으로 나오게 지표와
빨강이면 매수 파랑이면 매수 신호뜨게 수식 작성 부탁드립니다
2015-07-16
103
글번호 88503
답변완료
부탁드립니다
아래수식에서 고점,저점 추세선을 우측으로(y축까지) 연장선이 긋어지도록 부탁드립니다
==============================================================================
고점추세선 = 0;
for j = 2 to 49 begin
if 고[j] > 고[1] and 고점추세선 == 0 then
{
고점추세선=((고[1]-고[j])/(고bar[j]-고bar[1]))*고bar[j]+고[j];
}
end;
저점추세선 = 0;
for j = 2 to 49 begin
if 저[j] < 저[1] and 저점추세선 == 0 then
{
저점추세선=((저[1]-저[j])/(저bar[j]-저bar[1]))*저bar[j]+저[j];
}
end;
2015-07-16
121
글번호 88502
답변완료
43072 재문의
매수 파라볼릭 sar 위에 가격이 위치하고
라이너 레귤레이션 라인(lrl)(55) 위에 가격이 위치하고
Dmi(5) di plus 가 di minus 를 교차 돌파하고
Cci(18) 기준선 100을 돌파할때
청산및 손절 cci(5) 기준선 50밑으로 하락할때
매도 파라볼릭 sar 아래에 가격이위치하고
라이너(lrl)55 아래에 가격이 위치하고
Dmi(5) dl minus 가 dl plus 를 교차 하락하고
Cci(18) 기준선 -100을 돌파할때
청산및 손절 cci(5) 기준선 -50 위로 돌파할때
Input : af(0.02), maxAF(0.2),Period(55),DPeriod(5),CCIPeriod(18);
Var : para(0),LRLv(0),DP(0),DM(0),CCIv(0);
para = sar(af,maxAF);
LRLv = LRL(c,Period);
DP = Diplus(DPeriod);
DM = DiMinus(DPeriod);
CCIv = CCI(CCIPeriod);
if C > para and C > LRLv and DP > DM and crossup(CCIv,100) Then
buy();
if MarketPosition == 1 and CrossDown(CCIv,50) Then
exitlong();
if C < para and C < LRLv and DP < DM and CrossDown(CCIv,-100) Then
buy();
if MarketPosition == -1 and CrossUp(CCIv,-50) Then
ExitShort();
이렇게 해주셨는데요
청산및 손절은 cci(5) 로해서 조건이 들어가야 하는데
이부분이 다른 cci(18) 이값으로 된거 같습니다
청산및 손절은 cci(5)로 설정 해서 다시 부탁드립니다
2015-07-16
127
글번호 88496
oldboy 님에 의해서 삭제되었습니다.
2015-07-16
0
글번호 88494
oldboy 님에 의해서 삭제되었습니다.
2015-07-16
16
글번호 88493
답변완료
부탁드립니다.
현제 수식에서 매수가나 매도가 표시가 맨 마지막표시만 남도록 부탁드립니다.
모든 진입가 표시가 남아있으니 차트보기가 조금 힘들어서요 부탁드립니다.
감사합니다.
var : T(0);
var1 = ma(c,5);
var2 = ma(C,400);
if var2[1]>var2[0] and
OPEN[0]>var1 and
OPEN[0]>CLOSE[0] Then
T = -1;
if var2[1]<var2[0] and
OPEN[0]<var1 and
OPEN[0]<CLOSE[0] Then
T = 1;
if MarketPosition == 0 and T == -1 and countif(T == T[1],3) == 3 Then{
sell();
Text_New(sdate,stime,H+PriceScale*2,"매도 : "+NumToStr(c,2));
}
if MarketPosition == 0 and T == 1 and countif(T == T[1],3) == 3 Then{
buy();
Text_New(sdate,stime,H+PriceScale*2,"매수 : "+NumToStr(c,2));
}
SetStopProfittarget(PriceScale*2,PointStop);
SetStopLoss(PriceScale*100,PointStop);
2015-07-16
104
글번호 88487
답변완료
문의드립니다.
전략차트 2개에 같은 수식으로 하나는 매수-매수청산 다른것은 매도-매도청산 진입시 우선1호가 청산 시장가로 사용할때 같은자리에서 매수청산과 매도가 같이 나오는데요. 계좌에 한계약 금액을 가지고 매매할때 주문지연설정 하지않고 진입 우선1호가 청산 시장가 시에 진입 청산 우선순위가 있는지요? 포지션 보유중일때 0.000 몇초 차이로 진입주문이 먼저되면 증거금 부족이 나올까봐 문의 드립니다.
2015-07-16
96
글번호 88486
답변완료
문의드립니다.
안녕하세요.
다음식을 해외선물(crude oil)용으로 전환 부탁드립니다.
추가로 역매매전략 전환포함
그리고 매매횟수를 (기존수식과 역매매구분)외부변수로처리로부탁드립니다
아래와 같이 지표작성하여 식을 적용하여보니 신호위치오류가발생합니다
현식에서 어떤부분이 매매횟수를 제어하나요?
감사합니다
===================================================
input : len(3.2), n(20),method(2);
var: cnt(0);
Array : OO[10](0),HH[10](0),LL[10](0),CC[10](0);
if Bdate != Bdate[1] Then{
OO[0] = O;
HH[0] = H;
LL[0] = L;
CC[0] = C;
for cnt = 1 to 9{
OO[cnt] = OO[cnt-1][1];
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;
if C < CC[0] then
CC[0] = C;
if method == 1 then {
var1 = (HH[1]+LL[1]+CC[1])/3; //피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
Else {
var1 = (HH[1]+LL[1]+CC[1]+OO[1])/4; //당일시가추가피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
##1번
if var4 > OO[0] and OO[0] > var5 then { //시초가가 1차지지와 2차지지 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> entrydate(1) Then { //당일 진입한 적이 없으면
buy("매수1", atstop, var4); //1차 지지선 상향도달시 매수
sell("매도1",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##2번
if var1 > OO[0] and OO[0] >= var4 then { //시초가가 피봇보다 작고 1차지지보다 클 경우
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수2", atstop, var1); //피봇선 상향 도달시 매수
sell("매도2",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##3번
if var2 > OO[0] and OO[0] >= var1 then { //시초가가 1차저항과 피봇 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수3", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도3",atstop, var1); //피봇선 하향도달시 매도
}
}
##4번
if var3 > OO[0] and OO[0] >= var2 then { //시초가가 2차저항과 1차저항 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수4", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도4",atstop, var2); //1차 저항선 하향도달시 매도
}
}
##5번
if OO[0] >= var3 then { //시초가가 2차 저항선 위에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수5", atstop, OO[0]+(var3-var2)); //시초가+(2차저항-1차저항)의 폭을 상향도달시 매수
sell("매도5",atstop, var3); //2차 저항선 하향도달시 매도
}
}
##6번
if OO[0] <= var5 then {//시초가가 2차 지지선 아래에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수6", atstop, var5); //2차 지지선 상향 도달시 매수
sell("매도6",atstop, OO[0]-(var5-var4)); //시초가-(1차지지-2차지지)의 폭을 하향도달시 매도
}
}
if MarketPosition <> 0 then { //ATR Trailing stop
exitlong("매수청산", atstop, highest(H,BarsSinceEntry+1)-atr(n)*len);
exitshort("매도청산", atstop, lowest(L,BarsSinceEntry+1)+atr(n)*len);
}
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
아래역매매수식추가하여주세요
if date<>date[1] Then
var50 = CurrentEntryNum;
if MarketPosition == 0 Then
CurrentEntryNum = TotalTrades;
Else
CurrentEntryNum = TotalTrades+1;
If currententrynum-var50 == 1 Then { //당일 매매가 한번 이루어진 경우
If isentryname("매수2") Or isentryname("매수3") Then { //진입명칭이 매수2, 매수3인 경우
If dayHigh>var12 And low>var11 Then //장중최고가가 2차저항보다 크고, 저가가 1차저항보다 크면
sell("역매도", Atstop, Var11); //1차저항선을 하향도달시 매도
}
If isentryname("매도2") Or isentryname("매도3") Then { //진입명칭이 매도2, 매도3인 경우
If dayLow<var8 And high<var9 Then
buy("역매수", Atstop, Var9);
}
}
2015-07-16
110
글번호 88485