커뮤니티

수식 감사합니다 추가 질문있습니다.

프로필 이미지
여유로운투자
2017-04-25 07:39:17
197
글번호 109125
답변완료
어제 질문드린 것에 대해서 아래와 같이 수식을 작성해 주셨습니다. Var : k(0),buycnt(0); k = 10; #날짜 변경 if Bdate != Bdate[1] Then{ #당일진입횟수 초기화 0 buycnt = 0; #전일이 k%상승일이면 true 아니면 false if DayClose(1) >= DayClose(2)*(1+k/100) Then Condition1 = true; Else Condition1 = false; } #진입이 발생하면 1씩 증가 if CurrentContracts > CurrentContracts[1] Then BuyCnt = BuyCnt+1; #Condition1은 true이고 buyCnt는 0일때만 진입 if Condition1 == true and BuyCnt <= 3 then{ if(DayOpen(0) >= DayClose(1)) then { Buy("b1_1_2",AtLimit,d4(10,0.75),1); } Else if(d4(10,0.75)<=dayopen(0)&&dayopen(0)<DayClose(1)) then { Buy("b1_1_3",AtLimit,d4(10,0.5),1); } Else if(d4(10,0.5)<=dayopen(0)&&dayopen(0)<d4(10,0.75)) then { Buy("b1_1_4",AtLimit,d4(10,0.25),1); } Else if(d4(10,0)<=dayopen(0)&&dayopen(0)<d4(10,0.5)) then { Buy("b1_1_5",AtLimit,d4(10,0),1); } } #매수후 if MarketPosition==1 Then { #매수가 1번 진입된 상태이면 #최근 진입가에서 2% 상승하면 청산 if MaxEntries == 1 Then { ExitLong("s_1",atlimit,LatestEntryPrice(0)*1.02); } #매수가 2번 진입된 상태이면 #최근 진입가에서 1.8% 상승하면 청산 if MaxEntries == 2 Then { ExitLong("s_2",atlimit,LatestEntryPrice(0)*1.018); } #매수가 3번 진입된 상태이면 #최근 진입가에서 1.2% 상승하면 청산 if( MaxEntries == 3 ) Then { ExitLong("s_3",atlimit,LatestEntryPrice(0)*1.012); } } 현재 추가적으로 궁금한 것은 제가 장대 양봉 ex>10% 가 발생이 후 10여일간 동안 그봉을 기준으로 매매를 하려고합니다 간략히 설명드리면 양봉 다음날을 1일로 하여 그날의 시초가에 따라서 위에 같이 4 등분선의 타점을 잡고 진입하려고합니다 어제와 같이 작성된 식을 돌려서 잘작동되어서 좋습니다 추가적으로 원하는 기능을 기준봉이후로 1~4일 동안은 중심선 위(장대양봉가격의 0.75%,0.5% )에만 매매를 하고 5~8일은 중심선 아래(0.25% 0%)에서만 진입 9~10일은 장대양봉가격의 저가(0%)에 진입만을 허용하도록 하고싶습니다. 각각 일별로 전략을 구분하고싶은데 어떻게 구현해야하는지 막막합니다. 또 추가적으로 원하는 것은 예를들어 1타점에 진입을 하고 익절을 못한상태에서 다음 타점 2타점으로 가격이 오면 자동으로 추가 매수하는 것을 구현하고싶습니다.(즉, 위에 10일 동안의 매매에 대한 제한 사항에서 장대봉 이후의 최초 진입 타점에 따라서 추가 진입 타점을 다르게 하고싶습니다.) 또한 1차 매수 후 2% 수익이면 익절 2차 매수 후 1.8%수익이면 익절 3차면 1.5% 4차면 1% 이런식으로 익절 하고 손절에 대해서는 10일 이후나 혹은 10일 안에 기준봉 보다 가격이 아래로 내려가면 손절 처리하고싶습니다 위에 기능을 구현하고싶은데 도와주시면 감사하겠습니다 추가 적으로 어제 말씀해주셨던 함수에 대해서 궁금합니다 maxentries는 포지션의 최대 진입수로 메뉴얼에 나와있는데요 예를들어 오늘 매수 진입을 5번하면 maxentries는 5가 되고 그중 3가지 매수를 청산하면 currententries는 2가 되고 maxentries는 여전히 5가되는지 아니면 이것도 2가되는지 궁금합니다 감사합니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-04-25 16:45:15

안녕하세요 예스스탁입니다. 2 기존에 올려드린 수식에 추가매수를 막는 부분은 없습니다. 수식 적용시에 시스템 트레이딩 설정창의 피라미딩탭에서 다른진입신호만 허용으로 설정하고 적용하시면 됩니다. 10일이 경과하면 15시이후에 청산하는 내용까지만 추가해 드립니다. 이후 내용은 사용자분이 수정보완해 보셔야 합니다. 4 Var : k(0),buycnt(0),Dix(0),standardday(0),ndays(0); k = 10; #날짜 변경 if Bdate != Bdate[1] Then{ #당일진입횟수 초기화 0 buycnt = 0; #전일이 k%상승일이면 standardday에 일수저장 if DayClose(1) >= DayClose(2)*(1+k/100) Then{ standardday = DateToJulian(Sdate[1]); } ndays = DateToJulian(Sdate)-standardday; #10일이내면 true 아니면 false if ndays >= 1 and ndays <= 10 then Condition1 = true; Else Condition1 = false; } #진입이 발생하면 1씩 증가 if CurrentContracts > CurrentContracts[1] Then BuyCnt = BuyCnt+1; #Condition1은 true이고 buyCnt는 0일때만 진입 if Condition1 == true and BuyCnt <= 3 then{ if(DayOpen(0) >= DayClose(1)) then { if ndays >= 1 and ndays <= 4 then Buy("b1_1_2",AtLimit,d4(10,0.75),1); } Else if(d4(10,0.75)<=dayopen(0)&&dayopen(0)<DayClose(1)) then { if ndays >= 1 and ndays <= 4 then Buy("b1_1_3",AtLimit,d4(10,0.5),1); } Else if(d4(10,0.5)<=dayopen(0)&&dayopen(0)<d4(10,0.75)) then { if ndays >= 5 and ndays <= 8 then Buy("b1_1_4",AtLimit,d4(10,0.25),1); } Else if(d4(10,0)<=dayopen(0)&&dayopen(0)<d4(10,0.5)) then { if ndays >= 5 and ndays <= 10 then Buy("b1_1_5",AtLimit,d4(10,0),1); } } #매수후 if MarketPosition==1 Then { #매수가 1번 진입된 상태이면 #최근 진입가에서 2% 상승하면 청산 if MaxEntries == 1 Then { ExitLong("s_1",atlimit,LatestEntryPrice(0)*1.02); } #매수가 2번 진입된 상태이면 #최근 진입가에서 1.8% 상승하면 청산 if MaxEntries == 2 Then { ExitLong("s_2",atlimit,LatestEntryPrice(0)*1.018); } #매수가 3번 진입된 상태이면 #최근 진입가에서 1.2% 상승하면 청산 if( MaxEntries == 3 ) Then { ExitLong("s_3",atlimit,LatestEntryPrice(0)*1.012); } if ndays == 10 and stime >= 150000 Then{ exitlong(); ExitShort(); } } 즐거운 하루되세요 > 여유로운투자 님이 쓴 글입니다. > 제목 : 수식 감사합니다 추가 질문있습니다. > 어제 질문드린 것에 대해서 아래와 같이 수식을 작성해 주셨습니다. Var : k(0),buycnt(0); k = 10; #날짜 변경 if Bdate != Bdate[1] Then{ #당일진입횟수 초기화 0 buycnt = 0; #전일이 k%상승일이면 true 아니면 false if DayClose(1) >= DayClose(2)*(1+k/100) Then Condition1 = true; Else Condition1 = false; } #진입이 발생하면 1씩 증가 if CurrentContracts > CurrentContracts[1] Then BuyCnt = BuyCnt+1; #Condition1은 true이고 buyCnt는 0일때만 진입 if Condition1 == true and BuyCnt <= 3 then{ if(DayOpen(0) >= DayClose(1)) then { Buy("b1_1_2",AtLimit,d4(10,0.75),1); } Else if(d4(10,0.75)<=dayopen(0)&&dayopen(0)<DayClose(1)) then { Buy("b1_1_3",AtLimit,d4(10,0.5),1); } Else if(d4(10,0.5)<=dayopen(0)&&dayopen(0)<d4(10,0.75)) then { Buy("b1_1_4",AtLimit,d4(10,0.25),1); } Else if(d4(10,0)<=dayopen(0)&&dayopen(0)<d4(10,0.5)) then { Buy("b1_1_5",AtLimit,d4(10,0),1); } } #매수후 if MarketPosition==1 Then { #매수가 1번 진입된 상태이면 #최근 진입가에서 2% 상승하면 청산 if MaxEntries == 1 Then { ExitLong("s_1",atlimit,LatestEntryPrice(0)*1.02); } #매수가 2번 진입된 상태이면 #최근 진입가에서 1.8% 상승하면 청산 if MaxEntries == 2 Then { ExitLong("s_2",atlimit,LatestEntryPrice(0)*1.018); } #매수가 3번 진입된 상태이면 #최근 진입가에서 1.2% 상승하면 청산 if( MaxEntries == 3 ) Then { ExitLong("s_3",atlimit,LatestEntryPrice(0)*1.012); } } 현재 추가적으로 궁금한 것은 제가 장대 양봉 ex>10% 가 발생이 후 10여일간 동안 그봉을 기준으로 매매를 하려고합니다 간략히 설명드리면 양봉 다음날을 1일로 하여 그날의 시초가에 따라서 위에 같이 4 등분선의 타점을 잡고 진입하려고합니다 어제와 같이 작성된 식을 돌려서 잘작동되어서 좋습니다 추가적으로 원하는 기능을 기준봉이후로 1~4일 동안은 중심선 위(장대양봉가격의 0.75%,0.5% )에만 매매를 하고 5~8일은 중심선 아래(0.25% 0%)에서만 진입 9~10일은 장대양봉가격의 저가(0%)에 진입만을 허용하도록 하고싶습니다. 각각 일별로 전략을 구분하고싶은데 어떻게 구현해야하는지 막막합니다. 또 추가적으로 원하는 것은 예를들어 1타점에 진입을 하고 익절을 못한상태에서 다음 타점 2타점으로 가격이 오면 자동으로 추가 매수하는 것을 구현하고싶습니다.(즉, 위에 10일 동안의 매매에 대한 제한 사항에서 장대봉 이후의 최초 진입 타점에 따라서 추가 진입 타점을 다르게 하고싶습니다.) 또한 1차 매수 후 2% 수익이면 익절 2차 매수 후 1.8%수익이면 익절 3차면 1.5% 4차면 1% 이런식으로 익절 하고 손절에 대해서는 10일 이후나 혹은 10일 안에 기준봉 보다 가격이 아래로 내려가면 손절 처리하고싶습니다 위에 기능을 구현하고싶은데 도와주시면 감사하겠습니다 추가 적으로 어제 말씀해주셨던 함수에 대해서 궁금합니다 maxentries는 포지션의 최대 진입수로 메뉴얼에 나와있는데요 예를들어 오늘 매수 진입을 5번하면 maxentries는 5가 되고 그중 3가지 매수를 청산하면 currententries는 2가 되고 maxentries는 여전히 5가되는지 아니면 이것도 2가되는지 궁금합니다 감사합니다