커뮤니티
순서관련 문의
2003-12-10 02:04:54
2758
글번호 1585
"예스스탁"님 물어볼거 있습니다. 시스템식 메일로 답변 주시면 감사하겠습니다.
storyimpact@hanmir.com (한미르)
5분봉에서 아래와 같을때,
####매수조건####
1. 스토캐스틱이 스토캐스틱 이동평균 아래서 골든크로스
2. MI(25),ema(MI(25),70) 골든크로스
3. LRS(C,14), LRS(C,28) 골든크로스
이 순서대로 bar가 발생하고 LRS(C,14), LRS(C,30) 골든크로스 때 스토캐스틱K 가 스토캐스틱 이동평균보다 위에 있어야 한다.
문제는 아래와 같이 식을 짜니까 세개가 순서대로 발생하고 LRS(C,14), LRS(C,30) 골든크로스 때 스토캐스틱이 이동평균보다 아래 있어서 매수가 안나간건 좋은데 그 다음 LRS(C,14), LRS(C,30) 골든크로스 때 매수가 나가게 됩니다. 기간설정을 70으로 하고 또 and로 다 묶어서 그런 것 같은데 어떻게 해결하면 되나요?
그리고 MRO로 하면 현재가 기준이 되기 때문에 스토캐스틱 골든 MI골든 그리고 다시 스토캐스틱 골든이 나오면 LRS골든 임에도 매수가 안나오는 문제가 있어서 스토캐스틱 골든 시점을 기준으로 바를 세고 싶은데 가능한지요?
또 지표식 하면의 지표 골든크로스 위치랑 매수시점이 약간의 오차가 생기는데 원래 없는 지표를 억지로 만들어서 그런건가요? 아니면 식이 잘못되서 그런가요?
#####매도####
매도는 반대로
1. LRS(C,14), LRS(C,28) 데드크로스
3. 스토캐스틱 데드크로스
LRS데드 크로스때 스토캐스틱K가 이평아래 있으면 그때 매도하고 위에 있으면 스토캐스틱 데드크로스때 매도한다.
Input : Period1(25);
var : val1(0),val2(0),val3(0),value1(0),value2(0),value3(0),value4(0),value5(0),value6(0),value7(0),value8(0);
Value1 = MI(25);
Value2 = ema(MI(25),70);
val1 = StochasticsK(20, 12);
val2 = StochasticsD(20, 12, 12);
val3 = ema(val1,70);
value3 = LRS(C,14);
value4 = LRS(C,30);
Value5 = MRO(Crossup(val1,val2) and val2<val3,70, 1);
value6 = MRO(Crossup(value1,value2),70, 1);
Value7 = MRO(Crossup(value3,value4),70, 1);
If value5>Value6>value7 and Val1>Val3 and Crossup(value3,value4) then
Buy();
If val1>val3 and Crossdown(val1,val2) then
Exitlong();
else if val1<=val3 and Crossdown(Value3,Value4) then
Exitlong();
고맙습니다.
답변 1
예스스탁 예스스탁 답변
2003-12-10 10:14:12
안녕하세요..예스스탁입니다.
문의하신 내용 답변드립니다.
var : slowK(0), slowD1(0), slowD2(0), MIval(0), MIsig(0), LRSsp(0), LRSlp(0);
var : cond1(0), cond2(0), cond3(0);
MIval = MI(25);
MIsig = ema(MI(25),70);
slowK = StochasticsK(20, 12);
slowD1 = StochasticsD(20, 12, 12);
slowD2 = StochasticsD(20, 12, 70);
LRSsp = LRS(C,14);
LRSlp = LRS(C,30);
if Crossup(slowK,slowD1) and slowD1<slowD2 then
cond1 = i;
if Crossup(MIval,MIsig) then
cond2 = i;
if Crossup(LRSsp,LRSlp) then
cond3 = i;
If cond1 < cond2 < cond3 and slowK > slowD2 and Crossup(LRSsp, LRSlp) then
Buy();
If slowK > slowD2 and Crossdown(slowK,slowD1) then
Exitlong();
if slowK <= slowD2 and Crossdown(LRSsp,LRSlp) then
Exitlong();
작성하신 내용중에 ema(val1,70)은 stochaticsD(20,12,70)과 동일한 내용이기에 문법의 통일성 측면에서 수정했습니다. 또, 내부변수의 명도 의미있는 이름으로 수정했습니다.
청산조건에서 else if 로 작성할 필요는 없어 보여 if 문으로 작성했습니다.
mro를 이용할 경우 기간을 설정하도록 되어 있어서 그 기간이 지나가 버리면 원하지 않는 결과가 나올 수 있습니다. 따라서 위 식에서는 조건만족 시점의 index를 저장하는 방식으로 작성하여 기간에 상관없이 사용할 수 있도록 수정하였습니다.
위의 경우는 골든크로스가 순서대로 발생할 경우에만 매수가 되는 식인데, 만일 순서대로 되지 않고 1. sto골드 2. mi 골드 3. sto골드 4. LRS골드 순으로 발생했을 경우에 mi가 정배열 생태면 매수가 되게 하는 식이라면 위 식과는 다르게 구성해야 됩니다. 이와 관련된 식은 추가로 진입조건을 설명해 주시면 답변드리겠습니다.
그리고 정배열 상태와 골든크로스 상태는 수식 작성에서 엄격히 구분됩니다. 이미 몇봉전에 골든크로스가 발생되어 있고 현재는 정배열 상태라면 골든크로스 라는 표현은 맞지 않습니다. 이 부분을 엄격히 구분해서 설명해 주시면 식 작성에 도움이 되겠습니다.
> 용이 님이 쓴 글입니다.
> 제목 : 순서관련 문의
>
"예스스탁"님 물어볼거 있습니다. 시스템식 메일로 답변 주시면 감사하겠습니다.
storyimpact@hanmir.com (한미르)
5분봉에서 아래와 같을때,
####매수조건####
1. 스토캐스틱이 스토캐스틱 이동평균 아래서 골든크로스
2. MI(25),ema(MI(25),70) 골든크로스
3. LRS(C,14), LRS(C,28) 골든크로스
이 순서대로 bar가 발생하고 LRS(C,14), LRS(C,30) 골든크로스 때 스토캐스틱K 가 스토캐스틱 이동평균보다 위에 있어야 한다.
문제는 아래와 같이 식을 짜니까 세개가 순서대로 발생하고 LRS(C,14), LRS(C,30) 골든크로스 때 스토캐스틱이 이동평균보다 아래 있어서 매수가 안나간건 좋은데 그 다음 LRS(C,14), LRS(C,30) 골든크로스 때 매수가 나가게 됩니다. 기간설정을 70으로 하고 또 and로 다 묶어서 그런 것 같은데 어떻게 해결하면 되나요?
그리고 MRO로 하면 현재가 기준이 되기 때문에 스토캐스틱 골든 MI골든 그리고 다시 스토캐스틱 골든이 나오면 LRS골든 임에도 매수가 안나오는 문제가 있어서 스토캐스틱 골든 시점을 기준으로 바를 세고 싶은데 가능한지요?
또 지표식 하면의 지표 골든크로스 위치랑 매수시점이 약간의 오차가 생기는데 원래 없는 지표를 억지로 만들어서 그런건가요? 아니면 식이 잘못되서 그런가요?
#####매도####
매도는 반대로
1. LRS(C,14), LRS(C,28) 데드크로스
3. 스토캐스틱 데드크로스
LRS데드 크로스때 스토캐스틱K가 이평아래 있으면 그때 매도하고 위에 있으면 스토캐스틱 데드크로스때 매도한다.
Input : Period1(25);
var : val1(0),val2(0),val3(0),value1(0),value2(0),value3(0),value4(0),value5(0),value6(0),value7(0),value8(0);
Value1 = MI(25);
Value2 = ema(MI(25),70);
val1 = StochasticsK(20, 12);
val2 = StochasticsD(20, 12, 12);
val3 = ema(val1,70);
value3 = LRS(C,14);
value4 = LRS(C,30);
Value5 = MRO(Crossup(val1,val2) and val2<val3,70, 1);
value6 = MRO(Crossup(value1,value2),70, 1);
Value7 = MRO(Crossup(value3,value4),70, 1);
If value5>Value6>value7 and Val1>Val3 and Crossup(value3,value4) then
Buy();
If val1>val3 and Crossdown(val1,val2) then
Exitlong();
else if val1<=val3 and Crossdown(Value3,Value4) then
Exitlong();
고맙습니다.
이전글