늘 고맙습니다.
가르쳐주신 것을 보고 또 보면서 뭐에 막혀서 진도가 못나가고 있는지 조금은 알 거 같습니다.
그런데 말씀해주실 때는 알 거 같은데 아직도 헤매고 있는 부분이 있어 가르침을 부탁드립니다.
*** 원격준비하고 있겠습니다.
제 차례가 되면 전화드리겠습니다.
A. 금일 현재봉에서
전일고가, 전일저가와의 거리를 찾고 싶습니다.
전일고가 발생후 전일저가가 발생하고 금일 현재가가 나온건지 반대인건지 비교하고 싶어서입니다.
가르쳐주신 돌파자리 찾는 방법을 응용해서 만들어 봤는데 맞는지 모르겠습니다.
검토 부탁드립니다. DL과 DH를 비교해서 돌려보면 맞게 나오는 것 같긴 합니다.
### 전일고가, 전일저가와의 거리 비교
var :dh(-1),dL(-1),Dhi(0),DLi(0);
# 전일고가와 전일저가는 반드시 있는 값인데-1을 써도 되는건지???
if DayHigh(1)==H Then
dh=0;
dhi=Index;
if dh==1 and dhi>0 and DayHigh(1)!=H Then
dh=dh+1;
# 전일고가 찍은 자리와의 거리
#####################
if DayLow(1)==L Then
dL=0;
dLi=Index;
if dL==0 and dLi>0 and DayLow(1)!=L Then
dL=dL+1;
# 전일저가 찍은 자리와의 거리
위의 값을 저장해놓고 다른 조건식에서 아래와 같이 사용하려고 합니다.
if dL<dH then ## 전일고점을 먼저 찍은 후 저점을 찍었다면.
B. 가르침에 의거해서 진입과 청산의 기본적인 틀을 만들어보았습니다.
# 종가진입했을 때 청산법은 이해가 다 되었습니다. 그래서 생략. 진입캔들에서만 급등락시 청산이 아니라 이후 시간이 지나도 하나의 캔들에서 급등락이 나오면 청산이 되는 방식이더군요.
# 청산이 어떻게 될 지 모르니 경우의 수를 일단 3가지 방식으로 병기해서 작성하고 나열해놓았습니다.
# 여기서 제가 아직 해결하지 못한 것이 아래 진입식을 보면 조건이 상태를 나타내는 방식입니다. 이때는 "가" 상태였다가 "나" 상태로 바뀌고 "다" 상태로 바뀌면 문제없이 진입이 됩니다.
그런데 "가" - "나" - "가" - "다" 이런 식으로 전개가 되게 되면 최종적인 "다"로 넘어가지 않습니다. 설명을 해주셨는데 아직 제 꺼로 못만들었습니다.
# 또 한가지는 청산식 마지막 방식을 보면 조건이 상태가 아니라 사건 발생으로 되어 있습니다.
사건발생으로 조건을 만들어서 돌려보면 단절이 되어 끝까지 이어지질 않습니다. 이경우 처리를 어떻게 해야 하는지요? countif 함수를 써서 사건이 있었다. 로 만들어야 되나요? 다른 방법은 뭐가 있는지요?
# 또다른 한가지는 진입과 청산이후 초기화 하는 방법입니다.
진입에서는 진입방법이 한가지니까 초기화를 진입실행 바로 다음에 한번만 해주면 될 거 같은데요. 진입후 즉시 청산 위의 자리에 해주나요? 아래 t1=0; 해준것처럼요.
t1만 초기화 해주면 되나요? 다른 값들도 초기화 해주어야 되나요? 돌려봤을 땐 t1만 해줘도 될 것 같긴 한데 경우의 수를 다 알수가 없어서요.
그리고 청산식에서 초기화는 맨 아래 한번만 해주면 되나요? 아니면 아래식처럼 각각 청산실행자리 아래에 모두 해주어야 되나요?
# 진입과 청산이후 초기화를 해주면 재진입을 제한하기 위해 사용했던 condithon1 을 사용하지 않아도 되나요?
1. 진입
가. if 이평60>이평120 and 이평20>이평60 and 이평5<이평20 then
{
t1=1;
i1=index;
}
나. if t1==1 and i1>0 and 이평5>이평20 then
{
t1=2
i2=index;
}
다. if t1==2 and i2>0 then
{
buy("bb");
t1=0;
# onclose일때 청산법 생략
}
if MarketPosition == 1 Then
{
# atlimit,atstop일때 청산법 생략
t1=0;
}
if MarketPosition == 1 Then
# 위 2가지가 아닌 경우 청산법
{
if crossup(이평5,이평240) then
{
k1=1;
r1=index;
}
if crossdown(이평5,이평20) then
{
k1=2;
r2=index;
}
if crossup(이평5,이평20) then
{
k1=3;
r3=index;
}
if k1==3 and re>0 then
exitlong();
k1=0;
{
답변 1
예스스탁
예스스탁 답변
2024-05-20 13:49:56
> 산골소년 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 늘 고맙습니다.
가르쳐주신 것을 보고 또 보면서 뭐에 막혀서 진도가 못나가고 있는지 조금은 알 거 같습니다.
그런데 말씀해주실 때는 알 거 같은데 아직도 헤매고 있는 부분이 있어 가르침을 부탁드립니다.
*** 원격준비하고 있겠습니다.
제 차례가 되면 전화드리겠습니다.
A. 금일 현재봉에서
전일고가, 전일저가와의 거리를 찾고 싶습니다.
전일고가 발생후 전일저가가 발생하고 금일 현재가가 나온건지 반대인건지 비교하고 싶어서입니다.
가르쳐주신 돌파자리 찾는 방법을 응용해서 만들어 봤는데 맞는지 모르겠습니다.
검토 부탁드립니다. DL과 DH를 비교해서 돌려보면 맞게 나오는 것 같긴 합니다.
### 전일고가, 전일저가와의 거리 비교
var :dh(-1),dL(-1),Dhi(0),DLi(0);
# 전일고가와 전일저가는 반드시 있는 값인데-1을 써도 되는건지???
if DayHigh(1)==H Then
dh=0;
dhi=Index;
if dh==1 and dhi>0 and DayHigh(1)!=H Then
dh=dh+1;
# 전일고가 찍은 자리와의 거리
#####################
if DayLow(1)==L Then
dL=0;
dLi=Index;
if dL==0 and dLi>0 and DayLow(1)!=L Then
dL=dL+1;
# 전일저가 찍은 자리와의 거리
위의 값을 저장해놓고 다른 조건식에서 아래와 같이 사용하려고 합니다.
if dL<dH then ## 전일고점을 먼저 찍은 후 저점을 찍었다면.
B. 가르침에 의거해서 진입과 청산의 기본적인 틀을 만들어보았습니다.
# 종가진입했을 때 청산법은 이해가 다 되었습니다. 그래서 생략. 진입캔들에서만 급등락시 청산이 아니라 이후 시간이 지나도 하나의 캔들에서 급등락이 나오면 청산이 되는 방식이더군요.
# 청산이 어떻게 될 지 모르니 경우의 수를 일단 3가지 방식으로 병기해서 작성하고 나열해놓았습니다.
# 여기서 제가 아직 해결하지 못한 것이 아래 진입식을 보면 조건이 상태를 나타내는 방식입니다. 이때는 "가" 상태였다가 "나" 상태로 바뀌고 "다" 상태로 바뀌면 문제없이 진입이 됩니다.
그런데 "가" - "나" - "가" - "다" 이런 식으로 전개가 되게 되면 최종적인 "다"로 넘어가지 않습니다. 설명을 해주셨는데 아직 제 꺼로 못만들었습니다.
# 또 한가지는 청산식 마지막 방식을 보면 조건이 상태가 아니라 사건 발생으로 되어 있습니다.
사건발생으로 조건을 만들어서 돌려보면 단절이 되어 끝까지 이어지질 않습니다. 이경우 처리를 어떻게 해야 하는지요? countif 함수를 써서 사건이 있었다. 로 만들어야 되나요? 다른 방법은 뭐가 있는지요?
# 또다른 한가지는 진입과 청산이후 초기화 하는 방법입니다.
진입에서는 진입방법이 한가지니까 초기화를 진입실행 바로 다음에 한번만 해주면 될 거 같은데요. 진입후 즉시 청산 위의 자리에 해주나요? 아래 t1=0; 해준것처럼요.
t1만 초기화 해주면 되나요? 다른 값들도 초기화 해주어야 되나요? 돌려봤을 땐 t1만 해줘도 될 것 같긴 한데 경우의 수를 다 알수가 없어서요.
그리고 청산식에서 초기화는 맨 아래 한번만 해주면 되나요? 아니면 아래식처럼 각각 청산실행자리 아래에 모두 해주어야 되나요?
# 진입과 청산이후 초기화를 해주면 재진입을 제한하기 위해 사용했던 condithon1 을 사용하지 않아도 되나요?
1. 진입
가. if 이평60>이평120 and 이평20>이평60 and 이평5<이평20 then
{
t1=1;
i1=index;
}
나. if t1==1 and i1>0 and 이평5>이평20 then
{
t1=2
i2=index;
}
다. if t1==2 and i2>0 then
{
buy("bb");
t1=0;
# onclose일때 청산법 생략
}
if MarketPosition == 1 Then
{
# atlimit,atstop일때 청산법 생략
t1=0;
}
if MarketPosition == 1 Then
# 위 2가지가 아닌 경우 청산법
{
if crossup(이평5,이평240) then
{
k1=1;
r1=index;
}
if crossdown(이평5,이평20) then
{
k1=2;
r2=index;
}
if crossup(이평5,이평20) then
{
k1=3;
r3=index;
}
if k1==3 and re>0 then
exitlong();
k1=0;
{