커뮤니티

시스템식 부탁드립니다.

프로필 이미지
양치기
2025-01-09 21:47:20
505
글번호 187067
답변완료
안녕하세요. 항상 도움 주셔서 감사합니다. 아래 조건에 맞는 시스템식 부탁드립니다. 제가 초보입니다. 죄송하지만 주석도 같이 부탁드립니다. 종목 : 해외선물 차트 : 10분봉 요청식 1 1. 장시작 시간이 아침 8시 이지만 8시 30분 이후부터 매매를 시작하고 싶습니다. 2. 장마감 시간이 아침 7시 이지만 6시에 모든 포지션을 청산하고 싶습니다. 3. 하루에 2번 매매하는데 첫번째 매매가 수익청산 이면 매매 중단 첫번째 매매가 손실청산이면 2번까지 매매 하고 싶습니다. 4. 익일 리셋 요청식 2 1. 장시작 시간이 아침 8시 이지만 8시 30분 이후부터 매매를 시작하고 싶습니다. 2. 장마감 시간이 아침 7시 이지만 6시에 모든 포지션을 청산하고 싶습니다. 3. 하루의 2번 매매하는데 첫번째 청산이익 또는 청산손실이 40틱 이면 매매 중단 청산이익 및 청산손실이 40틱 미달하면 2번까지 매매 하고 싶습니다. 4. 익일 리셋 감사합니다. 아래 수식에서 수정 부탁드립니다. 1. Input : 당일수익틱수(100); input : pt(20), sl(20); input : StartTime(83000),EndTime(060000); var : ma10(0),ma20(0) ; Var : N1(0),dayPl(0),당일수익(0); var : Tcond(false),Xcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { IF Endtime <= starttime Then { SetStopEndofday(0); } Tcond = true; Xcond = False; N1 = NetProfit; } 2. 당일수익 = PriceScale*당일수익틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then Xcond = true; } ma10 = ma(c,10); ma20 = ma(c,20); if Xcond == false and Tcond == true then { if marketposition <= 0 then { if MA10 > MA20 then buy("b",atlimit,C,1) ; } if marketposition >= 0 then { if MA10 < MA20 then sell("s",atlimit,C,1) ; } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } setstopprofittarget(pt*pricescale,pointstop); setstoploss(sl*pricescale,pointstop);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-01-10 14:38:57

안녕하세요 예스스탁입니다. 1 Input : 당일수익틱수(100); input : pt(20), sl(20); input : StartTime(83000),EndTime(060000); var : ma10(0),ma20(0) ; Var : N1(0),dayPl(0),당일수익(0); var : Tcond(false),Xcond(false),TT(0),T1(0),Entry(0); #전체 진입횟수 TT = TotalTrades; #시작시간보다 청산시간이 크면(당일청산셋팅) IF Endtime > starttime Then SetStopEndofday(Endtime); Else#아니면 { #0시에 셋팅 if sDate != sDate[1] Then SetStopEndofday(Endtime); } #지정한 끝시간이 되면 Tcond는 False if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; #지정한 시작시간이 되면 if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { #청산시간이 다음날이면 당일청산 해제 IF Endtime <= starttime Then { SetStopEndofday(0); } #Tcond는 true Tcond = true; #Xcond는 False Xcond = False; #첫봉기준 총손익 N1 = NetProfit; #전일까지 총거래횟수 T1 = TT[1]; } #당일수익틱수를 포인트로 환산 당일수익 = PriceScale*당일수익틱수; #당일총손익 = 현재총손익과 첫봉기준 총손익 차이 daypl = NetProfit-N1; #현재총거래횟수-전일까지총거래횟수+포지션 진입중이면 1가산 entry = TT-T1+IFf(MarketPosition != 0,1,0); #거래횟수증가(청산발생) if TotalTrades > TotalTrades[1] then { #당일손익이 당일수익이상이면 Xcond는 true if daypl >= 당일수익 Then Xcond = true; #청산명 dbp, dsp발생하면 Xcond는 true if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then Xcond = true; } ma10 = ma(c,10); ma20 = ma(c,20); #xcond는 False이고 Tcond true일때만 진입 if Xcond == false and Tcond == true then { if marketposition <= 0 and MA10 > MA20 then { #당일 첫진이거나 #두번째 진입은 직전진입 손실일때만 진입 if entry == 0 or (entry == 1 and MarketPosition == -1 and PositionProfit(0) < 0) or (entry == 1 and MarketPosition == 0 and PositionProfit(0) < 0) Then buy("b",atlimit,C,1) ; Else #아니면 청산만 동작 ExitShort("sx"); } if marketposition >= 0 and MA10 < MA20 then { #당일 첫진이거나 #두번째 진입은 직전진입 손실일때만 진입 if entry == 0 or (entry == 1 and MarketPosition == 1 and PositionProfit(0) < 0) or (entry == 1 and MarketPosition == 0 and PositionProfit(0) < 0) Then sell("s",atlimit,C,1) ; Else #아니면 청산만 진입 ExitLong("bx"); } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } setstopprofittarget(pt*pricescale,pointstop); setstoploss(sl*pricescale,pointstop); 2 Input : 당일수익틱수(100); input : pt(20), sl(20); input : StartTime(83000),EndTime(060000); var : ma10(0),ma20(0) ; Var : N1(0),dayPl(0),당일수익(0); var : Tcond(false),Xcond(false),TT(0),T1(0),Entry(0); #전체 진입횟수 TT = TotalTrades; #시작시간보다 청산시간이 크면(당일청산셋팅) IF Endtime > starttime Then SetStopEndofday(Endtime); Else#아니면 { #0시에 셋팅 if sDate != sDate[1] Then SetStopEndofday(Endtime); } #지정한 끝시간이 되면 Tcond는 False if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; #지정한 시작시간이 되면 if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { #청산시간이 다음날이면 당일청산 해제 IF Endtime <= starttime Then { SetStopEndofday(0); } #Tcond는 true Tcond = true; #Xcond는 False Xcond = False; #첫봉기준 총손익 N1 = NetProfit; #전일까지 총거래횟수 T1 = TT[1]; } #당일수익틱수를 포인트로 환산 당일수익 = PriceScale*당일수익틱수; #당일총손익 = 현재총손익과 첫봉기준 총손익 차이 daypl = NetProfit-N1; #현재총거래횟수-전일까지총거래횟수+포지션 진입중이면 1가산 entry = TT-T1+IFf(MarketPosition != 0,1,0); #거래횟수증가(청산발생) if TotalTrades > TotalTrades[1] then { #당일손익이 당일수익이상이면 Xcond는 true if daypl >= 당일수익 Then Xcond = true; #청산명 dbp, dsp발생하면 Xcond는 true if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then Xcond = true; #직전거래가 40틱 수익이거나 손실이면 Xcond는 true if PositionProfit(1) >= PriceScale*40 or PositionProfit(1) <= PriceScale*40 Then Xcond = true; } ma10 = ma(c,10); ma20 = ma(c,20); #xcond는 False이고 Tcond true일때만 진입 if Xcond == false and Tcond == true then { if marketposition <= 0 and MA10 > MA20 then { #당일 첫진입이거나 #두번째 진입은 직전진입이 40틱이상 수익이거나 40틱이상 손실이 아닐때만 진입 if entry == 0 or (entry == 1 and MarketPosition == -1 and abs(PositionProfit(0)) < PriceScale*40) or (entry == 1 and MarketPosition == 0 and abs(PositionProfit(0)) < PriceScale*40) Then buy("b",atlimit,C,1) ; Else #아니면 청산만 동작 ExitShort("sx"); } if marketposition >= 0 and MA10 < MA20 then { #당일 첫진입이거나 #두번째 진입은 직전진입이 40틱이상 수익이거나 40틱이상 손실이 아닐때만 진입 if entry == 0 or (entry == 1 and MarketPosition == 1 and abs(PositionProfit(0)) < PriceScale*40) or (entry == 1 and MarketPosition == 0 and abs(PositionProfit(0)) < PriceScale*40) Then sell("s",atlimit,C,1) ; Else #아니면 청산만 진입 ExitLong("bx"); } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } setstopprofittarget(pt*pricescale,pointstop); setstoploss(sl*pricescale,pointstop); 즐거운 하루되세요 > 양치기 님이 쓴 글입니다. > 제목 : 시스템식 부탁드립니다. > 안녕하세요. 항상 도움 주셔서 감사합니다. 아래 조건에 맞는 시스템식 부탁드립니다. 제가 초보입니다. 죄송하지만 주석도 같이 부탁드립니다. 종목 : 해외선물 차트 : 10분봉 요청식 1 1. 장시작 시간이 아침 8시 이지만 8시 30분 이후부터 매매를 시작하고 싶습니다. 2. 장마감 시간이 아침 7시 이지만 6시에 모든 포지션을 청산하고 싶습니다. 3. 하루에 2번 매매하는데 첫번째 매매가 수익청산 이면 매매 중단 첫번째 매매가 손실청산이면 2번까지 매매 하고 싶습니다. 4. 익일 리셋 요청식 2 1. 장시작 시간이 아침 8시 이지만 8시 30분 이후부터 매매를 시작하고 싶습니다. 2. 장마감 시간이 아침 7시 이지만 6시에 모든 포지션을 청산하고 싶습니다. 3. 하루의 2번 매매하는데 첫번째 청산이익 또는 청산손실이 40틱 이면 매매 중단 청산이익 및 청산손실이 40틱 미달하면 2번까지 매매 하고 싶습니다. 4. 익일 리셋 감사합니다. 아래 수식에서 수정 부탁드립니다. 1. Input : 당일수익틱수(100); input : pt(20), sl(20); input : StartTime(83000),EndTime(060000); var : ma10(0),ma20(0) ; Var : N1(0),dayPl(0),당일수익(0); var : Tcond(false),Xcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { IF Endtime <= starttime Then { SetStopEndofday(0); } Tcond = true; Xcond = False; N1 = NetProfit; } 2. 당일수익 = PriceScale*당일수익틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then Xcond = true; } ma10 = ma(c,10); ma20 = ma(c,20); if Xcond == false and Tcond == true then { if marketposition <= 0 then { if MA10 > MA20 then buy("b",atlimit,C,1) ; } if marketposition >= 0 then { if MA10 < MA20 then sell("s",atlimit,C,1) ; } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } setstopprofittarget(pt*pricescale,pointstop); setstoploss(sl*pricescale,pointstop);