커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1635
글번호 230811
답변완료
조건을 만족하는 값 추리기
안녕하세요 항상 건강하셨으면 좋겠습니다.
코드 짜주시고 도움 주셔서 항상 고맙습니다 (__)
특정 조건을 만족하는 값만 추리길 원합니다 어떻게 해야할지 도움 주시면 감사하겠습니다
X = IFF(Y, 1, 0)이라고 가정하고 (X는 0 또는 1일수밖에 없음)
X가 1이었다가 0으로 바뀌었다는 가정하에,
X가 1이었을때의 봉들 중 가장 작은 거래량을 가진 봉의 저가 <--var1에 넣고싶습니다.
X가 0이었다가 1로 바뀌었다면, x가 0이었을떄의 봉들 중 가장 작은 거래량을 가진 봉의 저가 <-- var2에 넣고싶습니다
var2에 새로운 값이 저장되어있는 상태이고, 다시 x가 1이었다가 0으로 바뀌면, var1에 바로 전에 x가 1인 상황이었을때 만들어진 가장 작은 거래량을 가진 봉의 저가 값'을 다시 넣고, 그 전에 있던 var1 값은 var3에 저장이 되었으면 좋겠습니다.
var1에 새로운 값이 저장되어있고, x가 0이었다가 다시 1로 바뀌면, var2의 x가 1이었을때 만들어진 가장 적은 거래량을 가진 봉의 저가 값을 넣고, 그 전에있던 var2는 var4에 저장되었으면 좋겠습니다.
이렇게 하면 홀수 var에는 x가 1이었을때 값이 계속 갱신되었으면 좋겠습니다. ,
짝수 var에는 x가 0이었을때의 값들이 계속 갱신되었으면 좋겠습니다.
홀수, 짝수 var들은 위와 같은 갱신은 10번까지 할 수 있도록 도와주세요(var 값은 계속 바뀌지만 실제 사용은 홀수당 10개, 짝수당 10개까지 할 수 있도록)
부탁드립니다.
2022-11-03
1003
글번호 163500
답변완료
문의드립니다.
안녕하세요
사진파일 처럼 빨간 화살표 부분
사각 박스를 그린후 박스 시작세로선과 박스 끝세로선이 캔들의 세로부분 중심부분부터
그려지는데요.
검은색으로 빗금친 부분부터 그릴 수 있을까요?
시작세로선이 캔들의 맨 왼쪽 끝세로선이 캔들의 맨오른쪽까지 그릴 수 있을까요?
감사합니다.
if cond1 == True Then
{
if cond1[1] == False Then
{
Box1 = Box_New(sDate,sTime,Value10,NextBarSdate,NextBarStime,H);
Box_SetColor(Box1,Black);
Box_SetFill(Box1,True,70,True);
}
Else
{
Box_SetEnd(Box1,sDate,sTime,O);
}
}
2022-11-03
783
글번호 163496
답변완료
추세선 쓰리바닥
input : Period(12),선두께(1);
Var:상승색(Red), 하락색(Blue);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/;
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
//ZZ[j+1] = ZZ[j];
}
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
Tx = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 빨강
Text_SetColor(Tx,Blue);
Text_SetStyle(Tx,2,2);
Text_SetSize(tx,7);
//tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine+NumToStr(value11,2)+NewLine);
//Text_SetStyle(tx,2,1);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
#TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]);
#TL_SetColor(TL2[1],RED);
#TL_SetStyle(TL2[1], 3);
#TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]);
#TL_SetColor(TL2[2],RED);
#TL_SetSize(TL2[2],1);
#TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2));
#Text_SetColor(Tx2[2],BWHITE);
#Text_SetStyle(TX2[2],1,1);
#TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]);
#TL_SetColor(TL2[3],RED);
#TL_SetStyle(TL2[3], 3);
#TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]);
#TL_SetColor(TL2[4],RED);
#TL_SetSize(TL2[4],1);
#TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2));
#Text_SetColor(Tx2[4],BWHITE);
#Text_SetStyle(TX2[4],1,0);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_SetEnd(TL2[0],date22,time22,fr[0]);
TL_SetEnd(TL2[1],date22,time22,fr[1]);
TL_SetEnd(TL2[2],date22,time22,fr[2]);
Text_SetLocation(TX2[2],date22,time22,fr[2]);
TL_SetEnd(TL2[3],date22,time22,fr[3]);
TL_SetEnd(TL2[4],date22,time22,fr[4]);
Text_SetLocation(TX2[4],date22,time22,fr[4]);
TL_SetEnd(TL2[5],date22,time22,fr[5]);
TL_SetEnd(TL2[6],date22,time22,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
//ZZ[j+1] = ZZ[j];
}
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
Tx1 = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 파랑
Text_SetColor(Tx1,Red);
Text_SetStyle(Tx1,2,2);
Text_SetSize(tx1,7);
//tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)+NewLine+NumToStr(value11,2));
//Text_SetStyle(tx,2,0);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
TL_SetEnd(TL3[0],date32,time32,fr[0]);
TL_SetEnd(TL3[1],date32,time32,fr[1]);
TL_SetEnd(TL3[2],date32,time32,fr[2]);
Text_SetLocation(TX3[2],date32,time32,fr[2]);
TL_SetEnd(TL3[3],date32,time32,fr[3]);
TL_SetEnd(TL3[4],date32,time32,fr[4]);
Text_SetLocation(TX3[4],date32,time32,fr[4]);
TL_SetEnd(TL3[5],date32,time32,fr[5]);
TL_SetEnd(TL3[6],date32,time32,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
TL_SetSize(TL1,선두께);
//TL_SetEnd(tl,NextBarSdate,NextBarStime,NextBarOpen);
0.35p 내에서 쓰리바닥을 형성하는지를 실시간으로 보기위한 지표입니다.
1.추세선이 음전환될 때, 직전저점과 전전저점의 차이가 상하 관계없이 0.35p 이내이면 상단에 동그라미 표시.
2.동그라미 삭제 시점:직전저점과 전전저점 중에 "높은 저점"을 기준으로하여
가.아래로 -0.35p 도달 전에 양전환시.
나.계속 하락하여 -0.35p를 하향 붕괴할 때.
(동그라미는 생성과 삭제를 반복합니다.) 감사합니다.
2022-11-03
918
글번호 163495
답변완료
타주기 참조 시스템의 연산 속도를 높이려면 ?
안녕하세요.
1.
예스트레이더에서 기본 10틱 차트에 Data2 에는 4분봉을 설정하고, 4분봉이 완성되면 지표 를 계산하여 틱차트에서 매매를 하는 시스템입니다.
지표가 연산을 많이 해야 해서 4분봉이 완성되었을 때 한번만 연산을 하게 만들고 싶습니다.
아래 시스템을 시뮬레이션 해보면 4분에 한 번씩 제대로 실행하고 있지만,
전략실행차트에서 실행을 하면 bn4 는 맞게 나오는 반면, MessageLog 가 틱봉마다 계속 프린트 되고 있습니다.
MessageLog만 나오고 실제 연산은 제가 원하는 대로 4분에 한번만 하고 있는 걸까요?
만약 연산이 계속 되고 있다면 연산을 한번만 할 수 있도록 수식을 수정해 주시면 감사하겠습니다.
만약 연산이 4분에 한번만 이루어지고 있다면 틱 처리 속도를 높이기 위해 컴퓨터나 예스트레이더의 설정을 바꿔 줘야 하는 부분이 있다면 알려 주시면 감사하겠습니다.
vars: T4(0), bn4(0);
T4 = Data2(sTime);
if (T4 != T4[1]) Then {
MessageLog("%.0f %.0f T4 %.0f %.0f bn4 %.0f C4 %.2f", Date, Time, T4[1], T4, bn4, Data2(C[1]));
bn4 = bn4 + 1; // 4분봉 barIndex
//여기에 연산식이 있습니다
}
2.
하이투자증권예스트레이더에 64비트용이 있던데 여기서 해외선물(E-mini S&P 500, E-mini Nasdaq 100 등) 거래가 가능한가요?
감사합니다.
2022-11-03
980
글번호 163494
답변완료
제 수식작성 구성 방식이 잘못되었나요
수식 코드 중에 아래의 수식이 들어가면 검색이 되고 이 수식을 빼면 검색이 되지 않습니다. 혹시 제가 작성하는 수식 방식에 문제가 있나요???
if ( V > nMav * 0.08 ) Then
{
Find(0);
}
3분봉 기준으로 당일 고가를 돌파하는 종목을 검색하는 수식입니다. 당일 분봉에서만 검색하고 싶고요. 제가 작성하는 방식이 잘못된건가요??
///////////////////////////////////////////////////////////////////
//// 종목검색 수식....
input : TargetDate(20221103);
var : nCnt(0), nSum(0), nMav(0), nMav1(0), nMav2(0), nMav3(0);
var : dwCloseRate(0), dwLowRate(0), dwLowCloseRate(0), dwAdjustedRate(0), dwRate(0);
var : bIsCond1(False), bIsCond2(False), bIsCond3(False), bIsCond4(False), bIsCond5(False);
var : nCondTime1(0), nCondTime2(0);
//////////////////////////////////////////////////////////////////////////////////
////// 전역변수 설정.
//////
////// var1 ==> 당일 캔들 인덱스....
////// var2 ==> 과거 (10/20/40일) 최소 일평균거래량
////// var3 ==> 당일 종가 상 고가 캔들 Index
////// var4 ==>
////// Var5 ==>
////// var6 ==>
////// var7 ==>
////// var8 ==> 5EMA의 20EMA 이탈 캔들 Index
////// var9 ==> 5EMA의 60EMA 이탈 캔들 Index
////// var10 ==> 과거 일평균거래량 대비 당일 거래량 비율
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
///// DataCompress = (0:틱, 1:초, 2:분, 3:일, 4:주, 5:월......)
if ( date != date[1] && date == TargetDate) Then
{
nSum = 0;
For nCnt = 1 to 40
{
nSum = nSum + DayVolume(nCnt);
if nCnt == 10 Then nMav1 = INT(nSum / 10);
Else if nCnt == 20 Then nMav2 = INT(nSum / 20);
Else if nCnt == 40 Then nMav3 = INT(nSum / 40);
}
//////////////////////////////////////////////////////////////////////////
//// 3분봉 기준으로으로 캔들 평균거래량
nMav = Min(nMav1, nMav2, nMav3);
var3 = 1;
var4 = H;
Var5 = 0;
Var6 = 0;
bIsCond1 = False;
bIsCond2 = False;
bIsCond3 = False;
bIsCond4 = False;
bIsCond5 = False;
}
else if ( date == TargetDate && nMav > 80000 ) Then
{
dwRate = (C - C[1])/C[1]*100;
dwCloseRate = (C - DayClose(1))/DayClose(1)*100;
dwLowRate = (DayLow(0) - DayClose(1))/DayClose(1)*100;
dwLowCloseRate = (DayClose(0) - DayLow(0))/DayLow(0)*100;
////////////////////////////////////////////////////
///// 이 코드가 들어가면 검색이 되고 이 코드를 빼면 검색이 되지 않아요.
///// 전혀 의미없는 코드 같은데.......
if ( V > nMav * 0.08 ) Then
{
Find(0);
}
//////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
////// 장시작 후 하락하다가 고점 돌파 후 상승전환 한 경우.....
if ( C > H[Var3] && sTime >= 090900 && sTime <= 113000 && bIsCond1 == False ) Then
{
if ( dwCloseRate > 0 && dwLowRate < 0 && dwLowCloseRate > 1.5 ) Then
{
nCondTime1 = sTime;
bIsCond1 = True;
}
}
////////////////////////////////////////////////////////////////////////////////////////////
////// 장시작 직후(10시이전) 거래량을 수반하면서 캔들 등락률이 1% 이상.....
if ( C > H[Var3] && sTime >= 090900 && sTime <= 100100 && bIsCond2 == False ) Then
{
if ( dwRate > 0.8 && dwCloseRate > 0 && (V > DayVolume(1)*0.1 || V > nMav/125*5) ) Then
{
nCondTime2 = sTime;
bIsCond2 = True;
}
}
if ( bIsCond1 == TRUE ) Then
Find(nCondTime1);
if ( bIsCond2 == TRUE ) Then
Find(nCondTime2);
if ( H >= H[Var3] ) Then
{
Var3 = 1;
}
Else
{
Var3 = var3+1;
}
}
2022-11-04
895
글번호 163493
답변완료
MACD + 스토캐스틱 수식 질문입니다.
질문 드립니다!
하고싶은 액션은,
· 스토캐스틱 %D가 과매수 구간 퇴장 후, B)%K가 %D를 하향돌파 & C)MACD가 시그널 선을 하향돌파 시 매도
· 스토캐스틱 %D가 과매도 구간 퇴장 후, B)%K가 %D를 상향돌파 & C)MACD가 시그널 선을 상향돌파 시 매수
여기서 주의점은
1) A)와C)는 누가 먼저 나오든 신호가 켜진 상태
2) 단 B)는 A)신호가 나온 후의 것만 신호접수 (ex.과매수 구간에서 이미 나온 %K %D교차는 무시)
-> 2)의 코딩을 잘 못하겠어서 도움을 요청드립니다.
아래는 사용한 코딩식입니다.
Var1 = StochasticsK(12,5);
Var2 = StochasticsD(12,5,5);
Var3 = MACD(12,26);
Var4 = Ema(Var3,9);
# %D 과열구간 내 추세전환(변곡점) 후, %K %D교차
if CrossDown(Var2, 80) then
if CrossDown(Var1,Var2) Then Condition1 = True;
if CrossDown(Var2,20) Then Condition1 = False;
if CrossUp(Var2, 20) then
if CrossUp(Var1,Var2) Then Condition2 = True;
if Crossup(Var2,80) Then Condition2 = False;
# 매수
if Condition1 == True && CrossDown(Var3,Var4) Then Sell();
# 매도
if Condition2 == True && CrossUp(Var3,Var4) Then Buy();
2022-11-02
1182
글번호 163492
답변완료
수식 문의 드립니다
Inputs: VtyPercent(0.75),ATRperiod(5);
If MarketPosition() <> 1 Then
Buy ("Vty_LE", AtStop, Close + (VtyPercent * ATR(ATRperiod)));
If MarketPosition() <> -1 Then
Sell ("Vty_SE)", AtStop, Close - (VtyPercent * ATR(ATRperiod)));
위 수식어에 해외선물 매매시간을 19:00 ~ 익일 05:30 와 손절100틱 추가의
수식어를 부탁드립니다.
-----------------------
input : Period(12),선두께(2);
Var:하락색(Red), 상승색(Blue);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/;
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
var : box(0),box1(0);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
//ZZ[j+1] = ZZ[j];
}
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
box = box_new(date11,time11,Value11,date12,time12,Value12);
Box_SetColor(box,상승색);
Box_SetFill(box,true);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
//ZZ[j+1] = ZZ[j];
}
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
box = box_new(date11,time11,Value11,date12,time12,Value12);
Box_SetColor(box,하락색);
Box_SetFill(box,true);
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
}
}
----------------------
위 수식어와 그래프는 좀전 고성님이 올리신 추세선지표 입니다.
시스템으로 변경하고자 합니다.
적색 시작 싯점 이후 파란색 시작전까지 바이 청산
파란색 시작 싯점 이후 적색 시작전까지 셀 청산의 시스템을 넣고자합니다.
매매시간은 07:00~ 익일05:55 손절 50틱
2022-11-03
1235
글번호 163491
답변완료
79419 시스템 검토및 수정 부탁드립니다
### 다시부탁 드려요
과거의 신호도 부탁 드려요
@@@@ 79419 번입니다
1,번
input : length(12),reverse(false);
var : hh(0),ll(0),ps(0),pssig(0);
hh = highest(high, length);
ll = lowest(low, length);
if C > hh[1] Then
ps = 1;
if C < ll[1] Then
ps = -1;
pssig = iff(reverse and ps == 1, -1, iff(reverse and ps == -1, 1, ps));
if pssig == 1 then
buy();
if pssig == -1 then
sell();
2,번
input : Period1(5),Period2(10),d1(2),period(40);
var : RSIv(0),rsis(0),stdv(0),t1(0),t2(0),b(0),s(0);
RSIv = RSI(Period1);
RSIs = ema(RSIv,period2);
stdv = std(rsiv,period2);
t1 = ema(ema(ema(C,5),5),5);
t2 = ema(ema(ema(C,10),10),10);
var1 = lrl(c,period)+lrs(c,period);
b = 0;
if RSIV > rsis+d1*stdv Then
b = b+1;
if t1 > t2 Then
b = b+1;
if var1 > var1[1] Then
b = b+1;
s = 0;
if RSIV < rsis-d1*stdv Then
s = s+1;
if t1 < t2 Then
s = s+ 1;
if var1 < var1[1] Then
s = s+ 1;
if b >= 2 Then
buy();
if s >= 2 Then
sell();
3,번
Input : Period(3),Period1(4),Period2(5),Period3(6),Period4(7), LPercent(30), SPercent(65);
var : Relative(0),Relative1(0),Relative2(0),Relative3(0),Relative4(0);
Relative = RSI(Period);
Relative1 = RSI(Period1);
Relative2 = RSI(Period2);
Relative3 = RSI(Period3);
Relative4 = RSI(Period4);
Var : value(0);
value = RSI(Period);
# 매수/매도청산
If Relative > 65 && Relative1 > 65 && Relative2 > 65 && Relative3 > 65
&& Relative4[1] < 65
&& CrossUP(Relative4, sPercent) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(Relative1, lPercent) Then
{
Sell();
}
4,번
input : dayLen(18);
var : ii(0);
Var1 = (close - close[DayLen - 1]) / (DayLen - 1);
Var2 = 0;
For ii = 2 To DayLen - 1 begin
Var2 = Var2 + abs(close[DayLen - ii] - Close[DayLen - 1] - (ii - 1) * Var1);
end;
If Var2 <> 0 Then {
If DayLen / 2 == 0 Then
Var3 = accumN(close, DayLen) - DayLen * close[DayLen - 1] - (DayLen * (DayLen - 2) / 2 + DayLen / 2) * Var1;
Else
Var3 = accumN(close, DayLen) - DayLen * close[DayLen - 1] - DayLen * (DayLen - 1) / 2 * Var1;
If Var3 > 0 Then
Var4 = (Var2 - Var3) / 2 + Var3;
Else
Var4 = (Var2 + Var3) / 2;
Var5 = Var4 / Var2 * 100;
If Var1 > 0 And Var5 < 20 Then
buy("매수", Atmarket);
If Var1 < 0 And Var5 > 80 Then
sell("매도", Atmarket);
}
위 1번 2번 3번 4번 시스템을 하나로 부탁드립니다
## 각각의 신호에 번호 부여 부탁 드립니다
## 첨부사진1 1 2 3 4 시스템 인데 과거 신호 두 없네요
첨부사진2 1번은 오늘만들어주신호 옆사진은 신호식 1번 인데
매수신호가 1과 2번 신호가 상이하네요
2022-11-02
1075
글번호 163490
답변완료
수정부탁드립니다
강조 부탁 드립니다.
Input : short(12), long(26), signal(9);
Var : MACDV(0),MACDS(0),MACDO(0),TX(0);
var : TL(0),T(0);
MACDV = MACD(short, long);
MACDV = ema(MACDV,signal);
MACDO = MACDV-MACDS;
plot1(MACDV,"MACD");
2)강조식 부탁 드립니다.
inputs: bATRLength1(100), bATRMult1(2.9);
vars: bATR1(0), bavg1(0), bdn1(0), bup1(0), btrend1(1), bflag1(0), bflagh1(0), bqqq1(0);
bATR1 = ATR(bATRLength1) * bATRMult1;
bavg1 = (High + Low)/2;
bup1 = bavg1 + bATR1;
bdn1 = bavg1 - bATR1;
if close > bup1[1] then btrend1 = 1;
else if close < bdn1[1] then btrend1 = -1;
if btrend1 < 0 and btrend1[1] > 0 then bflag1 = 1; else bflag1 = 0;
if btrend1 > 0 and btrend1[1] < 0 then bflagh1 = 1; else bflagh1 = 0;
if btrend1 > 0 and bdn1 < bdn1[1] then bdn1=bdn1[1];
if btrend1 < 0 and bup1 > bup1[1] then bup1=bup1[1];
if bflag1 == 1 then bup1 = bavg1 + bATR1;
if bflagh1 == 1 then bdn1 = bavg1 - bATR1;
if btrend1 == 1 then bqqq1 = bdn1; else bqqq1 = bup1;
Plot1(bqqq1,"bqqq1",iff(btrend1 == 1, Red, Blue));
//plot2(MACDS,"MACD cc");
if MACDO > 0 then
{
IF MACDO >= MACDO[1] Then
{
T = 1;
plot3(MACDO,"c1",RED);
}
Else
{
T = 2;
plot3(MACDO,"c1",BLUE);
}
}
else
{
IF MACDO <= MACDO[1] Then
{
T = -1;
plot3(MACDO,"c1",BLACK);
}
Else
{
T = -2;
plot3(MACDO,"c1",GREEN);
}
}
2022-11-02
1074
글번호 163483