커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6180
글번호 230811
답변완료
수식문법
키움증권 수식관리자인데 예스트레이더 문법으로 변환하기 너무 어렵네요ㅠㅠ 부탁드려요
(((H+L)/2)+((predayhigh()+predaylow())/2))/2
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(((DayHigh()+Daylow())/2)+((predayhigh()+predaylow())/2)+((npredayhigh(2)+npredaylow(2))/2))/3
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(C + nPreDayClose(1) + nPreDayClose(2) + nPreDayClose(3) + nPreDayClose(4) )/ 5
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
A = (C + nPreDayClose(1) + nPreDayClose(2) + nPreDayClose(3) +
nPreDayClose(4) + nPreDayClose(5) + nPreDayClose(6) + nPreDayClose(7) +
nPreDayClose(8) + nPreDayClose(9))/10;
B = (DayClose() + nPreDayClose(1) + nPreDayClose(2) + nPreDayClose(3) +
nPreDayClose(4) + nPreDayClose(5) + nPreDayClose(6) + nPreDayClose(7) +
nPreDayClose(8) + nPreDayClose(9) + nPreDayClose(10) + nPreDayClose(11) +
nPreDayClose(12) + nPreDayClose(13) + nPreDayClose(14) + nPreDayClose(15) +
nPreDayClose(16) + nPreDayClose(17) + nPreDayClose(18) + nPreDayClose(19)
)/20;
(A+B)/2
------------위 연결---
a1 = (A+B)/2;
(a1+ B) /2
2018-02-22
259
글번호 116820
답변완료
함수요청
안녕하세요?
함수요청드립니다.
매수: 일봉상 ADX값이 20이상인 상태에서 직전 ADX값보다 크며, 일봉상 PDI > MDI인 상태에서
60분봉상 파라볼릭 매수신호
매도: 일봉상 ADX값이 20이상인 상태에서 직전 ADX값보다 크며, 일봉상 PDI < MDI인 상태에서 60분봉상 파라볼릭 매도신호
거래시간: 9시~16시(진입기준)
2018-02-22
171
글번호 116817
답변완료
코드의 오류...
아래 코드로 작성된 첨부 차트를 보시면, 새로운 문자열이 생성되면 과거의 문자열은 지워져야 하는데 지워지지 않고 있습니다. 왜 그런지 오류를 좀 찾아 주시면 감사하겠습니다.
그리고 또 한 가지는 제 컴퓨터의 시간을 거래소 시간과 동기화 시키는 방법을 알고 싶습니다. 혹시 아신다면 좀 알려 주시면 감사하겠습니다.
var : AA(0,data2),BB(0,data3),cc(0,data1);
var: str1(""),str2(""),tx1(0),tx2(0),tx3(0);
AA = data2(C);#외국인
BB = data3(C);#개인
CC = -(AA+BB);#기관
var1=(aa-aa[1])*(bb-bb[1]);
var2=(aa-aa[1])*(cc-cc[1]);
if var1<0 and var2>0 then plot1(400);
else plot1(0);
#if var2>0 then plot2(400);
# else plot2(0);
var10=c-c[1];
var11=(aa-aa[1])/100;
str1="소극";
if var10*var11>0 then str1="적극";
str2="하락";
if var11>0 then str2="상승";
text_delete(tx1);
text_delete(tx2);
text_delete(tx3);
tx1=text_new(sdate[20],stime[20],l[20]-0.25,str1);
tx2=text_new(sdate[20],stime[20],l[20]-0.50,str2);
tx3=Text_New(sdate[20],stime[20],l[20]-0.75,NumToStr(var11,1));
2018-02-22
213
글번호 116815
답변완료
문의드립니다.
선물차트 기준으로 문의드립니다.
틱차트에 5분봉차트의 삼각가중평균20선(이하 a라 함)을 나타내서, 틱차트의 가중이동평균 20선(이하 b라 함)과 비교하여 b가 a선 위에 있으면 그 사이를 빨강색 색채우기하고, b가 a선 아래에 있으면 그 사이를 파란색으로 채우기 하고자 합니다.
분봉차트의 시간주기와 기간값, 가중이평 기간값은 수정가능하게 부탁드립니다.
수식을 어떻게 작성해야 하는지요? 부탁드립니다.
항상 감사드립니다. 수고하세요!!!
2018-02-22
188
글번호 116811
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
코딩 변환 부탁드립니다.
Indicator: Martinelli Chart
inputs:
StdDevLen( 7 ),
ForecastLen( 3 ),
Cutoff( 1.04 ) ;
variables:
PriceChange( 0 ),
PriceForecast( 0 ),
W( 0 ),
Omega( 0 ),
Alpha( 0 ),
Signal( 0 ),
FractionalGain( 0 ),
ThisTrade( 0 ) ;
PriceChange = Close - Close[1] ;
PriceForecast = LinearRegValue( Close, ForecastLen , -1 ) ;
W = PriceForecast - Close ;
Omega = StandardDev( PriceChange, StdDevLen, 2 ) ;
if Omega > 0 then
Alpha = ( PriceForecast - Close ) / Omega ;
if Alpha[1] > Cutoff then
Signal = 1
else if Alpha[1] < Neg( Cutoff ) then
Signal = -1
else
Signal = 0 ;
if Close[1] > 0 then
ThisTrade = Signal * PriceChange / Close[1] ;
FractionalGain = FractionalGain + ThisTrade ;
Plot1( FractionalGain, “FracGain” ) ;
Indicator: Martinelli RS
inputs:
ForecastLen( 3 ),
StdDevLen( 7 ),
InitialCutoff ( 1.04 ),
IncrementCutoff( 0.02 ) ;
variables:
SDate( 0 ),
BuyHoldEntry( 0 ),
PriceChange( 0 ),
PriceForecast( 0 ),
W( 0 ),
Omega( 0 ),
Alpha( 0 ),
Counter( 0 ),
Signal( 0 ),
ThisTrade( 0 ),
MaxFraction( 0 ),
MaxCutoff( 0 ),
MaxCounter( 0 ),
SDateStr( “” ),
EDateStr( “” ),
BH( 0 ),
Diff( 0 ),
WLR( “” ) ;
arrays:
Cutoff[10]( 0 ),
Wins[10]( 0 ),
Losses[10]( 0 ),
FractionalGain[10]( 0 ),
BestPoint[10]( -9999999 ) ;
if CurrentBar = 1 then
begin
SDate = Date ;
BuyHoldEntry = Close ;
end ;
PriceChange = Close - Close[1] ;
PriceForecast = LinearRegValue( Close, ForecastLen , -1 ) ;
W = PriceForecast - Close ;
Omega = StandardDev( PriceChange, StdDevLen, 2 ) ;
if Omega > 0 then
Alpha = ( PriceForecast - Close ) / Omega ;
for Counter = 1 to 10
begin
if CurrentBar = 1 then
Cutoff[Counter] = InitialCutoff + ( Counter -
1 ) * IncrementCutoff ;
if Alpha[1] > Cutoff[Counter] then
Signal = 1
else if Alpha[1] < Neg( Cutoff[Counter] ) then
Signal = -1
else
Signal = 0 ;
if Close[1] > 0 and Signal <> 0 then
begin
ThisTrade = ( ( Signal * PriceChange ) /
Close[1] ) ;
if ThisTrade > 0 then
Wins[Counter] = Wins[Counter] + 1
else if ThisTrade < 0 then
Losses[Counter] = Losses[Counter] +1 ;
FractionalGain[Counter] = ThisTrade +
FractionalGain[Counter] ;
end ;
if FractionalGain[Counter] > BestPoint[Counter] then
BestPoint[Counter] = FractionalGain[Counter] ;
end ;
if LastBarOnChart then
begin
MaxFraction = FractionalGain[1] ;
MaxCutoff = Cutoff[1] ;
for Counter = 2 to 10
begin
if MaxFraction < BestPoint[Counter] then
begin
MaxCounter = Counter ;
MaxFraction = BestPoint[Counter] ;
end ;
end ;
SDateStr = ELDateToString( SDate ) ;
EDateStr = ELDateToString( Date ) ;
if BuyHoldEntry <> 0 then
begin
BH = ( Close - BuyHoldEntry ) / BuyHoldEntry ;
Diff = FractionalGain[MaxCounter] - ( Close -
BuyHoldEntry ) / BuyHoldEntry ;
end ;
if Losses[MaxCounter] + Wins[MaxCounter] > 0 then
WLR = NumToStr( Wins[MaxCounter] /
( Losses[MaxCounter] + Wins[MaxCounter] ), 2 )
else
WLR = “No Losses” ;
Plot1( SDateStr, “SDate” ) ;
Plot2( EDateStr, “EDate” ) ;
Plot3( Cutoff[MaxCounter], “Cutoff” ) ;
Plot4( MaxFraction, “BestPoint” ) ;
Plot5( BH, “B&H” ) ;
Plot6( FractionalGain[MaxCounter], “LDF” ) ;
Plot7( Diff, “Diff” ) ;
Plot8( Wins[MaxCounter], “#W” ) ;
Plot9( WLR, “WLR” ) ;
end ;
Strategy: Martinelli Strat
inputs:
StdDevLen( 7 ),
ForecastLen( 3 ),
Cutoff ( 1.04 ) ;
variables:
PriceChange( 0 ),
PriceForecast( 0 ),
W( 0 ),
Omega( 0 ),
Alpha( 0 ),
TL_ID( -1 ),
Signal( 0 ),
FractionalGain( 0 ),
ThisTrade( 0 ) ;
PriceChange = Close - Close[1] ;
PriceForecast = LinearRegValue( Close, ForecastLen, -1 ) ;
W = PriceForecast - Close ;
Omega = StandardDev( PriceChange, StdDevLen, 2 ) ;
if Omega > 0 then
Alpha = ( PriceForecast - Close ) / Omega ;
{ Entries }
if Alpha > Cutoff then
begin
TL_ID = TL_New ( Date[1], Time[1], Close, Date,
Time, Close ) ;
Buy this bar Close ;
end
else if Alpha < Neg( Cutoff ) then
begin
TL_ID = TL_New ( Date[1], Time[1], Close, Date,
Time, Close ) ;
Sell short this bar at Close ;
end ;
{ Exits }
if Alpha[1] > Cutoff and Alpha < Cutoff and Alpha >
Neg( Cutoff ) then
Sell this bar at Close
else if Alpha[1] < Neg( Cutoff ) and Alpha >
Neg( Cutoff ) and Alpha < Cutoff then
Buy to cover this bar Close ;
2018-02-22
218
글번호 116809
답변완료
신호수식
안녕하세요 신호수식 아래의 기준으로 신호수식 부탁드립니다.
해외선물의 당일중심선에서.. 봉완성 후 다음봉에서 매수 매도 신호 와...
1차 20틱 2차 40틱 3차 60틱 에서 청산 표시를 수평선 내지 텍스트로 표시 될수 있도록
부탁드립니다.
Input : Period(5);
var1 = tema(5);#이평
var2 = (dayhigh+daylow)/2;#당일 중심선
2018-02-22
168
글번호 116808
답변완료
56757번 관련입니다.
알려주신 코딩을 참고하여 수식을 아래와 같이 작성해서 작동해 보왔읍니다
function Main_OnStart()
{
Main.SetTimer(1, 2000);
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var vv = c1.GetIndicatorData("챠트",2,0);
exl1.SetData(1, "c15", vv);
exl1.SetData(1, "c16", 47);
}
}
문제는 엑셀 c15에 출렬될 vv 변수에 참조된 plot2 식은
if 조건식 Then plot2(0,"50"); 인데
엑셀 챠트에 출력되는 값은 18446744073709552000로 나옵니다.
플롯식대로 라면 0이 출력되어야 하는데 왜 그런가요 ?
엑셀 c16에는 위의 수식대로 47 이 제대로 출력됩니다.
아울러, 챠트에 지표식에 적용된 조건을 사용와서 시스템식을 사용할 수는 없나요 ?
2018-02-22
205
글번호 116807
답변완료
수식 요청드립니다.
안녕하세요.
아래는 제가 사용하고 있는 볼린져밴드 수식입니다.
Input: Period(20),dv(2);
Var : SumSqrt(0), Emav(0), Counter(0),AVGV(0),Stdv(0),BBmd(0),BBup(0),BBdn(0);
If index >= Period Then{
BBmd = (Highest(H, Period) + Lowest(L, Period)) / 2;
SumSqrt = 0;
For Counter = 0 To Period - 1 Begin
SumSqrt = SumSqrt + (C[Counter] - BBmd) * (C[Counter] - BBmd);
End;
Stdv = SquareRoot(SumSqrt / Period);
BBup = BBmd + (Dv * stdv);
BBdn = BBmd - (Dv * stdv);
plot1(BBmd,"중단");
plot2(BBup,"상단");
plot3(BBdn,"하단");
}
위의 상태에서 아래와 같은 내용을 추가하고 싶은데요, 볼린져밴드 수식이 가능한지요?
1. 종가가 밴드 상단을 상향 돌파하면 최고가를 저장
2. 종가가 밴드 하단을 하향 이탈하면 최저가를 저장
--> 즉, 캔들이 최고가 혹은 최저가를 갱신한 후 캔들이 움직이더라도 볼밴값이 유지되게끔
하고 싶습니다.
2018-02-22
190
글번호 116806
ywesry 님에 의해서 삭제되었습니다.
2018-02-22
0
글번호 116805