커뮤니티

수식문의드립니다

프로필 이미지
jshwang2
2022-01-28 02:49:41
1193
글번호 155881
답변완료
1. 변수 초기치 설정 돌파가격 HB, LB의 초기치를 지정가로 정해놓고 지정가 돌파시 매수, 청산시 진입 이후 고가로 HB, LB 업데이트해 업데이트된 가격으로 다시 조건이 되면 재진입 이렇게 구현하고 싶은데 아래와 같이 만들면 초기치가 설정이 안됩니다 var : HB(13990), LB(13985), e60(0); e60 = Ema(C,5); if CrossUp(C, HB) Then Buy() ; if CrossDown(C, LB) Then Sell() ; if CrossDown(HB, e60) Then Begin ExitLong(); HB = Highest(H, BarsSinceEntry) ; End; if CrossUp(LB, e60) Then Begin ExitShort(); LB = Lowest(L, BarsSinceEntry); End; messagelog로 확인해보면 HB, LB 값이 안뜨고 1.#QNAN00000 이런게 뜨네요 어떤 부분이 잘못된건지 확인 부탁드립니다 2. marketposition initial value 시스템을 실행하면 실행 이전에 차트상의 조건 때문인지 marketposition이 처음엔 -1, 1로 잡혀있고 한번 체결되고 나면 그때부터 제대로 잡히는데 실제 진입 이전의 marketposition 초기치를 0으로 만들고, 이후 업데이트 하도록 하려면 어떻게 해야할까요? 3. 이전 도와주셨던 식 질문 HB 상향돌파시 매수진입, HB -10이면 손절 LB 하향돌파시 매도진입, LB + 10이면 손절 이 조건에서 청산을 봉 완성 이전 현재가가 손절가에 도달했을 때 바로 청산되도록 만들고 싶다 요청드렸고 아래와 같이 작성해 주셨고, 작성해주신 부분에 대해 질문이 있습니다 input : HB(14230), LB(14220) ; if MarketPosition <= 0 Then Buy("b",AtStop,HB); if MarketPosition >= 0 Then Sell("s",AtStop,LB); if MarketPosition == 1 Then ExitLong("bx1",AtStop,HB-10); if MarketPosition == -1 Then ExitShort("sx1",AtStop,HB+10); 진입시 marketposition이 매수일땐 0이하, 매도일땐 0이상인 이유가 무엇인가요? 그리고 이 조건에선 진입이 정확이 어떻게 되는건가요? HB, LB에 매수매도가 걸려있는건가요? 4. "최근 100봉 ATR(14)의 최대값"을 쓰고 싶은데 어떻게 구할 수 있는지 부탁드립니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-01-28 13:21:45

안녕하세요 예스스탁입니다. 1 1.#QNAN00000 위 내용은 계산은 할수 없다라는 내용입니다. if CrossDown(HB, e60) Then Begin ExitLong(); HB = Highest(H, BarsSinceEntry) ; End; 위 내용에서 HB = Highest(H, BarsSinceEntry) ;는 if문에 소속이 됩니다. 진입이 들어가기 전에 해당 조건이 만족하게 되면 BarsSinceEntry은 진입중이 아니므로 0이고 highest(H,0)이 되어 계산할수 없는 내용이됩니다. HB에 저장된 값이 N/A로 변경되기에 이후 진입도 발생할수 업습니다. 작성하신 내용에서는 진입이 발생한 후에 지정한 조건이 만족하면 청산되고 값이 저장되게 하셔야 합니다. var : HB(13990), LB(13985), e60(0); e60 = Ema(C,5); if CrossUp(C, HB) Then Buy() ; if CrossDown(C, LB) Then Sell() ; if MarketPosition == 1 and CrossDown(HB, e60) Then Begin ExitLong(); HB = Highest(H, BarsSinceEntry) ; End; if MarketPosition == -1 and CrossUp(LB, e60) Then Begin ExitShort(); LB = Lowest(L, BarsSinceEntry); End; 2 marketposition은 차트 신호상 포지션을 리턴하는 함수입니다. 실제 계좌내용으로 값을 지정할 수 없습니다. 모든 포지션 함수는 차트 신호상의 내용을 리턴합니다. 실제계좌의 내용을 리턴하지 않습니다. 올리신 내용은 신호자체를 지정한 일시이후에 발생하게 하셔야 합니다. 오늘부터 시스템을 자동매매로 거신다면 오늘 날짜와 시간을 지정해서 지정한 이후부터 신호가 발생하게 하셔야 합니다. input : 날짜(20220128),시간(90000); var : HB(13990), LB(13985), e60(0); e60 = Ema(C,5); if sDate >= 날짜 and sTime >= 시간 Then Condition1 = true; if Condition1 == true Then { if CrossUp(C, HB) Then Buy() ; if CrossDown(C, LB) Then Sell() ; if MarketPosition == 1 and CrossDown(HB, e60) Then Begin ExitLong(); HB = Highest(H, BarsSinceEntry) ; End; if MarketPosition == -1 and CrossUp(LB, e60) Then Begin ExitShort(); LB = Lowest(L, BarsSinceEntry); End; } 3 MarketPosition은 신호상 무포지션이면 0, 매수포지션이면 1, 매도포지션이면 -1을 리턴합니다 MarketPosition <= 0은 신호상 현재봉이 무포지션이거나 매도포지션이라는 내용이고 MarketPosition >= 0은 신호상 현재봉이 무포지션이거나 매수포지션이라는 내용입니다. 즉 매수는 현재봉이 무포지션이거나 반대포지션인 매도포지션상태에서만 발생하게 하고 매도는 현재봉이 무포지션이거나 반대포지션인 매수포지션 상태에서만 발생하라는 내용입니다. 4 var1 = ATr(14); Var2 = Highest(var1,100); 즐거운 명절 되시길 바랍니다. > jshwang2 님이 쓴 글입니다. > 제목 : 수식문의드립니다 > 1. 변수 초기치 설정 돌파가격 HB, LB의 초기치를 지정가로 정해놓고 지정가 돌파시 매수, 청산시 진입 이후 고가로 HB, LB 업데이트해 업데이트된 가격으로 다시 조건이 되면 재진입 이렇게 구현하고 싶은데 아래와 같이 만들면 초기치가 설정이 안됩니다 var : HB(13990), LB(13985), e60(0); e60 = Ema(C,5); if CrossUp(C, HB) Then Buy() ; if CrossDown(C, LB) Then Sell() ; if CrossDown(HB, e60) Then Begin ExitLong(); HB = Highest(H, BarsSinceEntry) ; End; if CrossUp(LB, e60) Then Begin ExitShort(); LB = Lowest(L, BarsSinceEntry); End; messagelog로 확인해보면 HB, LB 값이 안뜨고 1.#QNAN00000 이런게 뜨네요 어떤 부분이 잘못된건지 확인 부탁드립니다 2. marketposition initial value 시스템을 실행하면 실행 이전에 차트상의 조건 때문인지 marketposition이 처음엔 -1, 1로 잡혀있고 한번 체결되고 나면 그때부터 제대로 잡히는데 실제 진입 이전의 marketposition 초기치를 0으로 만들고, 이후 업데이트 하도록 하려면 어떻게 해야할까요? 3. 이전 도와주셨던 식 질문 HB 상향돌파시 매수진입, HB -10이면 손절 LB 하향돌파시 매도진입, LB + 10이면 손절 이 조건에서 청산을 봉 완성 이전 현재가가 손절가에 도달했을 때 바로 청산되도록 만들고 싶다 요청드렸고 아래와 같이 작성해 주셨고, 작성해주신 부분에 대해 질문이 있습니다 input : HB(14230), LB(14220) ; if MarketPosition <= 0 Then Buy("b",AtStop,HB); if MarketPosition >= 0 Then Sell("s",AtStop,LB); if MarketPosition == 1 Then ExitLong("bx1",AtStop,HB-10); if MarketPosition == -1 Then ExitShort("sx1",AtStop,HB+10); 진입시 marketposition이 매수일땐 0이하, 매도일땐 0이상인 이유가 무엇인가요? 그리고 이 조건에선 진입이 정확이 어떻게 되는건가요? HB, LB에 매수매도가 걸려있는건가요? 4. "최근 100봉 ATR(14)의 최대값"을 쓰고 싶은데 어떻게 구할 수 있는지 부탁드립니다