커뮤니티

64122 재질문입니다(혹시라도 못보실까봐 새로올렸습니다.)

프로필 이미지
midasys
2019-09-18 16:49:22
197
글번호 132050
답변완료
우선 식 짜주셔서 너무 감사드립니다. 혹시 저 부분에서 예를들면 첫번쨰 매수 혹은 매도 싸인에서 진입을 한후 그 다음 추가진입,익청,혹은 손절 시 R값을 해당 포지션 진입한날의 R값으로 계산을 할수있는지 알고싶습니다. 예를들어 크루드오일 기준으로 9월 16일 56.00$에 매수포지션 진입을 하였고 16일 최종R값이(R값이 당일 장중에 계속변하므로) 0.80 이었다면 9월 17일 추가진입,익청,혹은 손절을 16일 R값 기준으로 적용하고싶습니다. 9월 17일 크루드오일가격이 56.80 이라면 피라미딩 조건중 하나인 1R 상승시 1계약 추가매수(매도진입이라면 0.80(16일 R값) 하락시 1계약 추가매도) 할수있는 식이 너무나도 간절합니다. 만약에 매수포지션 기준으로 56.80$에 추가진입이 되었고 17일 R값이 0.90 이었다면 9월 18일 기준으로 크루드 오일이 57.70$ 이라면 전일 R값이 0.90 이기에 1R 상승한 가격 57.70$에 한계약 또 추가매수 가 될것이고. 57.70$에 추가매수가 된후 손절 조건중 하나인 2R하락시(57.70 - 0.90x2(2r)=55.90$) 전 포지션 청산이 될수있게 식을 짜고싶습니다. 설명이 조금 길어서 헷갈리실수도 있지만 혹시 너무 이해가 안가시면 답장 주시면 구두로 설명드려서라도 한번 짜고싶습니다. 고생이 정말 많으십니다. 원하는대로 완성만 되면 개인적으로 식사대접이라도 제공하고싶습니다. 감사합니다. ********************Rule 1,2는 개인적으로 짜봤습니다. 저기에 피라미딩을 더 하려고합니다. 최대 5번까지. 첫 진입가격에 1R만큼 상승했다면 계약수를 1개 추가하고 (매수 진입일시) 진입가격에 1R만큼 하락했다면 계약수를 1개 추가하고 (매도 진입일시) 하는 식입니다. 손절은 똑같이 2R만큼 하락 했다면 시장가 청산 (매수 포지션일시) 2R만큼 상승 했다면 시장가 청산 (매도 포지션일시)******************** > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 고생이 많으십니다. 시스템 문의 드립니다.. > 안녕하세요 예스스탁입니다. 1 수식에서 투자금이 얼마인지 알수 없습니다. 외부변수로 지정하셔야 합니다. 각 종목의 1포인트당 가치는 BigPointValue가 리턴합니다. 아래와 같이 작성하시면 2R손실이나 투자금의 2%에 해당하는 포인트 중 작은값이 적용되어 청산됩니다. 첫진입가격기준이면 entryprice, 피라미딩시 평균가 기준이면 avgEntryprice, 피라미딩시 마지막진입가 기준이면 LatestEntryPrice(0) 로 지정해 주시면 됩니다. input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue)); 2 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수 { if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then Buy(); } If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도 { if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then Sell(); } if MarketPosition == 1 and MaxEntries < 5 Then buy("b",AtStop,LatestEntryPrice(0)+R*1); if MarketPosition == -1 and MaxEntries < 5 Then sell("s",AtStop,LatestEntryPrice(0)-R*1); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue)); 3 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수 { Buy(); } If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도 { Sell(); } if MarketPosition == 1 and MaxEntries < 5 Then buy("b",AtStop,LatestEntryPrice(0)+R*1); if MarketPosition == -1 and MaxEntries < 5 Then sell("s",AtStop,LatestEntryPrice(0)-R*1); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue)); 즐거운 하루되세요 > midasys 님이 쓴 글입니다. > 제목 : 고생이 많으십니다. 시스템 문의 드립니다.. > 우선 R값(변동성)을 정의 해뒀습니다. 저 R값을 토대로 식을 짜고자 합니다. (R값) VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); PLOT1(R,"R"); PLOT2(ATR,"ATR"); ※ R값의 활용 한번의 매매에서 사용가능한 금액 한계, 만약 투자금이 100,000$, 손실한도가 2 %라고 하면 한번에 100,000$ X 2% = 2000$ 만 사용한다. 2R 만큼의 손실만 허용하는 것으로 규칙 EX) . 총 투자금 10만 달러 . 전체 위험 한도 2 % 즉, 2,000 달러 . 원유 선물 매수 신호가 56불에서 발생 . 1R 은 0.41 포인터, 원유선물 1포인터는 1000달러의 가치가 있으므로 1R은 410달러 . 2R 은 0.82 포인터 820 달러 *손절은 첫진입가격에 매수일시 -2R , 매도진입일시 +2R 일경우 손절한다. or -2000$ 이상 손실금이 발생하면 손절한다. (이걸 구현하고싶습니다. 상품마다 달리 적용할수 있는지도 궁금합니다 예를들면 골드선물은 1포인트는 100달러의 가치입니다.) /* ★RULE 1 (일봉) 원칙 : (20일거래일) 최고점을 돌파하면 매수, (10일거래일) 최저점이 붕괴되면 매도 ① 바로 직전 20일거래일 신호를 보고 거래를 해서 수익중 이라면 , 현재 새롭게 나온 4주 신호는 적용X ② 직전 20거래일 신호에 따라 거래를 시작했는데 2R (변동성)손실을 기록했다면, 현재 새롭게 나온 20거래일 신호는 받아들인다. # Rule 1 (일봉) If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수 { if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then Buy(); } If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도 { if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then Sell(); } /* ★RULE 2 (주봉) 원칙 : 11봉(55거래일) 최고점을 돌파하면 매수, 4봉 (20일거래일) 최저치를 붕괴되면 매도 RULE 1 에서 따라잡지 못한 큰 추세를 잡기 위해 사용한다. */ If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수 { Buy(); } If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도 { Sell(); } Rule 1,2는 개인적으로 짜봤습니다. 저기에 피라미딩을 더 하려고합니다. 최대 5번까지. 첫 진입가격에 1R만큼 상승했다면 계약수를 1개 추가하고 (매수 진입일시) 진입가격에 1R만큼 하락했다면 계약수를 1개 추가하고 (매도 진입일시) 하는 식입니다. 손절은 똑같이 2R만큼 하락 했다면 시장가 청산 (매수 포지션일시) 2R만큼 상승 했다면 시장가 청산 (매도 포지션일시) 힘드시겠지만 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-09-18 17:06:05

안녕하세요 예스스탁입니다. 데이타나 함수, 변수뒤에 [BarsSinceEntry]를 붙이시면 진입시점의 값으로 사용이 가능합니다. 이전 답변드린 1,2,3번식에 모두 진입시점의 R을 사용하도록 변경해 드립니다. 1 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R[BarsSinceEntry]*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R[BarsSinceEntry]*2,(투자금*0.02)/BigPointValue)); 2 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수 { if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then Buy(); } If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도 { if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then Sell(); } if MarketPosition == 1 and MaxEntries < 5 Then buy("b",AtStop,LatestEntryPrice(0)+R[BarsSinceEntry]*1); if MarketPosition == -1 and MaxEntries < 5 Then sell("s",AtStop,LatestEntryPrice(0)-R[BarsSinceEntry]*1); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R[BarsSinceEntry]*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R[BarsSinceEntry]*2,(투자금*0.02)/BigPointValue)); 3 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수 { Buy(); } If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도 { Sell(); } if MarketPosition == 1 and MaxEntries < 5 Then buy("b",AtStop,LatestEntryPrice(0)+R[BarsSinceEntry]*1); if MarketPosition == -1 and MaxEntries < 5 Then sell("s",AtStop,LatestEntryPrice(0)-R[BarsSinceEntry]*1); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R[BarsSinceEntry]*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R[BarsSinceEntry]*2,(투자금*0.02)/BigPointValue)); 즐거운 하루되세요 > midasys 님이 쓴 글입니다. > 제목 : 64122 재질문입니다(혹시라도 못보실까봐 새로올렸습니다.) > 우선 식 짜주셔서 너무 감사드립니다. 혹시 저 부분에서 예를들면 첫번쨰 매수 혹은 매도 싸인에서 진입을 한후 그 다음 추가진입,익청,혹은 손절 시 R값을 해당 포지션 진입한날의 R값으로 계산을 할수있는지 알고싶습니다. 예를들어 크루드오일 기준으로 9월 16일 56.00$에 매수포지션 진입을 하였고 16일 최종R값이(R값이 당일 장중에 계속변하므로) 0.80 이었다면 9월 17일 추가진입,익청,혹은 손절을 16일 R값 기준으로 적용하고싶습니다. 9월 17일 크루드오일가격이 56.80 이라면 피라미딩 조건중 하나인 1R 상승시 1계약 추가매수(매도진입이라면 0.80(16일 R값) 하락시 1계약 추가매도) 할수있는 식이 너무나도 간절합니다. 만약에 매수포지션 기준으로 56.80$에 추가진입이 되었고 17일 R값이 0.90 이었다면 9월 18일 기준으로 크루드 오일이 57.70$ 이라면 전일 R값이 0.90 이기에 1R 상승한 가격 57.70$에 한계약 또 추가매수 가 될것이고. 57.70$에 추가매수가 된후 손절 조건중 하나인 2R하락시(57.70 - 0.90x2(2r)=55.90$) 전 포지션 청산이 될수있게 식을 짜고싶습니다. 설명이 조금 길어서 헷갈리실수도 있지만 혹시 너무 이해가 안가시면 답장 주시면 구두로 설명드려서라도 한번 짜고싶습니다. 고생이 정말 많으십니다. 원하는대로 완성만 되면 개인적으로 식사대접이라도 제공하고싶습니다. 감사합니다. ********************Rule 1,2는 개인적으로 짜봤습니다. 저기에 피라미딩을 더 하려고합니다. 최대 5번까지. 첫 진입가격에 1R만큼 상승했다면 계약수를 1개 추가하고 (매수 진입일시) 진입가격에 1R만큼 하락했다면 계약수를 1개 추가하고 (매도 진입일시) 하는 식입니다. 손절은 똑같이 2R만큼 하락 했다면 시장가 청산 (매수 포지션일시) 2R만큼 상승 했다면 시장가 청산 (매도 포지션일시)******************** > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 고생이 많으십니다. 시스템 문의 드립니다.. > 안녕하세요 예스스탁입니다. 1 수식에서 투자금이 얼마인지 알수 없습니다. 외부변수로 지정하셔야 합니다. 각 종목의 1포인트당 가치는 BigPointValue가 리턴합니다. 아래와 같이 작성하시면 2R손실이나 투자금의 2%에 해당하는 포인트 중 작은값이 적용되어 청산됩니다. 첫진입가격기준이면 entryprice, 피라미딩시 평균가 기준이면 avgEntryprice, 피라미딩시 마지막진입가 기준이면 LatestEntryPrice(0) 로 지정해 주시면 됩니다. input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue)); 2 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수 { if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then Buy(); } If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도 { if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then Sell(); } if MarketPosition == 1 and MaxEntries < 5 Then buy("b",AtStop,LatestEntryPrice(0)+R*1); if MarketPosition == -1 and MaxEntries < 5 Then sell("s",AtStop,LatestEntryPrice(0)-R*1); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue)); 3 input : 투자금(100000); VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수 { Buy(); } If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도 { Sell(); } if MarketPosition == 1 and MaxEntries < 5 Then buy("b",AtStop,LatestEntryPrice(0)+R*1); if MarketPosition == -1 and MaxEntries < 5 Then sell("s",AtStop,LatestEntryPrice(0)-R*1); if MarketPosition == 1 Then ExitLong("bx",AtStop,EntryPrice-min(R*2,(투자금*0.02)/BigPointValue)); if MarketPosition == -1 Then ExitShort("sx1",AtStop,EntryPrice+min(R*2,(투자금*0.02)/BigPointValue)); 즐거운 하루되세요 > midasys 님이 쓴 글입니다. > 제목 : 고생이 많으십니다. 시스템 문의 드립니다.. > 우선 R값(변동성)을 정의 해뒀습니다. 저 R값을 토대로 식을 짜고자 합니다. (R값) VAR : R(0), ATR(0); R = Max(ABS(H-L), ABS(C[1]-H), ABS(C[1]-L)); ATR = Average(R, 20); PLOT1(R,"R"); PLOT2(ATR,"ATR"); ※ R값의 활용 한번의 매매에서 사용가능한 금액 한계, 만약 투자금이 100,000$, 손실한도가 2 %라고 하면 한번에 100,000$ X 2% = 2000$ 만 사용한다. 2R 만큼의 손실만 허용하는 것으로 규칙 EX) . 총 투자금 10만 달러 . 전체 위험 한도 2 % 즉, 2,000 달러 . 원유 선물 매수 신호가 56불에서 발생 . 1R 은 0.41 포인터, 원유선물 1포인터는 1000달러의 가치가 있으므로 1R은 410달러 . 2R 은 0.82 포인터 820 달러 *손절은 첫진입가격에 매수일시 -2R , 매도진입일시 +2R 일경우 손절한다. or -2000$ 이상 손실금이 발생하면 손절한다. (이걸 구현하고싶습니다. 상품마다 달리 적용할수 있는지도 궁금합니다 예를들면 골드선물은 1포인트는 100달러의 가치입니다.) /* ★RULE 1 (일봉) 원칙 : (20일거래일) 최고점을 돌파하면 매수, (10일거래일) 최저점이 붕괴되면 매도 ① 바로 직전 20일거래일 신호를 보고 거래를 해서 수익중 이라면 , 현재 새롭게 나온 4주 신호는 적용X ② 직전 20거래일 신호에 따라 거래를 시작했는데 2R (변동성)손실을 기록했다면, 현재 새롭게 나온 20거래일 신호는 받아들인다. # Rule 1 (일봉) If CrossUP(C, Highest(H, 20)[1]) Then # 20거래일 최고점을 돌파하면 매수 { if MarketPosition == 0 or (MarketPosition == -1 and c >= EntryPrice) then Buy(); } If CrossDown(C, Lowest(L, 20)[1]) Then # 10거래일 최저점을 하향돌파하면 매도 { if MarketPosition == 0 or (MarketPosition == 1 and c <= EntryPrice) then Sell(); } /* ★RULE 2 (주봉) 원칙 : 11봉(55거래일) 최고점을 돌파하면 매수, 4봉 (20일거래일) 최저치를 붕괴되면 매도 RULE 1 에서 따라잡지 못한 큰 추세를 잡기 위해 사용한다. */ If CrossUP(C, Highest(H, 11)[1]) Then # 주봉 11개봉 55거래일 최고점을 돌파하면 매수 { Buy(); } If CrossDown(C, Lowest(L, 4)[1]) Then # 주봉 4개봉 20거래일 최저점을 하향돌파하면 매도 { Sell(); } Rule 1,2는 개인적으로 짜봤습니다. 저기에 피라미딩을 더 하려고합니다. 최대 5번까지. 첫 진입가격에 1R만큼 상승했다면 계약수를 1개 추가하고 (매수 진입일시) 진입가격에 1R만큼 하락했다면 계약수를 1개 추가하고 (매도 진입일시) 하는 식입니다. 손절은 똑같이 2R만큼 하락 했다면 시장가 청산 (매수 포지션일시) 2R만큼 상승 했다면 시장가 청산 (매도 포지션일시) 힘드시겠지만 부탁드립니다.