커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3517
글번호 230811
사즉생 님에 의해서 삭제되었습니다.
2019-12-31
5
글번호 134772
답변완료
현재 매수 매도 잔량을 나타내는 방법
안녕하세요. 해외선물에 이용하려고 하고 있습니다.
var : 매수잔량(0), 매도잔량(0);
매수잔량 = ma(Bids, 1);
매도잔량 = ma(Asks, 1);
plot1(매수잔량, "매수잔량");
plot2(매도잔량, "매도잔량");
이렇게 하니 아무것도 안뜨네요. 수정 부탁드리겠습니다.
감사합니다.
2019-12-31
415
글번호 134771
답변완료
65448번 추가질문입니다.
안녕하세요?
65448번 추가질문입니다.
익절 또는 손절한이후 재진입 수식 수정 부탁드립니다.
그림1 매수손절 이후 매수 정상적으로 진입됨.
그림2 매도손절이후 매도재진입이 안됨.
그림3 매수익절이후 한파동에 한번진입되어야하는데 재진입.
그림4 매도익절이후 재진입이 안됨.
아래수식에서 위부분을 수정부탁드립니다.
지난 한해동안 고생 많으셨습니다.
새해 복 많이 받으세요.
----------------------------------------------------------------
Input:length(20),익청(20),손절(20);
Var:종가사용여부(0),
TL_NewBit(0);
Array:고[10,4](0),저[10,4](0);
Value1 = HiLoLineZigZag(length,종가사용여부,고,저,TL_NewBit);
if TotalTrades > TotalTrades[1] then
{
if MarketPosition(1) == 1 Then
Condition1 = false;
if MarketPosition(1) == -1 Then
Condition2 = false;
}
If MarketPosition <= 0 and value1 == 1 and Condition1 == False Then
Buy("B1",AtStop,고[2,1]);
If MarketPosition <= 0 and value1 == -1 and Condition1 == false Then
Buy("B2",AtStop,고[1,1]);
if MarketPosition == 1 Then
{
ExitLong("Bp",AtLimit,EntryPrice+PriceScale*익청,"",1,1);
}
If MarketPosition >= 0 and value1 == -1 and Condition2 == true Then // 저점
Sell("S1",AtStop,저[2,1]);
If MarketPosition >= 0 and value1 == 1 and Condition2 == true Then // 저점
Sell("S2",AtStop,저[1,1]);
if MarketPosition == -1 Then
{
ExitShort("Sp",AtLimit,EntryPrice-PriceScale*익청,"",1,1);
}
SetStoploss(PriceScale*손절,PointStop);
if MarketPosition == 1 Then
Condition1 = true;
if MarketPosition == 1 Then
Condition2 = true;
2020-01-02
367
글번호 134770
답변완료
부탁 드립니다.
도움에 감사 드립니다.
미리 감사 드립니다.
1)다음 일봉에서의 지표를
분봉에서 나타 나도록 부탁 드립니다.
VAR1=HIGHEST(H,P);
2)예를 들어 60분봉에서의 지표를
10분봉(타분봉 지표)에서 나타 나도록 부탁 드립니다.
VAR2=LOWEST(L,P);
3)EnvelopeDown의 함수식을 타분봉에서
나타 나도록 부탁 드립니다.
Input : Period(20), Percent(0.2);
Var : value_MA(0);
value_MA = ma(C, Period);
var1 = value_MA - value_MA * (Percent / 100);
2019-12-31
299
글번호 134769
답변완료
문의드립니다
당일시가+3틱이상은 레드색 당일시가-3틱은 블루색 강조식 부탁드립니다~~미리감사드립니다
2019-12-31
291
글번호 134768
답변완료
시스템 수식
수고가 많으십니다.
RSI관련하여 진입과 청산신호를 수식으로 부탁드립니다.
< 조건> RSI 14, RSI 28 (시그널선은 제외)
< 1> (매수진입) RSI 28이 50을 상향돌파후 최초로 70을 상향돌파할때
(매수청산) 매수진입후 RSI 14가 70을 하향돌파하거나
RSI 28이 70을 하향돌파하거나
RSI 14가 RSI 28을 데드크로스 할때
(매도진입) RSI 28이 50을 하향돌파후 최초로 30을 하향돌파할때
(매도청산) 매도진입후 RSI 14가 30을 상향돌파하거나
RSI 28이 30을 상향돌파하거나
RSI 14가 RSI 28을 골드크로스 할때
<2>①1분봉/ 3분봉/ 5분봉/10분봉에서 위 <1>의 조건이 충족될때만 매수진입/ 매도진입/
②매수청산과 매도청산은 5분봉에서 위<1> 조건충족시
③매수청산과 매도청산은
5분봉 또는 3분봉에서 위<1> 조건충족시
④매수청산과 매도청산은
5분봉 또는 3분봉 또는 1분봉에서 위<1> 조건충족시
*즉, 위<1>은 아무봉에서나 조건 충족시 진입 및 청산
위<2>는 진입시는 1분봉 3분봉 5분봉 10분봉 모두 조건 충족시
청산시는 5분봉에서만,
5분봉 또는 3분봉에서,
5분봉 또는 3분봉 또는 1분봉에서
조건충족시 각각 시스템 수식
<3>청산에 있어서 추가적으로
①5분봉에서
볼린저밴드(10/2)상한선이 볼린저밴드(20/2상한선)을 데드크로스(터치 포함)할 때 매수청산
②5분봉 또는 3분봉 에서
볼린저밴드(10/2)상한선이 볼린저밴드(20/2상한선)을 데드크로스(터치 포함)할 때 매수청산
③5분봉 또는 3분봉 또는 1분봉에서
볼린저밴드(10/2)상한선이 볼린저밴드(20/2상한선)을 데드크로스(터치 포함)할 때 매수청산
④5분봉에서
볼린저밴드(10/2)하한선이 볼린저밴드(20/2상한선)을 골드크로스(터치 포함)할 때 매도청산
⑤5분봉 또는 3분봉 에서
볼린저밴드(10/2)하한선이 볼린저밴드(20/2) 하한선을 골드크로스(터치 포함)할 때 매도청산
⑥5분봉 또는 3분봉 에서
볼린저밴드(10/2)하한선이 볼린저밴드(20/2) 하한선을 골드크로스(터치 포함)할 때 매도청산
2019-12-31
359
글번호 134767
답변완료
체결강도 관련
안녕하세요 새해복많이 받으시길바랍니다.
종목검색 수식에서 체결강도를 집어넣고 싶은데,
분봉상으로,
(1) 1봉전 체결강도 대비 0봉전 체결강도가 증가값이 X(변수)이상이고,
(2) 0봉전 체결강도가 Y(변수) 이상이고,
(3) 0봉전 체결강도가 체결강도 N봉 평균을 돌파하는,,,
검색하고 싶은데, 수식부탁드립니다.
2019-12-30
402
글번호 134766
답변완료
수식 도와주실수 있나요? 하다가 막혀서요
최대한 수식을 이해하고 스스로 작성하려고 하는데 정말 모르겠습니다. 좀 도와주실수 있나요?
요지는 다음과 같습니다.
아래 특정 하나의 수식으로(물론 변수는 최적화) 분봉별로 변수값을 변형하여 4개의 수식을 각각 차트별로 운용하고 있습니다.
4개의 수식을 하나의 수식으로 통합수식을 구현하려고 합니다.
(바로 아래 질물 사항 참조 ) 해당 수식을 각각
1분봉 - data1
5분봉 - data2
10분봉 - data3
20분봉 - data4
왜냐하면 이유는 다음과 같습니다.
해당 수식은 역추세 매매로 급락시 체결 진입되는 수식인데 폭락 원웨이시 4개 수식이
전량 체결되는 경우가 있는데 그러면 리스크관리가 안되기 때문에 .....
4개의 수식이 전량 진입체결되는 경우 -- 위험관리가 안됨 -- 진입 제한 필요성
및
4개 전략을 반영하다보니 차트를 4개를 열어서 관리해야 함 --> 차트 1개로 간소화 필요
한종목에 4개전략을 활성화하고 종목을 3개하니 12개 전략을 활성화하다보니
컴퓨터가 과부하 걸림.... 락다운되는 현상 가끔씩 발생..위험성으로 개선 필요
전략
1. 4개의 전략 ( 동일종목 1분봉 5분봉 10분봉 20분봉 )을 하나의 수식으로 구현
2. 1개의 버전에 변수로 1회진입버전 및 2회진입버전이 있음 ( max 4버전 * 2 = 8계약 진입해버릴수 있음 )
3. 현재 자금상 2개 (버전진입 갯수를 변수로 지정) 의 버전만 진입가능하게 설계 구현
( max 2버전 * 2계약 = 최대 4계약진입 )
시행 방법
일단 전략차트 (그림과 같이 셋팅)
전략차트를 1분봉 참조차트를 5분봉 10분봉 20분봉으로 셋팅 함.
수식을 아래와 같이 수식 작성
--- -----------------------------------------------------------------------
#매수통합버전 ( 1분봉/ 5분봉/ 10분봉/20분봉 버전)
#1분봉 버전-- data1 차트에 적용
Input : RSIPeriod(14),RSI매수값(16),SimPeriod(14),심리도값(22);
Input : 초기화(7);
Input : CCI기간(20),CCI값(500);
Input : 하락틱수(50);
Input : 즉시익절1(30),즉시손절1(90);
Input : 분할매수횟수(2),분할매수틱수(50);
input : N(100); # N은 즉시손절1 발생시 N봉까지 진입 금지
var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0);
CCIv = CCI(CCI기간);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
# -------N봉까지 즉시손절1 발생시 진입금지 수식 --------------
if bdate != bdate[1] Then
Entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
Condition2 = MarketPosition == 0 and
(IsExitName("즉시손절1",1) == false or
(IsExitName("즉시손절1",1) == true and BarsSinceExit(1) > N));
# --------------------------------------------------------------------
Condition1 = RSIv < RSI매수값 and Simri < 심리도값;
# ------------초기화까지 ----------------
if bdate != bdate[1] Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
BuySetup = false;
}
if BuySetup == false and Condition1 == true and Condition1[1] == false Then
{
var1 = C;
var2 = DD;
BuySetup = true
}
if Condition2 == true and MarketPosition == 0 and BuySetup == true Then
buy("매수",AtLimit,var1-PriceScale*하락틱수);
#추가진입
if MarketPosition == 1 and MaxEntries < 분할매수횟수 Then
buy("추가매수",atlimit,LatestEntryPrice(0)-PriceScale*분할매수틱수,1);
if MarketPosition == 1 then
{
BuySetup = false;
if CrossDown(CCIv,CCI값) Then
ExitLong("매수cci청산");
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
}
#***********************************************************************************
#5분봉 버전 -- data2 차트에 적용 ( 잘 몰라서 수정 못함 ( data2로 반영해야함 )
상동 - data2차트에 적용하도록 수정 필요...
#***********************************************************************************
#10분봉 버전 -- data3 차트에 적용 ( 잘 몰라서 수정 못함 ( data3로 반영해야함 )
상동 - data3차트에 적용하도록 수정 필요...
#***********************************************************************************
#20분봉 버전 -- data4 차트에 적용 ( 잘 몰라서 수정 못함 ( data4로 반영해야함 )
상동 - data4차트에 적용하도록 수정 필요...
***** 위식에서 기능추가로 4개 버전중 2개 버전만 진입될수 있도록 진입 제한 수식 ....
참고로 1분봉전략, 5분봉전략, 10분봉전략, 20분봉전략의 기본수식은 같으나 변수는 다 다름
PS 혹시 제가 경험치 부족으로 무식하게 위 식처럼 구현하면 될것 같아서 요청한 것이지만
효율적인 방법이 있으면 알려주시면 감사하겠습니다.
2019-12-30
537
글번호 134765
답변완료
과장님 수식 좀 도와주실수 있으신가요?- 따로 따로 답변해주시면 감사 data2함수관련
기본차트는 다른 봉수로 설정하고 참조차트(data2)에 아래식을 변형하게 하려 합니다.
기본차트 수식
Input : RSIPeriod(14),RSI매수값(35),SimPeriod(14),심리도값(37);
Input : N1(1),초기화(7);
Input : CCI기간(80),CCI값(200);
Input : 하락틱수(40);
Input : 즉시익절1(300),즉시손절1(75);
Input : 분할매수횟수(2),분할매수틱수(45);
input : N(5);
var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0);
CCIv = CCI(CCI기간);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
if bdate != bdate[1] Then
Entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
Condition2 = MarketPosition == 0 and
(IsExitName("즉시손절1",1) == false or
(IsExitName("즉시손절1",1) == true and BarsSinceExit(1) > N));
Condition1 = RSIv < RSI매수값 and Simri < 심리도값;
if bdate != bdate[1] Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
BuySetup = false;
}
if BuySetup == false and Condition1 == true and Condition1[1] == false Then
{
var1 = C;
var2 = DD;
BuySetup = true;
}
if Condition2 == true and MarketPosition == 0 and BuySetup == true Then
buy("매수",AtLimit,var1-PriceScale*하락틱수);
#추가진입
if MarketPosition == 1 and MaxEntries < 분할매수횟수 Then
buy("추가매수",atlimit,LatestEntryPrice(0)-PriceScale*분할매수틱수,1);
if MarketPosition == 1 then
{
BuySetup = false;
if CrossDown(CCIv,CCI값) Then
ExitLong("매수cci청산");
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
}
===========================================================================
위 차트 수식을 data2 참조차트에 동일하게 구현하려고 합니다. 맞느지 한번 봐주세요
input 변수는 그대로
var 는 각 변수마다 (0) --> (0,data2)로 변경
지정수식은 A = B ---> A = data2(B)
그리고 잘 모르겠어요.. 다음 수식에는 data2를 어디다가 넣어야 하는지... ...ㅠㅠ
Input : RSIPeriod(14),RSI매수값(35),SimPeriod(14),심리도값(37);
Input : 초기화(7);
Input : CCI기간(80),CCI값(200);
Input : 하락틱수(40);
Input : 즉시익절1(300),즉시손절1(75);
Input : 분할매수횟수(2),분할매수틱수(45);
input : N(7);
var : CCIv(0,Data2),RSIv(0,Data2),Simri(0,Data2),BuySetup(false,Data2),DD(0,Data2),entry(0,Data2);
CCIv = data2(CCI(CCI기간));
RSIV = data2(RSI(RSIPeriod));
Simri = data2(Simrido(SimPeriod));
if data2( bdate != bdate[1] ) Then
Entry = 0;
if data2(MarketPosition != 0 and MarketPosition != MarketPosition[1]) Then
entry = entry+1;
Condition2 = data2(MarketPosition == 0 )and
data2((IsExitName("즉시손절1",1) == false)) or
data2( (IsExitName("즉시손절1",1) == true and BarsSinceExit(1) > N));
Condition1 = (RSIv < RSI매수값) and (Simri < 심리도값);
if data2(bdate != bdate[1]) Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
BuySetup = false;
}
if BuySetup == false and Condition1 == true and Condition1[1] == false Then
{
var1 = C;
var2 = DD;
BuySetup = true;
}
if Condition2 == true and MarketPosition == 0 and BuySetup == true Then
buy("매수",AtLimit,var1-PriceScale*하락틱수);
#추가진입
if MarketPosition == 1 and MaxEntries < 분할매수횟수 Then
buy("추가매수",atlimit,LatestEntryPrice(0)-PriceScale*분할매수틱수,1);
if data2(MarketPosition == 1) then
{
BuySetup = false;
if CrossDown(CCIv,CCI값) Then
ExitLong("매수cci청산");
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
}
2019-12-30
344
글번호 134764