커뮤니티

시스템식 검토부탁드립니다.

프로필 이미지
종풍화성
2015-10-18 21:11:20
153
글번호 91396
답변완료

첨부 이미지

1. 매도신호가 잡히는 않는 문제 그림과 같이 시스템식상 예상된 "2차매도"의 위치에서 신호가 잡히질 않습니다 검토 부탁드립니다. 2. "1차매수"와 관련하여 시스템식 수정 아래 시스템식인 시가가 전일종가대비 -2%에서 시작하면 오전에 매수하지 않고 오후에 C>V2이면 매수한다는 조건을 빼고 다시 수정 부탁드립니다. ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) -------------------------------------------------------------------------------- input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; }
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2015-10-19 14:44:33

안녕하세요 예스스탁입니다. 수정한 식입니다. 진입횟수제한조건이 청산조건에도 반영이 되고 있어 1회청산후 다음청산이 나오지 못했습니다. input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 and MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; } 즐거운 하루되세요 > 종풍화성 님이 쓴 글입니다. > 제목 : 시스템식 검토부탁드립니다. > 1. 매도신호가 잡히는 않는 문제 그림과 같이 시스템식상 예상된 "2차매도"의 위치에서 신호가 잡히질 않습니다 검토 부탁드립니다. 2. "1차매수"와 관련하여 시스템식 수정 아래 시스템식인 시가가 전일종가대비 -2%에서 시작하면 오전에 매수하지 않고 오후에 C>V2이면 매수한다는 조건을 빼고 다시 수정 부탁드립니다. ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) -------------------------------------------------------------------------------- input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; }
프로필 이미지

종풍화성

2015-10-19 14:51:10

2번 항목도 부탁드릴께요.. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템식 검토부탁드립니다. > 안녕하세요 예스스탁입니다. 수정한 식입니다. 진입횟수제한조건이 청산조건에도 반영이 되고 있어 1회청산후 다음청산이 나오지 못했습니다. input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 and MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; } 즐거운 하루되세요 > 종풍화성 님이 쓴 글입니다. > 제목 : 시스템식 검토부탁드립니다. > 1. 매도신호가 잡히는 않는 문제 그림과 같이 시스템식상 예상된 "2차매도"의 위치에서 신호가 잡히질 않습니다 검토 부탁드립니다. 2. "1차매수"와 관련하여 시스템식 수정 아래 시스템식인 시가가 전일종가대비 -2%에서 시작하면 오전에 매수하지 않고 오후에 C>V2이면 매수한다는 조건을 빼고 다시 수정 부탁드립니다. ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) -------------------------------------------------------------------------------- input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; }
프로필 이미지

예스스탁 예스스탁 답변

2015-10-19 15:42:41

안녕하세요 예스스탁입니다. 2번항목 조건 제외했습니다. input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 and MarketPosition == 0 and stime >= 전략식시작시간 and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; } 즐거운 하루되세요 > 종풍화성 님이 쓴 글입니다. > 제목 : Re : Re : 시스템식 검토부탁드립니다. > 2번 항목도 부탁드릴께요.. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템식 검토부탁드립니다. > 안녕하세요 예스스탁입니다. 수정한 식입니다. 진입횟수제한조건이 청산조건에도 반영이 되고 있어 1회청산후 다음청산이 나오지 못했습니다. input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 and MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; } 즐거운 하루되세요 > 종풍화성 님이 쓴 글입니다. > 제목 : 시스템식 검토부탁드립니다. > 1. 매도신호가 잡히는 않는 문제 그림과 같이 시스템식상 예상된 "2차매도"의 위치에서 신호가 잡히질 않습니다 검토 부탁드립니다. 2. "1차매수"와 관련하여 시스템식 수정 아래 시스템식인 시가가 전일종가대비 -2%에서 시작하면 오전에 매수하지 않고 오후에 C>V2이면 매수한다는 조건을 빼고 다시 수정 부탁드립니다. ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) -------------------------------------------------------------------------------- input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000); input : 매수위치1차(2), 매수위치2차(3); input : 매도위치1차(1), 매도위치2차(2); input : 매수비중1차(50), 매수비중2차(50); input : 매도비중1차(50), 매도비중2차(50); input : 전략식진입횟수(1); input : 최종손절위치(4); input : Period(120); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); var : entrycond1(false),entrycond2(false),entrycond3(false); if dayhigh(Period) > 0 Then{ var1 = dayhigh(0); var2 = daylow(0); var11 = dayhigh(1); var12 = daylow(1); for cnt = 0 to Period-1{ if DayHigh(cnt) > var1 Then var1 = DayHigh(cnt); if dayhigh(cnt+1) > var11 Then var11 = dayhigh(cnt+1); if daylow(cnt) < var2 Then var2 = daylow(cnt); if daylow(cnt+1) < var21 Then var21 = daylow(cnt+1); } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 and TotalTrades < 전략식진입횟수 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and DayOpen > DayClose(1)*0.98) or (stime >= 120000 and C > V2)) and EntryCond1 == false Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차); exitlong("최종손절",AtStop,var1-value*(최종손절위치+1)); } Else{ Condition1 = false; Condition2 = false; } } } if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then entrycond1 = true; if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then entrycond2 = true; if MarketPosition == 0 Then{ entrycond1 = false; entrycond2 = false; }