커뮤니티

문의드립니다.

프로필 이미지
회원
2014-10-10 14:25:34
297
글번호 79247
답변완료
수고하십니다. 일봉차트에서 전일종가가 단기이평위에 있으면 시가매수하고 전일종가가 단기이평아래에 있으면 시가매도하는 전략에 1%손절매수식을 포함하여 아래와 같이 완성하였습니다. IF C>ma(C,5) THEN Buy("Buy",atmarket); IF C<ma(C,5) THEN Sell("Sell",atmarket); If MarketPosition == 1 and Close <= EntryPrice*(100-1)/100 Then { If !(C<ma(C,5)) Then ExitLong ("ExitLong", Atmarket); } If MarketPosition == -1 and Close >= EntryPrice*(100+1)/100 Then { If !(C>ma(C,5)) Then ExitShort("ExitShort", Atmarket); } 이전략의 총손익을 성능보고서의 총손익과 비교하려고 총손익곡선을 아래와 같이 만들었는데 값이 일치하지 않네요. 슬리피지 각각 1틱씩, 수수료를 포함한 총손익을 Plot할수 있도록 수정해주세요. 여기서 총손익은 가상으로 매매한 총손익을 의미합니다. 그리고 총손익의 20일이평이 아닌 20거래이평을 Plot할 수 있는 방법도 알려주세요. 감사합니다. Var : BEntryPrice(0),SEntryPrice(0),MP(0),BuyPL(0),SellPL(0),NetPL(0),TotalPL(0); If MP <= 0 and C>ma(C,5) Then { BEntryPrice = C; MP = 1; if MP == 1 and MP[1] == -1 Then NetPL = NetPL+(SEntryPrice-C); } If MP >= 0 and C<ma(C,5) Then { SEntryPrice = C; MP = -1; if MP == -1 and MP[1] == 1 Then NetPL = NetPL+(C-BEntryPrice); } If MP == 1 and C <= BEntryPrice*(100-1)/100 Then { If !(C<ma(C,5)) Then { MP = 0; NetPL = NetPL+(C-BEntryPrice); } } If MP == -1 and C >= SEntryPrice*(100+1)/100 Then { If !(C>ma(C,5)) Then { MP = 0; NetPL = NetPL+(SEntryPrice-C); } } if MP == 1 Then { BuyPL = C-BEntryPrice; TotalPL = NetPL+BuyPL; } if MP == -1 Then { SellPL = SEntryPrice-C; TotalPL = NetPL+SellPL; } plot1((TotalPL, "총손익", red); plot2(ma(TotalPL,20), "총손익이평", blue);
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2014-10-10 17:31:14

안녕하세요 예스스탁입니다. 진입청산이 atmarket입니다. if문 만족봉 다음봉의 시가가 진입청산가격입니다. 아래식 참고하시기 바랍니다. 손익계산은 거래당 총 2틱의 비용을 차감하게 작성되었습니다. 거래이평은 청산된 거래만 모아 평균합니다. Var : BEntryPrice(0),SEntryPrice(0),MP(0),BuyPL(0),SellPL(0),NetPL(0),TotalPL(0),cnt(0); var : PLsum(0),Plma(0); Array : PP[29](0); If MP <= 0 and C[1] > ma(C,5)[1] Then { BEntryPrice = Open; MP = 1; if MP == 1 and MP[1] == -1 Then{ NetPL = NetPL + (SEntryPrice-Open-PriceScale*2); PP[0] = (SEntryPrice-Open-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } If MP >= 0 and C[1]<ma(C,5)[1] Then { SEntryPrice = Open; MP = -1; if MP == -1 and MP[1] == 1 Then { NetPL = NetPL+(O-BEntryPrice-PriceScale*2); PP[0] = (O-BEntryPrice-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } If MP == 1 and C[1] <= BEntryPrice*(100-1)/100 Then { If !(C[1]<ma(C,5)[1]) Then { MP = 0; NetPL = NetPL+(Open-BEntryPrice-PriceScale*2); PP[0] = (Open-BEntryPrice-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } If MP == -1 and C[1] >= SEntryPrice*(100+1)/100 Then { If !(C[1]>ma(C,5)[1]) Then { MP = 0; NetPL = NetPL+(SEntryPrice-Open-PriceScale*2); PP[0] = (SEntryPrice-Open-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } if MP == 1 Then { BuyPL = C-BEntryPrice; TotalPL = NetPL+BuyPL; } if MP == -1 Then { SellPL = SEntryPrice; TotalPL = NetPL+SellPL; } Plsum = 0; for cnt = 0 to 19{ PLsum = PLsum+PP[cnt]; } PLma = Plsum/20; plot1(TotalPL, "총손익", red); plot2(PLma , "20거래손익이평", blue); 즐거운 하루되세요 > HI_ch****** 님이 쓴 글입니다. > 제목 : 문의드립니다. > 수고하십니다. 일봉차트에서 전일종가가 단기이평위에 있으면 시가매수하고 전일종가가 단기이평아래에 있으면 시가매도하는 전략에 1%손절매수식을 포함하여 아래와 같이 완성하였습니다. IF C>ma(C,5) THEN Buy("Buy",atmarket); IF C<ma(C,5) THEN Sell("Sell",atmarket); If MarketPosition == 1 and Close <= EntryPrice*(100-1)/100 Then { If !(C<ma(C,5)) Then ExitLong ("ExitLong", Atmarket); } If MarketPosition == -1 and Close >= EntryPrice*(100+1)/100 Then { If !(C>ma(C,5)) Then ExitShort("ExitShort", Atmarket); } 이전략의 총손익을 성능보고서의 총손익과 비교하려고 총손익곡선을 아래와 같이 만들었는데 값이 일치하지 않네요. 슬리피지 각각 1틱씩, 수수료를 포함한 총손익을 Plot할수 있도록 수정해주세요. 여기서 총손익은 가상으로 매매한 총손익을 의미합니다. 그리고 총손익의 20일이평이 아닌 20거래이평을 Plot할 수 있는 방법도 알려주세요. 감사합니다. Var : BEntryPrice(0),SEntryPrice(0),MP(0),BuyPL(0),SellPL(0),NetPL(0),TotalPL(0); If MP <= 0 and C>ma(C,5) Then { BEntryPrice = C; MP = 1; if MP == 1 and MP[1] == -1 Then NetPL = NetPL+(SEntryPrice-C); } If MP >= 0 and C<ma(C,5) Then { SEntryPrice = C; MP = -1; if MP == -1 and MP[1] == 1 Then NetPL = NetPL+(C-BEntryPrice); } If MP == 1 and C <= BEntryPrice*(100-1)/100 Then { If !(C<ma(C,5)) Then { MP = 0; NetPL = NetPL+(C-BEntryPrice); } } If MP == -1 and C >= SEntryPrice*(100+1)/100 Then { If !(C>ma(C,5)) Then { MP = 0; NetPL = NetPL+(SEntryPrice-C); } } if MP == 1 Then { BuyPL = C-BEntryPrice; TotalPL = NetPL+BuyPL; } if MP == -1 Then { SellPL = SEntryPrice-C; TotalPL = NetPL+SellPL; } plot1((TotalPL, "총손익", red); plot2(ma(TotalPL,20), "총손익이평", blue);
프로필 이미지

회원

2014-10-12 14:25:19

답변감사드립니다. 그런데 왜 총손익이 플러스에서 마이너스로 왔다갔다 하는 거죠? 그리고 분봉이 아닌 일봉차트에서 총손익 Plot이 성과보고서 결과와 다른것 같습니다. 일봉차트에서 한번더 검증 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 진입청산이 atmarket입니다. if문 만족봉 다음봉의 시가가 진입청산가격입니다. 아래식 참고하시기 바랍니다. 손익계산은 거래당 총 2틱의 비용을 차감하게 작성되었습니다. 거래이평은 청산된 거래만 모아 평균합니다. Var : BEntryPrice(0),SEntryPrice(0),MP(0),BuyPL(0),SellPL(0),NetPL(0),TotalPL(0),cnt(0); var : PLsum(0),Plma(0); Array : PP[29](0); If MP <= 0 and C[1] > ma(C,5)[1] Then { BEntryPrice = Open; MP = 1; if MP == 1 and MP[1] == -1 Then{ NetPL = NetPL + (SEntryPrice-Open-PriceScale*2); PP[0] = (SEntryPrice-Open-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } If MP >= 0 and C[1]<ma(C,5)[1] Then { SEntryPrice = Open; MP = -1; if MP == -1 and MP[1] == 1 Then { NetPL = NetPL+(O-BEntryPrice-PriceScale*2); PP[0] = (O-BEntryPrice-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } If MP == 1 and C[1] <= BEntryPrice*(100-1)/100 Then { If !(C[1]<ma(C,5)[1]) Then { MP = 0; NetPL = NetPL+(Open-BEntryPrice-PriceScale*2); PP[0] = (Open-BEntryPrice-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } If MP == -1 and C[1] >= SEntryPrice*(100+1)/100 Then { If !(C[1]>ma(C,5)[1]) Then { MP = 0; NetPL = NetPL+(SEntryPrice-Open-PriceScale*2); PP[0] = (SEntryPrice-Open-PriceScale*2); for cnt = 1 to 30{ PP[cnt] = PP[cnt-1][1]; } } } if MP == 1 Then { BuyPL = C-BEntryPrice; TotalPL = NetPL+BuyPL; } if MP == -1 Then { SellPL = SEntryPrice; TotalPL = NetPL+SellPL; } Plsum = 0; for cnt = 0 to 19{ PLsum = PLsum+PP[cnt]; } PLma = Plsum/20; plot1(TotalPL, "총손익", red); plot2(PLma , "20거래손익이평", blue); 즐거운 하루되세요 > HI_ch****** 님이 쓴 글입니다. > 제목 : 문의드립니다. > 수고하십니다. 일봉차트에서 전일종가가 단기이평위에 있으면 시가매수하고 전일종가가 단기이평아래에 있으면 시가매도하는 전략에 1%손절매수식을 포함하여 아래와 같이 완성하였습니다. IF C>ma(C,5) THEN Buy("Buy",atmarket); IF C<ma(C,5) THEN Sell("Sell",atmarket); If MarketPosition == 1 and Close <= EntryPrice*(100-1)/100 Then { If !(C<ma(C,5)) Then ExitLong ("ExitLong", Atmarket); } If MarketPosition == -1 and Close >= EntryPrice*(100+1)/100 Then { If !(C>ma(C,5)) Then ExitShort("ExitShort", Atmarket); } 이전략의 총손익을 성능보고서의 총손익과 비교하려고 총손익곡선을 아래와 같이 만들었는데 값이 일치하지 않네요. 슬리피지 각각 1틱씩, 수수료를 포함한 총손익을 Plot할수 있도록 수정해주세요. 여기서 총손익은 가상으로 매매한 총손익을 의미합니다. 그리고 총손익의 20일이평이 아닌 20거래이평을 Plot할 수 있는 방법도 알려주세요. 감사합니다. Var : BEntryPrice(0),SEntryPrice(0),MP(0),BuyPL(0),SellPL(0),NetPL(0),TotalPL(0); If MP <= 0 and C>ma(C,5) Then { BEntryPrice = C; MP = 1; if MP == 1 and MP[1] == -1 Then NetPL = NetPL+(SEntryPrice-C); } If MP >= 0 and C<ma(C,5) Then { SEntryPrice = C; MP = -1; if MP == -1 and MP[1] == 1 Then NetPL = NetPL+(C-BEntryPrice); } If MP == 1 and C <= BEntryPrice*(100-1)/100 Then { If !(C<ma(C,5)) Then { MP = 0; NetPL = NetPL+(C-BEntryPrice); } } If MP == -1 and C >= SEntryPrice*(100+1)/100 Then { If !(C>ma(C,5)) Then { MP = 0; NetPL = NetPL+(SEntryPrice-C); } } if MP == 1 Then { BuyPL = C-BEntryPrice; TotalPL = NetPL+BuyPL; } if MP == -1 Then { SellPL = SEntryPrice-C; TotalPL = NetPL+SellPL; } plot1((TotalPL, "총손익", red); plot2(ma(TotalPL,20), "총손익이평", blue);