커뮤니티

문의드립니다.

프로필 이미지
민기삼촌
2016-10-03 21:11:57
156
글번호 102437
답변완료
항상 친절하고 빠른 답변 고맙습니다. 아래식에 다음조건을 검토해 주시면 고맙겠습니다. <설정 요청 조건> 당일수익이 5.0 이상이거나 당일손실이 -2.0이상이면 당일 거래중단 당일 연속손실이 2회이상 이면 거래중단 당일 수익후 2.0하락시 거래중단 진입회수 3회이내 설정 input : P(80), len(40),PRO(5.0), DLOSS(1.5),당일손실(-2.0), N(3); var : count(0), CNTNO(0), cnt(0), losscnt(0); var : NP(0),PreNP(0),DayPL(0),loss(0),DayPLHigh(0),Diff(0); ################################################################## # 당일 Loss Cut 횟수 카운트 losscnt = 0; for cnt = 1 to 10{ if ExitDate(cnt) == sdate and IsExitName("setStopLoss",losscnt) == true Then losscnt = losscnt+1; } ################################################################## # 당일 진입횟수 카운트 count = 0; for CNTNO = 0 to 10 { if EntryDate(CNTNO) == sDate Then count = count+1;} ################################################################## # 당일 수익후 2.0하락시 NP = NetProfit; loss = ((2.0/PointValue)*PriceScale); // if date != date[1] Then{ PreNP = NP[1]; DayPLHigh = 0; } #당일 누적수익 DayPL = NP-PreNP; #당일 최대 누적수익 if dayPL > DayPLHigh Then DayPLHigh = DAyPL; #최대누적수익과 현재 누적값의 차이(최고누적에서 감소된 수치) Diff = DayPL-DayPLHigh; ################################################################## Condition1 = ExitDate(1) == sdate and ((IsExitName("bx0",1)==True or IsExitName("sx0",1)==True or IsExitName("bx",1)==True or IsExitName("sx",1)==True or IsExitName("bx1",1)==True or IsExitName("sx1",1)==True or IsExitName("bx2",1)==True or IsExitName("sx2",1)==True or IsExitName("bx3",1)==True or IsExitName("sx3",1)==True or IsExitName("bx4",1)==True or IsExitName("sx4",1)==True or IsExitName("bx5",1)==True or IsExitName("sx5",1)==True or IsExitName("bx6",1)==True or IsExitName("sx6",1)==True or IsExitName("bx7",1)==True or IsExitName("sx7",1)==True or IsExitName("SetStopProfittarget",1)==True or IsExitName("SetStopLoss",1)==True or IsExitName("StopLoss",losscnt)==True)); ################################################################## # 매매시간 설정 If (stime >= 090000 and stime < 153000) and Count < N and losscnt < 2 Then { if Condition1 == false Then { # 매매식 ################################################################################### # 매매식 if 조건식 Then { Buy("매수 B1",AtMarket); count = count + 1; } Else If 조건식 Then { Sell("매도",AtMarket); count = count + 1; } } ################################################################################### SetStopProfittarget(PRO,PointStop); // 5.0 SetStopLoss(DLOSS,PointStop); // 2.0 ################################################################################### if MarketPosition == 1 Then{ ExitLong("bx1",AtStop,EntryPrice+(당일손실-dayPL)); ExitLong("bx2",AtStop,C-ATR(10)*3); // YoYo Stop ExitLong("bx3",AtLimit,EntryPrice+PriceScale*95); If Highest(H, BarsSinceEntry) >= EntryPrice+50 Then { ExitLong("bx4",AtStop,Highest(H, BarsSinceEntry) - 20); } If Highest(H, BarsSinceEntry) >= EntryPrice+10 Then { ExitLong("bx5",AtStop,EntryPrice); } If Highest(H, BarsSinceEntry) >= EntryPrice*(1+10/100) Then { ExitLong("bx6",AtStop,Highest(H, BarsSinceEntry)*(1-3/100)); } If Highest(H, BarsSinceEntry) >= EntryPrice + (PriceScale*140) Then { ExitLong("bx7",AtStop,Lowest(L,2)); } } if MarketPosition == -1 Then{ ExitShort("sx1",AtStop,EntryPrice-(당일손실-dayPL)); ExitShort("sx2",AtStop,C+ATR(10)*3); ExitShort("sx3",AtLimit,EntryPrice-PriceScale*95); If Lowest(L, BarsSinceEntry) <= EntryPrice-50 Then { ExitShort("sx4",AtStop,Lowest(L, BarsSinceEntry) + 20); } If Lowest(L, BarsSinceEntry) <= EntryPrice-10 Then { ExitShort("sx5",AtStop,EntryPrice); } If Lowest(L, BarsSinceEntry) <= EntryPrice*(1-10/100) Then { ExitShort("sx6",AtStop,Lowest(L, BarsSinceEntry)*(1+3/100)); } If Lowest(L, BarsSinceEntry) <= EntryPrice-(PriceScale*140) Then { ExitShort("sx7",AtStop,Highest(H,2)); } } } #####################################################################################
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-10-04 17:37:53

안녕하세요 예스스탁입니다. input : P(80), len(40),당일수익(5.0),당일손실(2.0),당일최대진입횟수(3),당일연속손절횟수(2); var : count(0), CNTNO(0), cnt(0), losscnt(0); var : NP(0),PreNP(0),DayPL(0),loss(0),DayPLHigh(0),Diff(0),Xcond(false); ################################################################## #당일 연속손절횟수 losscnt = 0; for cnt = 10 DownTo 1{ if ExitDate(cnt) == sdate and IsExitName("StopLoss",cnt) == true Then losscnt = losscnt+1; Else losscnt = 0; } ################################################################## # 당일 진입횟수 카운트 count = 0; for CNTNO = 0 to 10 { if EntryDate(CNTNO) == sDate Then count = count+1; } ################################################################## # 당일 수익후 2.0하락시 NP = NetProfit; loss = ((2.0/PointValue)*PriceScale); // if date != date[1] Then{ PreNP = NP[1]; DayPLHigh = 0; Xcond = false;#날짜 변경시 초기화 } #당일 수익이 5포인트 이상이나 손실이 2.0으로 청산이 발생하면 #Xcond는 true if TotalTrades > TotalTrades[1] and (IsExitName("bp",1) or IsExitName("bl",1) or IsExitName("sp",1) or IsExitName("sl",1)) Then Xcond = true; #당일 누적수익 DayPL = NP-PreNP; #당일 최대 누적수익 if dayPL > DayPLHigh Then DayPLHigh = DAyPL; ################################################################## Condition1 = ExitDate(1) == sdate and ((IsExitName("bx0",1)==True or IsExitName("sx0",1)==True or IsExitName("bx",1)==True or IsExitName("sx",1)==True or IsExitName("bx1",1)==True or IsExitName("sx1",1)==True or IsExitName("bx2",1)==True or IsExitName("sx2",1)==True or IsExitName("bx3",1)==True or IsExitName("sx3",1)==True or IsExitName("bx4",1)==True or IsExitName("sx4",1)==True or IsExitName("bx5",1)==True or IsExitName("sx5",1)==True or IsExitName("bx6",1)==True or IsExitName("sx6",1)==True or IsExitName("bx7",1)==True or IsExitName("sx7",1)==True or IsExitName("StopProfittarget",1)==True or IsExitName("StopLoss",1)==True or IsExitName("StopLoss",losscnt)==True)); ################################################################## # 매매시간 설정 If (stime >= 090000 and stime < 153000) Then { if Condition1 == false and Count < 당일최대진입횟수 and losscnt < 당일연속손절횟수 and Xcond == false and dayPL < DayPLHigh-2 and DayPLHigh > 0 Then { # 매매식 if 조건식 Then { Buy("매수 B1",AtMarket); } else If 조건식 Then { Sell("매도",AtMarket); } } ################################################################################### if MarketPosition == 1 Then{ ExitLong("bp",AtLimit,EntryPrice+당일수익-dayPL); ExitLong("bl",AtStop,EntryPrice-당일손실-dayPL); ExitLong("bx2",AtStop,C-ATR(10)*3); // YoYo Stop ExitLong("bx3",AtLimit,EntryPrice+PriceScale*95); If Highest(H, BarsSinceEntry) >= EntryPrice+50 Then { ExitLong("bx4",AtStop,Highest(H, BarsSinceEntry) - 20); } If Highest(H, BarsSinceEntry) >= EntryPrice+10 Then { ExitLong("bx5",AtStop,EntryPrice); } If Highest(H, BarsSinceEntry) >= EntryPrice*(1+10/100) Then { ExitLong("bx6",AtStop,Highest(H, BarsSinceEntry)*(1-3/100)); } If Highest(H, BarsSinceEntry) >= EntryPrice + (PriceScale*140) Then { ExitLong("bx7",AtStop,Lowest(L,2)); } } if MarketPosition == -1 Then{ ExitShort("sp",AtLimit,EntryPrice-당일수익+dayPL); ExitShort("sl",AtStop,EntryPrice+당일손실+dayPL); ExitShort("sx3",AtLimit,EntryPrice-PriceScale*95); If Lowest(L, BarsSinceEntry) <= EntryPrice-50 Then { ExitShort("sx4",AtStop,Lowest(L, BarsSinceEntry) + 20); } If Lowest(L, BarsSinceEntry) <= EntryPrice-10 Then { ExitShort("sx5",AtStop,EntryPrice); } If Lowest(L, BarsSinceEntry) <= EntryPrice*(1-10/100) Then { ExitShort("sx6",AtStop,Lowest(L, BarsSinceEntry)*(1+3/100)); } If Lowest(L, BarsSinceEntry) <= EntryPrice-(PriceScale*140) Then { ExitShort("sx7",AtStop,Highest(H,2)); } } } ##################################################################################### 즐거운 하루되세요 > 민기삼촌 님이 쓴 글입니다. > 제목 : 문의드립니다. > 항상 친절하고 빠른 답변 고맙습니다. 아래식에 다음조건을 검토해 주시면 고맙겠습니다. <설정 요청 조건> 당일수익이 5.0 이상이거나 당일손실이 -2.0이상이면 당일 거래중단 당일 연속손실이 2회이상 이면 거래중단 당일 수익후 2.0하락시 거래중단 진입회수 3회이내 설정 input : P(80), len(40),PRO(5.0), DLOSS(1.5),당일손실(-2.0), N(3); var : count(0), CNTNO(0), cnt(0), losscnt(0); var : NP(0),PreNP(0),DayPL(0),loss(0),DayPLHigh(0),Diff(0); ################################################################## # 당일 Loss Cut 횟수 카운트 losscnt = 0; for cnt = 1 to 10{ if ExitDate(cnt) == sdate and IsExitName("setStopLoss",losscnt) == true Then losscnt = losscnt+1; } ################################################################## # 당일 진입횟수 카운트 count = 0; for CNTNO = 0 to 10 { if EntryDate(CNTNO) == sDate Then count = count+1;} ################################################################## # 당일 수익후 2.0하락시 NP = NetProfit; loss = ((2.0/PointValue)*PriceScale); // if date != date[1] Then{ PreNP = NP[1]; DayPLHigh = 0; } #당일 누적수익 DayPL = NP-PreNP; #당일 최대 누적수익 if dayPL > DayPLHigh Then DayPLHigh = DAyPL; #최대누적수익과 현재 누적값의 차이(최고누적에서 감소된 수치) Diff = DayPL-DayPLHigh; ################################################################## Condition1 = ExitDate(1) == sdate and ((IsExitName("bx0",1)==True or IsExitName("sx0",1)==True or IsExitName("bx",1)==True or IsExitName("sx",1)==True or IsExitName("bx1",1)==True or IsExitName("sx1",1)==True or IsExitName("bx2",1)==True or IsExitName("sx2",1)==True or IsExitName("bx3",1)==True or IsExitName("sx3",1)==True or IsExitName("bx4",1)==True or IsExitName("sx4",1)==True or IsExitName("bx5",1)==True or IsExitName("sx5",1)==True or IsExitName("bx6",1)==True or IsExitName("sx6",1)==True or IsExitName("bx7",1)==True or IsExitName("sx7",1)==True or IsExitName("SetStopProfittarget",1)==True or IsExitName("SetStopLoss",1)==True or IsExitName("StopLoss",losscnt)==True)); ################################################################## # 매매시간 설정 If (stime >= 090000 and stime < 153000) and Count < N and losscnt < 2 Then { if Condition1 == false Then { # 매매식 ################################################################################### # 매매식 if 조건식 Then { Buy("매수 B1",AtMarket); count = count + 1; } Else If 조건식 Then { Sell("매도",AtMarket); count = count + 1; } } ################################################################################### SetStopProfittarget(PRO,PointStop); // 5.0 SetStopLoss(DLOSS,PointStop); // 2.0 ################################################################################### if MarketPosition == 1 Then{ ExitLong("bx1",AtStop,EntryPrice+(당일손실-dayPL)); ExitLong("bx2",AtStop,C-ATR(10)*3); // YoYo Stop ExitLong("bx3",AtLimit,EntryPrice+PriceScale*95); If Highest(H, BarsSinceEntry) >= EntryPrice+50 Then { ExitLong("bx4",AtStop,Highest(H, BarsSinceEntry) - 20); } If Highest(H, BarsSinceEntry) >= EntryPrice+10 Then { ExitLong("bx5",AtStop,EntryPrice); } If Highest(H, BarsSinceEntry) >= EntryPrice*(1+10/100) Then { ExitLong("bx6",AtStop,Highest(H, BarsSinceEntry)*(1-3/100)); } If Highest(H, BarsSinceEntry) >= EntryPrice + (PriceScale*140) Then { ExitLong("bx7",AtStop,Lowest(L,2)); } } if MarketPosition == -1 Then{ ExitShort("sx1",AtStop,EntryPrice-(당일손실-dayPL)); ExitShort("sx2",AtStop,C+ATR(10)*3); ExitShort("sx3",AtLimit,EntryPrice-PriceScale*95); If Lowest(L, BarsSinceEntry) <= EntryPrice-50 Then { ExitShort("sx4",AtStop,Lowest(L, BarsSinceEntry) + 20); } If Lowest(L, BarsSinceEntry) <= EntryPrice-10 Then { ExitShort("sx5",AtStop,EntryPrice); } If Lowest(L, BarsSinceEntry) <= EntryPrice*(1-10/100) Then { ExitShort("sx6",AtStop,Lowest(L, BarsSinceEntry)*(1+3/100)); } If Lowest(L, BarsSinceEntry) <= EntryPrice-(PriceScale*140) Then { ExitShort("sx7",AtStop,Highest(H,2)); } } } #####################################################################################