커뮤니티

꺼꾸로 해보고싶은데요

프로필 이미지
회원
2014-01-25 22:10:50
203
글번호 71874
답변완료
안녕하세요 예스스탁 운영자님 테스트중 마이너스 -105 pt 네요 아래식 에서 모든 시스템 전체를 꺼꾸로 작성하려는데요 제가 실력이 안되어 부탁드립니다 수정은 어떻게하면 되나요? 감사드립니다 input : N(5); var : unit(0); var : entry(0),sumPL(0),Win(0),unitPL(0),cnt(0),count(0); var : entry1(0),sumPL1(0),Win1(0),unitPL1(0); var : sumdayentry(0),sumdayUnitPL(0),sumdaySumPL(0),sumdayWin(0); Array : dayentry[30](0),daysumPL[30](0),dayWin[30](0),dayunitPL[30](0); if ema(c,20) > ema(c,60) then unit=2 ; else if ema(c,50) > ema(c,20) and ema(C,20) >ema(c,60) then unit=3 ; else unit=1; if crossup(c,ema(c,20)) then buy("b1",atmarket,def,unit); if crossdown(c,ema(c,20)) then sell("s1",atmarket,def,unit); if marketposition == 1 then exitlong("b1x",atstop,Highest(H,barsSinceEntry+1)-atr(20)*2); if marketposition == -1 then exitshort("s1x",atstop,lowest(L,barsSinceEntry+1)+atr(20)*2); if date > date[1]+30 Then{ entry = 0; UnitPL = 0; SumPL = 0; Win = 0; } if BarsSinceExit(1) == 1 Then{ entry = entry+1; unitPL = unitPL + (PositionProfit(1)/CurrentContracts[BarsSinceEntry(1)]); sumPL = sumPL + PositionProfit(1); if PositionProfit(1) > 0 Then Win = win+1; } if date != date[1] Then{ entry1 = entry[1]; UnitPL1 = UnitPL[1]; SumPL1 = SumPL[1]; Win1 = Win[1]; } if date != date[1] Then{ dayentry[0] = 0; dayUnitPL[0] = 0; daySumPL[0] = 0; dayWin[0] = 0; for count = 1 to 29{ dayentry[count] = dayentry[count-1][1]; dayUnitPL[count] = dayUnitPL[count-1][1]; daySumPL[count] = daySumPL[count-1][1]; dayWin[count] = dayWin[count-1][1]; } } if MarketPosition != MarketPosition[1] and MarketPosition[1] != 0 Then{ dayentry[0] = dayentry[0]+1; dayunitPL[0] = dayunitPL[0] + (PositionProfit(1)/CurrentContracts[BarsSinceEntry(1)]); daysumPL[0] = daysumPL[0] + PositionProfit(1); if PositionProfit(1) > 0 Then dayWin[0] = daywin[0]+1; } sumdayentry = 0; sumdayUnitPL = 0; sumdaySumPL = 0; sumdayWin = 0; for cnt = 1 to N { sumdayentry = sumdayentry+dayentry[cnt]; sumdayUnitPL = sumdayUnitPL+dayUnitPl[cnt]; sumdaySumPL = sumdaySumPL+daysumPL[cnt]; sumdayWin = sumdayWin+Daywin[cnt]; } MessageLog("월거래수 %.f 1당누적손익 %.2f 전체손익 %.2f 수익거래횟수 %.2f 승률 %.f",entry1,unitPL1,sumPL1,Win1,Win1/entry1*100); MessageLog("N일거래수 %.f 1당누적손익 %.2f 전체손익 %.2f 수익거래횟수 %.2f 승률 %.f",sumdayentry,sumdayunitPL,sumdaysumPL,sumdayWin,sumdayWin/sumdayentry*100);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-01-27 10:09:51

안녕하세요 예스스탁입니다. input : N(5); var : unit(0); var : entry(0),sumPL(0),Win(0),unitPL(0),cnt(0),count(0); var : entry1(0),sumPL1(0),Win1(0),unitPL1(0); var : sumdayentry(0),sumdayUnitPL(0),sumdaySumPL(0),sumdayWin(0); Array : dayentry[30](0),daysumPL[30](0),dayWin[30](0),dayunitPL[30](0); if ema(c,20) > ema(c,60) then unit=2 ; else if ema(c,50) > ema(c,20) and ema(C,20) >ema(c,60) then unit=3 ; else unit=1; if crossup(c,ema(c,20)) then sell("s1",atmarket,def,unit); if crossdown(c,ema(c,20)) then buy("b1",atmarket,def,unit); if marketposition == -1 then ExitShort("s1x",atlimit,Highest(H,barsSinceEntry+1)-atr(20)*2); if marketposition == 1 then ExitLong("b1x",AtLimit,lowest(L,barsSinceEntry+1)+atr(20)*2); if date > date[1]+30 Then{ entry = 0; UnitPL = 0; SumPL = 0; Win = 0; } if BarsSinceExit(1) == 1 Then{ entry = entry+1; unitPL = unitPL + (PositionProfit(1)/CurrentContracts[BarsSinceEntry(1)]); sumPL = sumPL + PositionProfit(1); if PositionProfit(1) > 0 Then Win = win+1; } if date != date[1] Then{ entry1 = entry[1]; UnitPL1 = UnitPL[1]; SumPL1 = SumPL[1]; Win1 = Win[1]; } if date != date[1] Then{ dayentry[0] = 0; dayUnitPL[0] = 0; daySumPL[0] = 0; dayWin[0] = 0; for count = 1 to 29{ dayentry[count] = dayentry[count-1][1]; dayUnitPL[count] = dayUnitPL[count-1][1]; daySumPL[count] = daySumPL[count-1][1]; dayWin[count] = dayWin[count-1][1]; } } if MarketPosition != MarketPosition[1] and MarketPosition[1] != 0 Then{ dayentry[0] = dayentry[0]+1; dayunitPL[0] = dayunitPL[0] + (PositionProfit(1)/CurrentContracts[BarsSinceEntry(1)]); daysumPL[0] = daysumPL[0] + PositionProfit(1); if PositionProfit(1) > 0 Then dayWin[0] = daywin[0]+1; } sumdayentry = 0; sumdayUnitPL = 0; sumdaySumPL = 0; sumdayWin = 0; for cnt = 1 to N { sumdayentry = sumdayentry+dayentry[cnt]; sumdayUnitPL = sumdayUnitPL+dayUnitPl[cnt]; sumdaySumPL = sumdaySumPL+daysumPL[cnt]; sumdayWin = sumdayWin+Daywin[cnt]; } MessageLog("월거래수 %.f 1당누적손익 %.2f 전체손익 %.2f 수익거래횟수 %.2f 승률 %.f",entry1,unitPL1,sumPL1,Win1,Win1/entry1*100); MessageLog("N일거래수 %.f 1당누적손익 %.2f 전체손익 %.2f 수익거래횟수 %.2f 승률 %.f",sumdayentry,sumdayunitPL,sumdaysumPL,sumdayWin,sumdayWin/sumdayentry*100); 즐거운 하루되세요 > yang오뚜기 님이 쓴 글입니다. > 제목 : 꺼꾸로 해보고싶은데요 > 안녕하세요 예스스탁 운영자님 테스트중 마이너스 -105 pt 네요 아래식 에서 모든 시스템 전체를 꺼꾸로 작성하려는데요 제가 실력이 안되어 부탁드립니다 수정은 어떻게하면 되나요? 감사드립니다 input : N(5); var : unit(0); var : entry(0),sumPL(0),Win(0),unitPL(0),cnt(0),count(0); var : entry1(0),sumPL1(0),Win1(0),unitPL1(0); var : sumdayentry(0),sumdayUnitPL(0),sumdaySumPL(0),sumdayWin(0); Array : dayentry[30](0),daysumPL[30](0),dayWin[30](0),dayunitPL[30](0); if ema(c,20) > ema(c,60) then unit=2 ; else if ema(c,50) > ema(c,20) and ema(C,20) >ema(c,60) then unit=3 ; else unit=1; if crossup(c,ema(c,20)) then buy("b1",atmarket,def,unit); if crossdown(c,ema(c,20)) then sell("s1",atmarket,def,unit); if marketposition == 1 then exitlong("b1x",atstop,Highest(H,barsSinceEntry+1)-atr(20)*2); if marketposition == -1 then exitshort("s1x",atstop,lowest(L,barsSinceEntry+1)+atr(20)*2); if date > date[1]+30 Then{ entry = 0; UnitPL = 0; SumPL = 0; Win = 0; } if BarsSinceExit(1) == 1 Then{ entry = entry+1; unitPL = unitPL + (PositionProfit(1)/CurrentContracts[BarsSinceEntry(1)]); sumPL = sumPL + PositionProfit(1); if PositionProfit(1) > 0 Then Win = win+1; } if date != date[1] Then{ entry1 = entry[1]; UnitPL1 = UnitPL[1]; SumPL1 = SumPL[1]; Win1 = Win[1]; } if date != date[1] Then{ dayentry[0] = 0; dayUnitPL[0] = 0; daySumPL[0] = 0; dayWin[0] = 0; for count = 1 to 29{ dayentry[count] = dayentry[count-1][1]; dayUnitPL[count] = dayUnitPL[count-1][1]; daySumPL[count] = daySumPL[count-1][1]; dayWin[count] = dayWin[count-1][1]; } } if MarketPosition != MarketPosition[1] and MarketPosition[1] != 0 Then{ dayentry[0] = dayentry[0]+1; dayunitPL[0] = dayunitPL[0] + (PositionProfit(1)/CurrentContracts[BarsSinceEntry(1)]); daysumPL[0] = daysumPL[0] + PositionProfit(1); if PositionProfit(1) > 0 Then dayWin[0] = daywin[0]+1; } sumdayentry = 0; sumdayUnitPL = 0; sumdaySumPL = 0; sumdayWin = 0; for cnt = 1 to N { sumdayentry = sumdayentry+dayentry[cnt]; sumdayUnitPL = sumdayUnitPL+dayUnitPl[cnt]; sumdaySumPL = sumdaySumPL+daysumPL[cnt]; sumdayWin = sumdayWin+Daywin[cnt]; } MessageLog("월거래수 %.f 1당누적손익 %.2f 전체손익 %.2f 수익거래횟수 %.2f 승률 %.f",entry1,unitPL1,sumPL1,Win1,Win1/entry1*100); MessageLog("N일거래수 %.f 1당누적손익 %.2f 전체손익 %.2f 수익거래횟수 %.2f 승률 %.f",sumdayentry,sumdayunitPL,sumdaysumPL,sumdayWin,sumdayWin/sumdayentry*100);