답변완료
수식 문의 드립니다.
M5=eavg(C,5);
M10=eavg(C,10);
M20=eavg(C,20);
M60=eavg(C,60);
M120=eavg(C,120);
M240=eavg(C,240);
M480=eavg(C,480);
BH=BBandsUp(20,2);
BC=BBandsC(20,2);
평균=((M5*2)+(M10*2)+(M20*3)+(M60*2)+(M120*3)+(M240*2)+(M480*2)+(BH*1)+(BC*1)) / 18;
평균라인=Tema(평균, 240, 지수);
crossup(c,평균라인)
여기에 해당하는 종목 검색식 부탁드립니다.
감사합니다
2023-04-17
1232
글번호 168246
종목검색
답변완료
종목 검색식 부탁 드립니다.
안녕 하십니까
조목검색식 부탁 드립니다.
m1=ma(c, 기간1, 종류);
m2=ma(c, 기간2, 종류);
m3=ma(c, 기간3, 종류);
m4=ma(c, 기간4, 종류);
이격1=m1-m2;
이격2=m1-m3;
이격3=m1-m4;
조건=이격1<이격2 && 이격2<이격3 && 이격1>0;
조건 &&!조건(1)
기간1 5
기간2 20
기간3 60
기간4 120
조건검색식 부탁 드립니다.
감사합니다.
2023-04-17
1224
글번호 168244
종목검색
답변완료
배열 질문
답변 감사드립니다!!
근데 저는 어떤 원리에서 저게 되는지 궁금합니다
즉
원래 다른 파이썬이나 c에서는
저렇게 for 루프에서
그 다음 인덱스에 대입하면 그 전의 데이터가
지워지잖아요? 근데 예스트레이더는 어떤 원리기에
안 지워지고 저런 식으로 대입되는지요?
예로들면 파이썬에서는
For i in xx:
식으로 하고 저 배열 예제 처럼 하면
그 전의 인덱스 값으로, 즉 예로 a[cnt-1][1]이
1이었고 a[cnt]에 대입한다면 모든 그 후의 인덱스가
다 같은 값이 되잖아요? 예스트레이더는 어떻게
저게 그렇지 않고 되는지요? 애초에
저 스크립트가 한 시점에서만 돌고 나머지 봉 데이터가
불변이라 그런걸까요? 제가 놓친 디테일이 있는건지요?
메커니즘이 궁금합니다
언제나 상세한 답변 감사드립니다!!
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 메뉴얼의 배열 예제 설명
>
안녕하세요
예스스탁입니다.
1
예스랭귀지는 차트기반의 언어입니다.
수식이 차트에 적용되면 차트 첫봉부터 현재봉으로 오면서 값을 계산하고 저장하며
현재시점에서 과거봉의 데이터나 변수값을 가져와서 사용할 수 있게 되어 있습니다.
이전봉의 값을 가져올때는 []안에 봉수를 지정합니다.
모든 데이터, 함수, 변수뒤에 마지막[]은 이전봉 참조를 지칭하게 됩니다.
현재봉인 [0]은 생략이 가능합니다.
2
var : AA(0);
AA = ma(C,20);
일반변수가 위와 같은 경우 AA에는 매봉 20이평의 값을 저장이 되며
이전봉의 값을 가져올때 뒤에 []을 붙이고 봉수를 지정합니다.
AA나 AA[0]은 현재봉 값, AA[1]은 1봉전의 20이평, AA[2]는 2봉전의 20이평값과 같이 가져와 사용 할수 있습니다.
3
배열변수도 마찬가지입니다.
Array : Hval[10](0);
Hval[0][0]은 0번방 현재봉값
Hval[1][0]은 1번방 현재봉값
Hval[2][0]는 2번방 현재봉값입니다.
Hval[0][1]은 0번방 1봉전값
Hval[1][1]은 1번방 1봉전값
Hval[2][1]는 2번방 1봉전값입니다.
위와 같이 각 배열방 뒤에 []를 붙이고 이전봉의 값을 가져와 사용할 수 있습니다.
Hval[0] = h;
for count = 1 to 9
{
Hval[count] = Hval[count][1];//[1]은 한봉전을 의미합니다.
}
위 내용은
우선 0번방에 현재봉 고가를 저장하고
Hval[1]에는 Hval[0]의 1봉전값을 가져와 저장
Hval[2]에는 Hval[1]의 1봉전값을 가져와 저장
.....
Hval[9]에는 Hval[8]의 1봉전값을 가져와 저장한 식입니다.
for문에 앞서[0]번방에 값을 먼저 저장했으므로
[1]~[9]번방은 이전봉에 작성된 값을 가져와 저장한 것입니다.
물론 위식을 아래와 같이 작성될수도 있습니다.
먼저 옮기고 나중에 0번방에 값을 저장하게 하셔도 됩니다.
for count = 9 downto 1
{
Hval[count] = Hval[count-1];
}
Hval[0] = h;
즐거운 하루되세요
> nirvana 님이 쓴 글입니다.
> 제목 : 메뉴얼의 배열 예제 설명
> 안녕하세요! 메뉴얼에 나온 것에 대해 이해가 안 가서 질문 드립니다.
배열에 대한 설명 부분인데요,
Hval이라는 배열에 for 루프로 하는 예시가 있는데
이해가 안 가는 두가지 포인트가 있습니다.
1. 메뉴얼에는
Hval[0] =H을 한 후에
For 루프 안에서
Hval[cnt+1] = Hval[cnt][1]였나요?
그런식으로 하는데
예스트레이더를 처음 봤지만 그냥 일반 코더인 사람을
가정하면
예로 Hval[0]에는 H라는, 1분봉이 메뉴얼의 가정이니
현재 1분봉의 고가값, 값 즉 그냥 "숫자"가 있을 거라고
생각하는데
저 위의 식에서는
cnt가 1인 경우 가정을 해보면
Hval[0][1]을 다시 Hval[1]에 대입합니다.
근데 우리같은 범용 프로그래밍 랭귀지에 익숙한 사고에서는
Hval[0]은 "데이터 타입"은 숫자인데 다시 [0]뒤에 [1]을 붙였습니다.이에 대해 예스트레이더 메뉴얼에
설명이 필요한데 없네요..
추론을 하면 저 H라는 것의 특성이 사실은 그럼 배열이기도 하고 어떤 때는 그냥 숫자값이 대입되기도 한다 를
우리는 추론이 가능한데 정확한 설명이 메뉴얼에 없으니
상당히 혼란스럽습니다...
즉 Hval[0]에 다시 [1]을 붙이는 것으로 보아 애초에 Hval에 대입한 H라는 놈의 정체는
어떤 때는 숫자값, 다시 저렇게 assign 즉 대입연산 시에는 다시 배열처럼 다룰수도 있다는 건데요..
설명을 자세히 해주실수 있는지요? 그리고
관계자분들께 이를 메뉴얼에 반영해주셨으면 합니다.
사실 다른 분들도 이는 헷갈릴만하다고 생각이 드네요.
이는 데이터 타입에 대한 궁금증이고 또한
[1]을 붙인 것도 이유가 헷갈립니다.
이렇기 되면 60분이 지난 시점에 현재 설정 분봉을 1분봉으로 가정한다면 1분이 지났을 때 현재 1분 전 고가봉인데
Hval에는 60분이라는 시간 단위의 최고가를 저장하는 게 용도로 쓰려고 만든 것인데 정작 저장되는 것은 1분 전의 고가이니 1시간 전의 60분 최고가가 저장되는게 아닌 1분 전 고가가 저장되는게 아닌가요? 헷갈려서 제가 논리적으로 건너 뛰어 생각못한 것이 있는 듯한데 설명 도움주시면 감사하겠습니다 ^^
2. 또한 궁금한 것은
저 예제에서 한칸씩 밀리기 한다는 말에 for loop로직이
상식적으로 납득이 안되는 점입니다.
그런 모양의 for loop는
당연히 맨 처음 넣은 값이 x라면
N+1번째 인덱스의 요소에 N번째 값 x를 넣으면
그냥 모든 값이 그 x값으로 되는 로직이고
예스트레이더는 어떤 다른 메커니즘이있어 이걸 막는듯한데
그런 설명이 없네요..
상식적으로 c언어나 파이썬등의 array나 list를 생각하면.예시의 for loop은 좀 이해가 더 안갑니다.
예시의 for 루프는 단지 한칸씩 새로운 고가 갱신때마다
한칸씩만 밀리게 하는게 목적 아닌지요?(제가 잘 맞게 판단한 건지요?)
그렇다면 하나씩 그 전 데이터를 한칸씩 뒤로 미는
알고리즘일텐데
저 for 루프를 돌리면
일반 프로그래밍 상식상으로는 인덱스 1부터 9까지
순서로 하면
1부터 9가 다 같은 값이 되지 않나요?
근데 예스트레이더가 인덱스 숫자가 작은 순서가 맨 마지막이니 for loop의 인덱스를 반대로 한 셈이 되어
맞는 건지요 ㅠㅠ?
예스트레이더의 인덱스가 역순(인덱스가 숫자가 크면 더 그 전 봉값인)이기에 많이 헷갈립니다
언제나 예스트레이더 잘 쓰고 있으며 더욱 잘 쓰고 싶어
미뤄온 질문 심화해서 드립니다:)
긴 글 읽어주셔서 감사드립니다.
예스트레이더 초보 코더에게 도움 잘 부탁드립니다
2023-04-17
1267
글번호 168243
사용자 함수
답변완료
추가문의 드립니다
아침에 작성하여주신 아래수식 정말 감사드립니다!
현재 10봉이후, 선에서 색상의 변화가 생기는데...
이것을 화면상에 색상이 전부 칠해질수는 없을까요?
즉, 선을 하방 돌파시 10봉 이후에 선기준 하방쪽 화면에 전부 색깔이 칠해지는 경우를 말합니다
------------------------------------------------------------------------------------------
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true),N(10);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1),color(0),ii(0);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if Trend == 1 Then
{
if trend != trend[1] Then
{
color = Magenta;
ii = 0;
}
Else
{
ii = ii+1;
if ii >= N Then
{
color = Red;
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
}
}
if Trend == -1 Then
{
if trend != trend[1] Then
{
color = Cyan;
ii = 0;
}
Else
{
ii = ii+1;
if ii >= N Then
{
color = Blue;
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
}
}
if trend == 1 Then
plot1(upv,"Trend",color);
Else
plot1(dnv,"Trend",color);
2023-04-17
1088
글번호 168235
지표
답변완료
피라미딩진입차수청산
연속봉으로 청산하는 수식에 수정을 요청합니다.
아래수식은 별첨파일처럼 피라미딩 수에 상관없이 연속봉 청산이 작동됩니다.
연속봉1은 피라미딩 10개부터 exitlong 작동하고
연속봉2는 피라미딩 7개부터 exitlong 작동되도록 요청합니다.
****************************************************************************************
input : 시작시간(093300),끝시간(093900);
var : h1(0);
input : 고가갱신수(6);
input : uppyra검증1(0),상승pyra1(0),상승N1(440);
input : uppyra검증2(10),상승pyra2(0),상승N2(660);
input : up연속봉1(10),up연속small1(120),up연속large1(220);
input : up연속봉2(10),up연속small2(110),up연속large2(180);
var : T1(0),entry(0);
if Bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then
{
H1 = H;
}
if stime >= 시작시간 and sTime <= 끝시간 Then
{
if h > h1 Then
h1 = h;
}
if sTime > 끝시간 and CrossUp(c,h1) and entry==0 Then
Buy("b1");
if MarketPosition == 0 and #현재 무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == 1 and #직전거래가 매수거래이고
countif(DayHigh(0) != DayHigh(0)[1],BarsSinceExit(1)) >= 고가갱신수 Then #청산이후 당일고가 갱신이 n회이상 있었으면
{
buy("b2");
}
if MarketPosition == 1 and IsEntryName("b1") == true Then
{
if C >= EntryPrice+uppyra검증1 and MaxContracts < 상승N1 Then
buy("bb1",AtStop,LatestEntryPrice(0)+상승Pyra1);
}
if MarketPosition == 1 and IsEntryName("b2") == true then
{
if C >= EntryPrice+uppyra검증2 and MaxContracts < 상승N2 Then
buy("bb2",AtStop,LatestEntryPrice(0)+상승Pyra2);
}
#피라미딩 10개 이상부터 작동
if accumN(iff(C<O,1,0),up연속봉1) == up연속봉1 and ExitDate(1) != sdate and AccumN(abs(C-O), up연속봉1) >= up연속small1 and AccumN(abs(C-O), up연속봉1) < up연속large1 then
ExitLong("연1");
#피라미딩 7개 이상부터 작동
if accumN(iff(C<O,1,0),up연속봉2) == up연속봉2 and ExitDate(1) != sdate and AccumN(abs(C-O), up연속봉2) >= up연속small2 and AccumN(abs(C-O), up연속봉2) < up연속large2 then
ExitLong("연2");
2023-04-24
814
글번호 168233
시스템