답변완료
수식문의드립니다
안녕하세요
이전에 도움주신 수식에 아래와 같은 조건을 추가하고 싶어 질문드립니다!
수식에 진입 이후 고가로 HB가 경신되도록 되어있는 부분에서
추후 피라미딩을 추가할 예정이라, 진입 이후엔 HB가 변하지 않고, 청산 이후에 진입때 고가로 HB가 업데이트 되도록 만들고 싶습니다
ex) HB, HB+10로 피라미딩 될 때, 진입 이후 고가로 HB가 계속 업데이트 되면, 피라미딩 진입 가격(HB+10)도 변하기 때문
HB 돌파시 1차진입
1차진입때의 HB는 변동 없고, 1차진입때의 고가를 저장
1차진입 청산 이후 HB를 저장한 고가로 업데이트
업데이트된 HB 기준으로 2차진입 & 청산까지 HB는 동일
2차진입 청산 이후, 고가 기준으로 HB 업데이트
...
그래서 이전에 도움주신 수식에서 새로 rHB(); 변수를 선언한 뒤
marketposition이 진입한 상태일때 rHB = highest(H,barssinceentry); 로 업데이트하고
if B>0 && B == Hcount then HB = rHB; 로 HB를 업데이트 하도록 만들었습니다
1차 진입시엔 B가 0이므로, HB 초기치로 돌파진입
1차 청산 이후엔 B = Hcount = 1이므로, 이때 HB=rHB로 업데이트
업데이트된 rHB로 2차진입
2차진입이 되면 B = 1, Hcount = 2 이므로 HB는 업데이트되지 않고, rHB는 고가 경신시 업데이트
2차 청산 이후 B = Hcount = 2가 되며, 2차 진입에서 고가가 경신되었다면 HB 값도 업데이트
...
이렇게 될거라 생각하고 아래와 같이 구성했는데
제가 생각한대로 작동하는 방식인지 확인 부탁드리겠습니다
감사합니다!
input : TT(55700), TD(20220205), N(5) ;
var : HB(14710), LB(14680), e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), rHB(0), rLB(0) ;
e60 = Ema(C,60);
if Condition1 == False and sDate >= TD and sTime >= TT Then
{
Condition1 = true;
Hcount = 0;
Lcount = 0;
T1 = TotalTrades;
}
if Condition1 == true Then
{
B = 0;
S = 0;
if TotalTrades-T1 > 0 Then
{
For cnt = 1 to TotalTrades-T1
{
if MarketPosition(cnt) == 1 Then
{
B = B+1;
}
if MarketPosition(cnt) == -1 Then
{
S = S+1;
}
}
}
Hcount = B + IFf(MarketPosition == 1,1,0);
Lcount = S + IFf(MarketPosition == -1,1,0);
if Hcount < 3 then Buy("b",AtStop,HB,2) ;
if Lcount < 3 then Sell("s",AtStop,LB,2) ;
if B>0 && B == Hcount then HB = rHB;
if S>0 && S == Lcount then LB = rLB;
if marketposition > 0 Then
{
if e60 < HB Then ExitLong("exitL1",AtStop,HB-N);
if e60 >= HB && CrossDown(close, e60) Then ExitLong("exitL2") ;
rHB = Highest(H, BarsSinceEntry) ;
}
if marketposition < 0 Then
{
if e60 > LB Then ExitShort("exitS1",AtStop,LB+N);
if e60 <= LB && CrossUp(close, e60) Then ExitShort("exitS2");
rLB = Lowest(L, BarsSinceEntry);
}
}
2022-02-10
1145
글번호 156181
시스템
답변완료
75857 답변해주신 수식 질문드립니다
안녕하세요
어제 답변주신 수식이 잘 작동하는 것은 확인했습니다 감사합니다!
하지만 어떻게 그런 결과가 나오는지 잘 이해가 되지 않아 관련해 추가적으로 질문드립니다
질문 내용은 시스템 사이사이 해당하는 코드 밑에 적어놨습니다
input : TT(55700), TD(20220205), N(5) ;
var : HB(14710), LB(14680), e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0) ;
e60 = Ema(C,60);
if Condition1 == False and sDate >= TD and sTime >= TT Then
{
Condition1 = true;
Hcount = 0;
Lcount = 0;
T1 = TotalTrades;
}
Q1.
1-1 ) if문에 condition1을 선언 안했는데 condition1 == false가 조건으로 들어간게 무슨 의미이고 어떤 기능을 하나요?
1-2) Hcount, Lcount는 이미 변수 선언시 0으로 선언했는데 여기서 다시 0으로 만드는 이유가 무엇인가요?
1-3) TotalTrades는 처음에 0이고, 시스템을 돌려봐도 T1 = 0으로 변함이 없는데 이게 들어간 이유가 궁금합니다
if Condition1 == true Then
{
B = 0;
S = 0;
Q2. B, S 또한 처음 선언시 0으로 선언되었는데 다시 여기서 0으로 설정하는 이유가 뭔가요?
if TotalTrades-T1 > 0 Then
{
For cnt = 1 to TotalTrades-T1
{
if MarketPosition(cnt) == 1 Then
{
B = B+1;
}
if MarketPosition(cnt) == -1 Then
{
S = S+1;
}
}
}
Hcount = B + IFf(MarketPosition == 1,1,0);
Lcount = S + IFf(MarketPosition == -1,1,0);
if Hcount < 3 then Buy("b",AtStop,HB,2) ;
if Lcount < 3 then Sell("s",AtStop,LB,2) ;
Q3. Hcount, Lcount가 사용되는 이유가 뭔가요?
수식을 봤을 때 한번의 진입과 청산에서 Hcount는 진입 시점에 +1, B는 청산시점에 +1이 되는 것으로 보이는데
4번째 진입을 막아야 하는 상황인 3번째 진입-청산이 끝난 상황에선 B도 3이기 때문에 Hcount 대신 B를 써도 되지 않나요?
if marketposition > 0 Then
{
if e60 < HB Then ExitLong("exitL1",AtStop,HB-N);
if e60 >= HB && CrossDown(close, e60) Then ExitLong("exitL2") ;
HB = Highest(H, BarsSinceEntry) ;
}
if marketposition < 0 Then
{
if e60 > LB Then ExitShort("exitS1",AtStop,LB+N);
if e60 <= LB && CrossUp(close, e60) Then ExitShort("exitS2");
LB = Lowest(L, BarsSinceEntry);
}
}
의도한대로 잘 작동하게 짜주셔서 다시한번 감사합니다!
그래도 제가 정확히 이해를 하고있어야 나중에 사용하다 필요에 따라 수정 할 수 있을것 같아 부득이하게 디테일한 부분들에 대해 질문을 드렸습니다ㅠ
가능한만큼 답변해주시면 감사하겠습니다!
감사합니다
2022-02-10
1160
글번호 156171
시스템
답변완료
75859 수식 수정 부탁드립니다
<수정 질문1>
c<mav1 인 경우 mav1 의 당일 최고치를 표시--->c<mav1 인 경우 mav1 의 당일 최저치 표시
c<mav2 인 경우 mav2 의 당일 최고치를 표시--->c<mav2 인 경우 mav2 의 당일 최저치 표시
c>mav1 인 경우 mav1 의 당일 최저치를 표시--->c>mav1 인 경우 mav1 의 당일 최고치 표시
c>mav2 인 경우 mav2 의 당일 최저치를 표시--->c>mav2 인 경우 mav2 의 당일 최고치 표시
감사합니다
-------------------------------------------
<전일 질문>
일봉 5ma ,20ma를 틱 차트에 구현하는 수식
<수정 질문1>
c<mav1 인 경우 mav1 의 당일 최고치를 표시
c<mav2 인 경우 mav2 의 당일 최고치를 표시
c>mav1 인 경우 mav1 의 당일 최저치를 표시
c>mav2 인 경우 mav2 의 당일 최저치를 표시
<수정 질문2>
전일 종가 기준 일봉 5ma ,20ma를 금일 틱 차트에 구현하는 수식
감사합니다
----------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : P1(5),P2(20);
var : cnt(0);
var : sumV1(0),sumV2(0);
var : mav1(0),mav2(0);
sumV1 = 0;
sumV2 = 0;
for cnt = 0 to P2
{
if cnt < P1 Then
sumV1 = sumV1+DayClose(cnt);
if cnt < P2 Then
sumV2 = sumV2+DayClose(cnt);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
plot1(mav1);
plot2(mav2);
즐거운 하루되세요
> 유튜버 님이 쓴 글입니다.
> 제목 : 지표 질문입니다
> 일봉 5ma ,20ma를 틱 차트에 구현하는 수식
감사합니다
2022-02-09
949
글번호 156166
지표