커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4417
글번호 230811
답변완료
지표식 부탁드립니다.
현재 캔들만 특정색으로 지정할 수 있는 수식 부탁드립니다.
현재 캔들만입니다.
2017-03-21
108
글번호 108040
답변완료
수식문의
안녕하세요
하기 수식 문의 부탁드립니다.
조건
1. ADX 가 20 이하이어야 합니다..
2. 현재봉 포함 ADX 가 3봉 연속으로 0.5이상 증가되지 않아야 합니다.
상기 조건으로 봉이 볼린져밴드 하단을 닿고 떨어지는 순간 매수 진입.
봉이 볼린져 밴드 상단에 닿고 떨어지는 순간 매도 진입 부탁드립니다.
감사합니다.
2017-03-21
105
글번호 108037
답변완료
다음 수정 부탁드립니다.
안녕하세요.
다음 식에서
20 이하에서는 매도진입 금지.
80 이상에서는 매수진입 금지를 추가 부탁드립니다.
감사합니다.
input : short(12),long(26),sto1(14),sto2(3),sto3(3);
var : HH(0),LL(0),FK(0),SK(0),SD(0),T(0);
var1 = MACD(short,long);
HH = Highest(var1, sto1);
LL = Lowest(var1, sto2);
FK = (var1 - LL) / (HH-LL) * 100;
SK = ema(FK,sto1);
SD = ema(SK,sto2);
if c > dayopen then{
if SK > SK[1] and SK[1] < Sk[2] Then
buy("b");
if SK < SK[1] and SK[1] > Sk[2] Then
ExitLong("bx");
}
if c < dayopen then{
if SK < SK[1] and SK[1] > Sk[2] Then
sell("s");
if SK > SK[1] and SK[1] < Sk[2] Then
ExitShort("sx");
}
2017-03-21
104
글번호 108036
답변완료
질문입니다.
선물에서 시스템을 작성해서 운영하고자 합니다.
피라미딩에 관련한 질문입니다.
일단 1계약으로 매수, 매도하는 시스템을 작성하였습니다.
신호는 AtMarket으로 작성하였습니다.
피라미딩은 매수(매도)로 진입하였을 때 진입가격대비 5틱 상승(하락)했을 때
추가로 1계약을 진입하도록 하였습니다.
신호는 AtStop으로 작성하였습니다.
예를들면 이렇습니다.
if marketposition(0) <= 0 and crossup(c, ma(5)) then
{ buy('b", atmarket, def, 1);}
if marketposition(0) >= 0 and crossdown(c, ma(10)) then
{ sell("s", atmarket, def, 1); }
If MarketPosition(0) == 1 && CurrentContracts == 1 Then
{ Buy("+2", AtStop, LatestEntryPrice + (0.05 * 5)); }
If MarketPosition(0) == -1 && CurrentContracts == 1 Then
{ Sell("-2", AtStop, LatestEntryPrice - (0.05 * 5));}
그런데 한가지 문제점이 생겼는데,
예를들어 매도로 진입한 후에 매도로 진입한 봉에서 가격이 상승하더니
매수 피라미딩신호가 발생하여 매수로 포지션이 바뀌어 버리는 현상이 발생합니다.
아마도 제 생각으로는 AtStop으로 피라미딩을 진입하게 만들어서 이런 현상이 발생한 듯 합니다.
원래 제 의도는 초기진입이 매수("b")라면 그 후에는 매도("s") 혹은 매수피라미딩("+2") 신호만 발생시키고 싶고, 초기진입이 매도("s")라면 그 후에는 매수("b") 혹은 매도피라미딩("-2") 신호만 발생시키고 싶습니다.
즉, 매수 진입 후 매도피라미딩 진입이나, 매도 진입 후 매수피라미딩 신호는 나오지 않게 하고 싶습니다.
왜 이런 현상이 발생하는지 그 이유와
이를 방지할 수 있는 방법을 간단한 예시로 부탁드리겠습니다.
감사합니다.
2017-03-21
96
글번호 108025
답변완료
수식 부탁
MarketPosition == 1 일 때 매수조건식으로 10주식 계속 추가 매수 누적하다가 OpenPositionProfit()이 즉 수익률이 5%를 초과하면 일괄 또는 1/3 씩 분할 청산하는 식 부탁합니다.
2017-03-21
103
글번호 108024
답변완료
수식 부탁드립니다.
일일히 수고하심에 감사드립니다.
아래 조건은 키움의 수식입니다.
아래의 조건을 1번이라도 만족하는 종목을 검색하는 식으로서
각 조건을 만족하는 회수를 누적시켜고
누적회수별로 표시가 되도록 부탁합니다.
가능한 변수는 외부 변수로 부탁드립니다.
Crossup(WilliamsR(Period),-80 )
- Period : 28
CrossUp(MACD(shortPeriod,longPeriod),eavg(MACD(shortPeriod,longPeriod),sigPeriod))
-shortPeriod : 12
- longPeriod :26
- sigPeriod : 9
Crossup(DIPlus(Period), DIMinus(Period) )
- Period : 14
Crossup(CCI(Period), -100)
2017-03-21
123
글번호 108023
답변완료
3월17일자 수정건
안녕하세요 3월17일자 질문 수정부탁드립니다
시작가 기준=해외 크루드오일 입니다
수정건
시작시간-한국시간으로 조정 07시기준
기준선= 당일 일봉 시가 기준
기준선 발생후 기준선 상향후 +볼린저밴드 중심선상향돌파시=매수
기준선 하향후+볼린저밴드 중심선하향돌파시=매도
청산조건 매수 매도후 0.9%익절청산=청산후 재진입 없음
손절=반대신호
부탁드려요
2017-03-21
137
글번호 108022
답변완료
수식추가부탁드림니다=================
장시작시나 시간보정때 var1과 var2가 100에서시작하듯이 마찬가지로 plot64가나오면 var1과 var2모두 100에서시작하게해주세요 항상감사합니다(제가 if stime == 시간보정*100 or (stime > 시간보정*100 and stime[1] < 시간보정*100) or Bdate != Bdate[1] Then 에 추가해봤는데 안되네요)
Input: 시간보정(0),보정후변화(0),호가더하기(0),지수더하기(0),보정치(0),폭보정(1.5),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05)
,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5)
,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ;
var : AsksMA(0),BidsMA(0), Period(1),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0);
Var : value(0);
Var : valuec(0);
var : va61(0);
var : va71(0);
var : va80(0);
var : va81(0);
var : va90(0);
var : va91(0);
var : va92(0);
var : va93(0);
var : va94(0);
var : va95(0);
var : va96(0);
VAR : TEMA1(0);
VAR : TEMA2(0);
VAR : TEMA3(0);
VAR : vmin(0);
VAR : vmax(0);
BidsMa = ma(bids,Period);
AsksMA = ma(asks,Period);
value = ma(bids,period)-ma(asks,period)+29000;
Plot2(BidsMA, "매수잔량이평");
Plot3(AsksMA, "매도잔량이평");
Plot4(value, "차");
//**************************************************************
//*************************************************************
va91=((c-c[1])/c[1]*100)*20000/20000;
va93=((value-value[1])/value[1]*70)*125/2900;
if stime == 시간보정*100 or (stime > 시간보정*100 and stime[1] < 시간보정*100) or Bdate != Bdate[1] Then{
PLOT62(100,"시간보정");
idx = 0;
var1 = 100;
var2 = var1;
plot10(var1);
plot11(var2);
plot51(var2 +호가더하기/1000 );
}
Else{
idx = idx+1;
var1 = var1+(var1*(va91/100));
if abs(va96[10]-va96) <= 보정치 Then
var2 = var1;
// if var2[5] > var1[5] then var2 = var2 - ( var2[5] - var1[5] );
// if var2[5] < var1[5] then var2 = var2 + ( var1[5] - var2[5] );
else
var2 = var2+(var2*(va93/95));
plot10(var1+지수더하기/1000 );
plot11(var2+호가더하기/1000 );
plot51(var2+호가더하기/1000 );
TEMA3 = (3 * Ema(var2+호가더하기/1000 ,순매수LENGTH2)) - (3 * Ema(Ema(var2+호가더하기/1000 ,순매수LENGTH2),순매수LENGTH2)) +
(Ema(Ema(Ema(var2+호가더하기/1000 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2));
if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1];
if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정);
if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1];
if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9);
plot52(TEMA3,"순매수테마");
}
//if var2-var1 > 폭보정 Then var2=var1;
//if var1-var2 > 폭보정 Then var2=var1;
//if (va71[1]-va71) <= 폭보정 Then var2=var1;
//if (va71-va71[1]) <= 폭보정 Then var2=var1;
//if va71[1] < va71 and va71[1] + 폭보정 > va71 then var2=var1;
//if va71[1] > va71 and va71[1] - 폭보정 > va71 then var2=var1;
EP = 2/(지수호가테마LENGTH1+1);
if idx == 0 Then{
E11 = var1;
E21 = var2;
}
Else{
E11 = var1 * EP + E11 * (1-EP);
E21 = var2 * EP + E21 * (1-EP);
}
if idx <= 1 Then{
E12 = E11;
E22 = E21;
}
Else{
E12 = E11 * EP + E12 * (1-EP);
E22 = E21 * EP + E22 * (1-EP);
}
if idx <= 2 Then{
E13 = E12;
E23 = E22;
}
Else{
E13 = E12 * EP + E13 * (1-EP);
E23 = E22 * EP + E23 * (1-EP);
}
TEMA1 = (3 * E11) - (3 * E12) + (E13);
if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1];
if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정);
if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1];
if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정);
TEMA2 = (3 * E21) - (3 * E22) + (E23);
PLOT30(TEMA1+지수더하기/1000 ,"지수테마",iff((TEMA1 +지수더하기/1000 )>(TEMA1 +지수더하기/1000)[1]+00,BLACK,iff((TEMA1 +지수더하기/1000 )<(TEMA1 +지수더하기/1000 )[1]-00,BLACK,BLACK)));
PLOT31(TEMA2 +호가더하기/1000,"호가테마");
//PLOT31(TEMA2 +호가더하기/1000,"호가테마",iff(va71[3]-폭보정 > va71,RED,iff(va71[3]+폭보정 < va71,RED,GREEN)));
vmin = min(TEMA1+지수더하기/1000 ,TEMA2+호가더하기/1000 );
vmax = max(TEMA1+지수더하기/1000 ,TEMA2+호가더하기/1000 );
if TEMA1+지수더하기/1000> TEMA2+호가더하기/1000 Then{
var80 = (TEMA1+지수더하기/1000- TEMA2 +호가더하기/1000 )*0.5+TEMA2+호가더하기/1000 ;
}
if TEMA1 < TEMA2+호가더하기/1000 Then{
var80 = (TEMA2+호가더하기/1000 -TEMA1+지수더하기/1000)*0.5+TEMA1+지수더하기/1000 ;
}
PLOT17(var80,"지호평균");
//테마합 일정 수량차이상의 급등락 표시
if TEMA3 > TEMA3[1]+ 급변 Then{plot21(vmin-0.05,"급등");}
if TEMA3 < TEMA3[1]- 급변 Then{plot22(vmin-0.05,"급락");}
va71 =( TEMA2+호가더하기/1000 - TEMA1+지수더하기/1000 )+100.3;
if va71[1] < va71 Then{
PLOT25((vmin )-0.05,"매수예비");
//PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav");
}
if va71[1] > va71 Then{
PLOT26((vmin )-0.05,"매도예비");
// PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav");
}
PLOT60(va71,"55",iff(va71[3]-폭보정 > va71,GREEN,iff(va71[3]+폭보정 < va71,GREEN,BLACK)));
if abs (va71[3] - va71) < 폭보정 then
PLOT64(va71-0.1,"커플링");
PlaySound("C:₩예스트레이더₩data₩Sound₩버튼2.wav");
if (( TEMA2+호가더하기/1000 )>(TEMA1+지수더하기/1000)+급변) Then{
//if sTime > (시간보정*100) and (TEMA1+지수더하기/1000)+보정후변화 < ( TEMA2+호가더하기/1000 ) and
//(TEMA1+지수더하기/1000)[1] > (TEMA1+지수더하기/1000)
//if (TEMA1+지수더하기/1000)[1]+0.0 < (TEMA1+지수더하기/1000) and va71[1]-0.01 < va71
// if ( TEMA1+지수더하기/1000 )[1] < ( TEMA1+지수더하기/1000 ) and va71[1] < va71[1]
//then {
PLOT45((vmin )-0.01,"매수막대");
//PlaySound("C:₩예스트레이더₩data₩Sound₩버튼2.wav");
}
if (( TEMA2+호가더하기/1000 )<(TEMA1+지수더하기/1000)-급변) Then{
//if sTime > (시간보정*100) and (TEMA1+지수더하기/1000)-보정후변화 > ( TEMA2+호가더하기/1000 ) and
//(TEMA1+지수더하기/1000)[1] < (TEMA1+지수더하기/1000)
//if (TEMA1+지수더하기/1000)[1]-0.0 > (TEMA1+지수더하기/1000) and va71[1]+0.01 > va71
// if ( TEMA1+지수더하기/1000)[1] > ( TEMA1+지수더하기/1000 ) and va71[1] > va71[1]
// then {
PLOT46((vmin )-0.01,"매도막대");
// PlaySound("C:₩예스트레이더₩data₩Sound₩버튼2.wav");
}
if va71[1]+급변 < va71 Then {
PLOT18((va71 )+0.01,"매도");
}
if va71[1]-급변 > va71 Then {
PLOT19((va71 )+0.01,"매수");
}
va96 = (tema1 - tema2)*1000;
PLOT61(va96,"66",iff(va96 > 0,RED,iff(va96 < 0,BLACK,BLACK)));
PlotBaseLine1(100,"기준선100");
if stime == 시간보정*100 then {
PLOT62(100,"시간보정");
}
2017-03-21
124
글번호 108020
답변완료
수식 추가 부탁합니다
안녕하세요
52468 수식에서~
아래 조건식 추가하고 싶습니다 도움 부탁합니다.
#,input : Per2(9),시작시간(70000),종료시간(125000);
(plot라인을 추가하고,매매시간을 장시작시간에서 12시50분까지)
#,계약수는 1계약으로 청산조건은 (매도청산은 매수진입자리,매수청산은 매도진입자리)
#,손절은 7틱/강제 청산은 장종료시간 12시50분.
#,그외 진입조건은 52468 수식과 동일(이때 per1(18)라인조건과 충돌하거나 혼합되지 않도록)
보내주신수식 잘사용하고 있습니다,
언제나 늘 감사합니다.
2017-03-21
119
글번호 108019