커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3457
글번호 230811
답변완료
매도 조건 하나더 추가 부탁드림니다.
기존 사용하고 있는 매수 청산 수식입니다.
아래식에 추가로 볼린저밴드의 현재봉이 볼린저밴드 상한선을 돌파한후에 다시 상한선을
깨고 내려오는 봉 종가에 청산 하는 수식 부탁드려요
if MarketPosition == 1 then
{
BuySetup = false;
if countif(CrossDown(CCIv,CCI값),BarsSinceEntry) >= 1 and
CCIv < CCI값 and C < O Then
ExitLong("매수cci청산");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*즉시익절1 and C < O Then
ExitLong("즉시익절1");
if highest(H,BarsSinceEntry) >= (EntryPrice+PriceScale*즉시익절1*N2) Then
ExitLong("본전청산1",AtStop,EntryPrice+PriceScale*즉시익절1*N3);
Else
{
if L <= EntryPrice-PriceScale*즉시손절1 Then
ExitLong("즉시손절1",AtStop,L-PriceScale*저점손절틱수);
}
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*tr수익 Then
ExitLong("tr",AtStop, highest(H,BarsSinceEntry)-PriceScale*tr하락);
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*즉시손절1*N4 and C < O Then
ExitLong("저점에서 올라와서 본전 청산",atlimit,EntryPrice+PriceScale*본전생각틱);
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*즉시손절1 *N5 and CCIv >= CCI값1 and C < O Then
ExitLong("cci저점에서 올라와서 약손절");
}
if bdate != bdate[1] Then
SetStopEndofday(0);
if sdate != sdate[1] and DayOfWeek(sdate) == 6 Then
SetStopEndofday(060000);
2020-02-28
442
글번호 136459
요타 님에 의해서 삭제되었습니다.
2020-02-28
7
글번호 136458
답변완료
문의드려요
강조수식입니다. ( 일봉에서 rsi(8) <40일때 ) 약세 수식입니다. - 저번에 알려주셨던 수식입니다.
Input : Length(8),RSI값(40) ;
var : cnt(0),SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == Length+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
}
If idx > Length+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV <=RSI값 Then
PlotPaintBar(h,l,"강조",CYAN);
해당수식을 적용해보면 위 그림과 같이 하늘색부분이 약세 구간입니다.
매도 진입 조건
분봉(30분)에서 하늘색부위로 전환(약세)한지 연속 10개 이상 봉이상 지속되며 하늘색부위를
탈출하는 봉에 종가에 매도 진입 하는 수식 부탁드려요~~
================================================================================
다시 정리하면 다음과 같습니다.
매도 진입 수식입니다.
해외선물입니다. (오일)
일봉기준 RSI (8일) < 40 일때 30분 분봉 기준 10봉 연속 (RSI (8일) < 40) 조건유지후 30분
분봉에서 일봉기준 (RSI (8일) > 40) 되는 시점에 매도 진입하는 수식 요청드릴께요...
2번째 요청 수식
일봉기준 RSI(8일)이 30~35일때 RSI>40이 되는 시점
30분봉에서 매도 진입
RSI가 25~30일때 Rsi>35되는 시점 30분봉에서 매도진입 Rsi가 20~25일때 rsi>30될때 30분봉차트에서 매도 진입하는 수식 부탁합니다
첫번채와 두번째수식은 접근방식이 조금 다름니다
그럼 감사합니다25
2020-03-02
402
글번호 136457
답변완료
문의 드립니다.
input : 타주기분(60);
input : P(20);
var : S1(0),D1(0),TM(0),TF(0),mav(0);
mav = ma(C,P);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
var1 = O;
}
if var1 > 0 then
{
if MarketPosition <= 0 and C > var1 and CrossUp(c,mav) Then
buy();
if MarketPosition == 1 and CrossDown(c,mav) Then
ExitLong();
if MarketPosition >= 0 and C < var1 and CrossDown(c,mav) Then
sell();
if MarketPosition == -1 and CrossUp(c,mav) Then
ExitShort();
}
}
위 로직에서 추가를 원합니다.
60분봉이 양봉이면서 30분봉도 양봉일 때 틱봉에서 20이평 아래서 위로 돌파 시 매수진입
20이평 아래로 돌파 시 매도 청산완료
60분봉이 음봉이면서 30분봉도 음봉일 때 틱봉에서 20이평 위에서 위로 돌파 시 매수진입
20이평 아래로 돌파 시 매도 청산완료
부탁드립니다.
항상 감사합니다.
2020-02-28
394
글번호 136456
답변완료
문의
아래 수식이
피라미딩이 최대 2개가 되어 있을 때
최대 진입수량의 50%를 익절1
나머지를 익절2 하는 수식이라면
요청드린 내용은
피라미딩이 최대 2개가 되어 있을 때
최대 진입수량의 1개를 익절1
나머지를 익절2 하는 수식을 요청드립니다.
(비율이 아니라 수량으로 정리)
*************************************************************************************
input : up익절1(150),up익절2(200);
if MarketPosition == 1 Then
exitlong("bx1",AtLimit,EntryPrice+PriceScale*up익절1,"",Floor(MaxContracts*0.50),1);
if MarketPosition == 1 Then
exitlong("bx2",AtLimit,EntryPrice+PriceScale*up익절2);
input : dn익절1(150),dn익절2(200);
if MarketPosition == -1 Then
exitshort("sx1",AtLimit,EntryPrice-pricescale*dn익절1,"",Floor(MaxContracts*0.50),1);
if MarketPosition == -1 Then
exitshort("sx2",AtLimit,EntryPrice-pricescale*dn익절2);
2020-02-28
357
글번호 136454
답변완료
안녕하세요
n = input(title="Periods", defval=2, minval=2, type=integer)
DF = (high[n-2] < high[n]) and (high[n-1] < high[n]) and (high[n+1] < high[n]) and (high[n+2] < high[n])
UF = (low[n-2] > low[n]) and (low[n-1] > low[n]) and (low[n+1] > low[n]) and (low[n+2] > low[n])
plot1(DF,
plot2(UFl,
변환 문의드립니다. 감사합니다.
2020-02-28
390
글번호 136453
as8282 님에 의해서 삭제되었습니다.
2020-02-29
6
글번호 136452
답변완료
호가변동
호가변동을 수치화 할수 있을까요?
1.전봉 종가대비 n틱만큼 위로변동시 + 변동틱수/n
아래로변동시 - 변동틱수/n
2.누적
3.전봉대비 증감폭 누적
2020-02-28
355
글번호 136451
답변완료
문의드립니다.
항상 고맙고 감사합니다.
다름이 아니오라 아래 검색식이 작동이 안되어서 그럽니다.
5분봉에서 검색을 하고 싶습니다.
Input : Period(200), MultiD(2),Period1(200), MultiD1(3);
var : BBup(0),BBdn(0),BBup1(0),BBdn1(0),BBup6(0),BBdn6(0),BBup7(0),BBdn7(0);
Input : Period3(200);
var : Sma3(0);
BBup = BollBandUp(Period,MultiD);
BBup1 = BollBandUp(Period1,MultiD1);
Sma3 = ma(C,Period3);
value1=2*(c-Sma3);
BBup6 = BollBandUp(100,2);
BBup7 = BollBandUp(100,3);
Value2=c+2*(Sma3-c)+BBup-BBup1-(1*c+BBup6-BBup7);
if Value2>0 then
find(1);
2020-02-28
359
글번호 136450