커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6563
글번호 230811
답변완료
배열의 평균
배열변수의 평균을 구하는 방법이 있나요?
시계열변수의 경우, 그냥 ma(변수, 기간) 으로 바로 계산이 가능한데,
배열변수는 어떻게 평균값을 계산하는지 궁금합니다.
이를테면,,, 다음과 갈은 배열이 있다고 했을때,
array: tmp[10](0);
요놈의 평균을, 다음과 같이 계산하려고 하면 오류가 나더라고요
ma(tmp, 10);
아니면 for문을 이용해서, 일일이 계산해야할까요?
2015-06-24
165
글번호 87595
답변완료
문의드립니다
안녕하세요.
수식을 만들었는데 무엇이 잘못되서 그런지 실행이 되지않읍니다.
보시고 간단하게 줄일것은 줄이고 틀린것은 수정부탁드립니다.
감사합니다.
######################
Input : af(0.01), maxAF(0.1),shortPeriod(12), longPeriod(26),shortPeriod1(24), longPeriod1(52),shortPeriod2(20), longPeriod2(120);
Var : value(0),value1(0),value2(0),value3(0),value4(0),T(0),HH(0),LL(0),ma5(0);
Var : value5(0), value6(0), value7(0), 갭누적(0), 일간갭(0), GC(0),TRIXGap(0),osc(0) ;
value = sar(af,maxAF);
value1 = MACD(shortPeriod, longPeriod);
value2 = MACD(shortPeriod1, longPeriod1);
value3 = ma(c, shortPeriod2);
value4 = ma(c, longPeriod2);
##PAR조건
If crossup(c, value) Then
{
var1 = H;
var2 = L;
var3 = var1[1];
var4 = var2[1];
}
If CrossDown(c, value) Then
{
var1 = H;
var2 = L;
var3 = var1[1];
var4 = var2[1];
}
if H > var1 Then
var1 = H;
if L < var2 Then
var2 = L;
if H > var5 Then
var5 = H;
if L < var6 Then
var6 = L;
if crossUp(C, value) then
var8 = var4;
if CrossDown(C, value) then
var9 = var3;
if crossup(ma(c,5),var9) Then
var10 = var8;
if crossdown(ma(c,5),var8) Then
var10 = var9;
if crossup(ma(c,5),var10) then
var5= h;
if crossdown(ma(c,5),var10) then
var6= l;
if crossup(ma(c,5),var10) then
var7= var6;
if crossdown(ma(c,5),var10) then
var7= var5;
var11 =var6 + (var5-var6)*0.5;
If crossup(c, value) Then
{
var12 = H;
var13 = L;
}
If CrossDown(c, value) Then
{
var14 =h;
var15= l;
}
if var12 > var14 then
var16 = var12;
Else
var16 = var14;
if var13 < var15 then
var17 = var13;
Else
var17 = var15;
##cut loss
if ma(c,5) > var7 Then
var18 = var17;
Else
var18 = var16;
##trix
if index > 0 and date!=date[1] then
{
일간갭 = Open-Close[1]; //일간갭
갭누적 = 갭누적+일간갭; //일간갭 누적
}
GC = C - 갭누적;
value5 = ema(GC, shortPeriod);
value6 = ema(value5, shortPeriod);
value7 = ema(value6, shortPeriod);
TRIXGap = (value7-value7[1])/value7[1]*100;
OSC = trixgap;
##진입식
if T <= 0 and
ma5 > var7 and
value1 > 0 and
value2 > 0 and
value3 > value4 and
C > var11 and
osc > osc[1] And
crossup(c,value) Then{
T = 1;
HH = H;
}
if T >= 0 and
ma5 < var7 and
value1 < 0 and
value2 < 0 and
value3 < value4 and
C < var11 and
osc < osc[1] And
CrossDown(c,value) Then{
T = -1;
LL = L;
}
if T == 1 and crossup(C,HH) Then
buy("매수");
if MarketPosition == 1 and
value1 < 0 and osc < 0 and ma5 < var18 Then
ExitLong("매수청산");
if T == -1 and CrossDown(C,LL) Then
sell("매도");
if MarketPosition == -1 and
value1 > 0 and osc > 0 and ma5 > var18 Then
ExitShort("매도청산");
2015-06-24
143
글번호 87594
답변완료
수식 부탁드려요.
예를들어 MACD 가 MACD Signal 선을 골든크로스 했을때.
1번 수식
2계약 진입.
1계약은 진입 후 20틱 수익일때 청산
나머지 1계약은
30틱 수익후 10틱으로 내려오면 청산
40틱 수익후 15틱으로 내려오면 청산
50틱 수익후 20틱으로 내려오면 청산
2번 수식
프라이스 채널 지표를 이용했을때
프라이스채널 상단을 터치하고 다음봉 음봉으로 전환되면 매도 진입.
반대로 하단을 터치하고 양봉으로 전환되면 매수진입.
* 그리고 매수 매도 진입시 진입명을 정할 수 있는데.
진입한 진입가도 표시되게 할 수 있는 방법좀 부탁드립니다.
항상 감사합니다.
2015-06-24
146
글번호 87586
답변완료
지표식 작성간 로직문의
지표식 작성중에 문법로직에 대한 문의가 발생하여 문의드립니다.
원하는 지표는 다음과 같습니다.
1. 20일선 하향이탈 100건을 배열에 담는다.
2. 배열을 뒤져서 현재봉의 종가 또는 시가와 가장 근접한
봉의 위쪽, 봉의 아래쪽 값 두개를 찾아서 Plot으로 그려준다.
아래는 소스입니다.
Input: 일선1(5), 일선2(20);
Var: 종가변곡점2(0),
Cnt(0), Cnt1(0), Cnt2(0), 상위값(0), 하위값(0),
Array: 변곡발생[100](0), AA[100](0);
// 100개의 20일선 하향이탈을 기록한다.
If (CrossDown(C, 일선2)) Then
{
종가변곡점2 = (O + C) / 2;
변곡발생[0] = 종가변곡점2;
For Cnt = 1 To 100
{
변곡발생[Cnt] = 변곡발생[Cnt -1][1];
}
}
For Cnt1 = 0 To 99 {
AA[Cnt1] = Abs(C[1] - 변곡발생[Cnt1]);
MessageLog("인덱스: %f, 배열: %.2f", Cnt1, AA[Cnt1]);
}
하위값 = AA[0];
상위값 = AA[0];
For Cnt2 = 0 To 99 {
If (AA[Cnt2] < 하위값) Then {
하위값 = AA[Cnt2];
}
}
MessageLog("하위값: %.2f", 하위값);
//Plot3(상위값, "저항선", RED, DEF, 3);
Plot4(하위값, "지지선", BLUE, DEF, 3);
2015-06-24
174
글번호 87585
답변완료
시스템 수식 부탁드립니다.
코스피 200선물옵션 분봉에서
당일 5분봉 종가에서 위 or 아래 0.5 실시간(mit)진입
익절 0.5 손절 0.5로하고
당일청산 하고싶습니다.
저번에도 한번 부탁드렸는데... 시가에서 0.5로 되어있드라구용
5분봉 종가에서 0.5로 부탁드리겠습니다.~
2015-06-24
134
글번호 87581
답변완료
수식부탁드립니다.
if stime < 095900 then{
var1 = dayhigh;
var2 = daylow;
}
if stime >= 095900 Then{
if crossup(c,var1) Then
buy();
if CrossDown(c,var2) Then
sell();
}
SetStopLoss(0.6,PointStop);
SetStopProfittarget(0.8,PointStop);
SetStopEndofday(150000);
진입을 mit진입 하고싶습니다. (실시간 진입)
2015-06-24
126
글번호 87580
부득탐승 님에 의해서 삭제되었습니다.
2015-06-24
0
글번호 87578
답변완료
수식 검토바랍니다.
동일한 봉에 2개 이상의 진입 발생시 특정 진입명의 컨트롤이 안됩니다.
추세 진입명 : a
비추세 진입명 : b
에서 비추세 진입명은 진입가격보다 1.5pt 평가익 후 0.3 반락시 청산할려고 하는데 아래 수식에서 진입명을 b로 할 경우는 콘트롤이 안되고 추세 진입명 a는 작동되어 2개의 포지션 모두가 1.2pt 수익에서 익절되는 상황이 발생합니다!!!!
추세진입명 a는 장 마감에 정리하고, 비추세명 b를 아래 수식처럼 익절하고자 합니다!!!
수식을 검토바랍니다!!!
=========================================================================
진입명 "b"를 익절하는 수식
=========================================================================
if MarketPosition == 1 and
IsEntryName("b") == true and
highest(H,BarsSinceEntry) >= EntryPrice+1.5 Then {
ExitLong("b",AtStop,highest(H,BarsSinceEntry)-0.3);
}
==========================================================================
감사합니다!!!
2015-06-24
147
글번호 87577
답변완료
문의 드립니다
1. 볼린져밴드 상단을 돌파하면 매수 신호, 볼린져 밴드 하단을 돌파하면 매도 신호의 시스템식
2. 볼린져밴드 상단을 돌파 했다가 캔들이 볼린져 밴드 안으로 들어 오면 매도 신호, 볼린져밴드 하단을 돌파 했다가 캔들이 볼린져 밴드 안으로 들어 오면 매수 신호의 시스템식.
3. 1번과 2번을 혼합한 시스템식
* 1번 2번 3번 모두 각각 별개의 시스템식으로 만들어 주세요
감사합니다
2015-06-24
127
글번호 87576