커뮤니티

시스템식 수정 부탁드립니다.

프로필 이미지
종풍화성
2015-10-08 10:59:01
156
글번호 91060
답변완료

첨부 이미지

아래 보내주신 시스템식에서 매수타점과 매도타점을 좀더 용이하게 하기위해서 다음과 같이 외부변수를 추가로 할당할려고 합니다. 이에 맞게 시스템식 수정 부탁드립니다. 더불어 도움주심에 감사드립니다. ## 추가할 외부변수 설정 시작 --------------------------------- input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4); input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3); ## 추가할 외부변수 설정 끝 --------------------------------- [설명] 첨부한 챠트에서 각각의 매수타점의 간격은 "최고점"-"V0.5" 간격차이만큼 모두 동일합니다. 따라서 이간격의 갯수를 1로 설정했을때 V1라인 즉 1차매수타점은 (최고점-V0.5)의 2개간격 -> input:1차매수위치(2) 에 해당 V2라인 즉 2차매수타점은 (최고점-V0.5)의 3개간격 -> input:1차매수위치(3) 에 해당 V3라인 즉 3차매수타점은 (최고점-V0.5)의 4개간격 -> input:1차매수위치(4) 에 해당 으로 변경해 주시고요 매도위치도 마찬가지로 1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도 1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도 로 변경해 주시면 감사하겠습니다. ------------------------------------------------------------------------------------- input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000); ## 추가할 외부변수 설정 시작 --------------------------------- input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4); input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3); ## 추가할 외부변수 설정 끝 --------------------------------- input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50); ##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다. input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50); ##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다. input : Period(384); 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); Array : HH[400](0),LL[499](0); TF = TimeToMinutes(stime)%15; if date != date[1] or (date == date and TF < TF[1]) Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 399{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if HH[Period] > 0 Then{ var1 = HH[0]; var2 = LL[0]; var11 = HH[1]; var12 = LL[1]; for cnt = 0 to Period-1{ if HH[cnt] > var1 Then var1 = HH[cnt]; if HH[cnt+1] > var11 Then var11 = HH[cnt+1]; if LL[cnt] < var2 Then var2 = LL[cnt]; if LL[cnt+1] < var21 Then var21 = LL[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; if sdate >= 전략식시작일자 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and O > C[1]*0.985) or (stime >= 133000 and C > V2)) Then{ if NextBarOpen > V1 Then buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C)); if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if LatestExitName(0) == "3차매도" Then Condition3 = 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,"",Floor(MaxContracts*(매도비중2차/100)),1); if Condition3 == false then exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3); } Else{ Condition1 = false; Condition2 = false; Condition3 = false; } } } -------------------------------------------------------------------------------------
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-10-08 14:16:33

안녕하세요 예스스탁입니다. input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000); ## 추가할 외부변수 설정 시작 --------------------------------- input : 매수위치1차(2), 매수위치2차(3), 매수위치3차(4); input : 매도위치1차(1), 매도위치2차(2), 매도위치3차(3); ## 추가할 외부변수 설정 끝 --------------------------------- input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50); ##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다. input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50); ##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다. input : Period(384); 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); Array : HH[400](0),LL[499](0); TF = TimeToMinutes(stime)%15; if date != date[1] or (date == date and TF < TF[1]) Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 399{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if HH[Period] > 0 Then{ var1 = HH[0]; var2 = LL[0]; var11 = HH[1]; var12 = LL[1]; for cnt = 0 to Period-1{ if HH[cnt] > var1 Then var1 = HH[cnt]; if HH[cnt+1] > var11 Then var11 = HH[cnt+1]; if LL[cnt] < var2 Then var2 = LL[cnt]; if LL[cnt+1] < var21 Then var21 = LL[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 >= 전략식시작일자 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and O > C[1]*0.985) or (stime >= 133000 and C > V2)) Then{ if NextBarOpen > var1-value*매수위치1차 Then buy("1차매수",atlimit,var1-value*매수위치1차,Floor((전략총매수금액*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*매수위치2차 and CurrentContracts == MaxContracts Then buy("2차매수",atlimit,var1-value*매수위치2차,Floor((전략총매수금액*(매수비중2차/100))/C)); if MaxEntries == 2 and L >= var1-value*매수위치3차 and CurrentContracts == MaxContracts Then buy("3차매수",atlimit,var1-value*매수위치3차,Floor((전략총매수금액*(매수비중3차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if LatestExitName(0) == "3차매도" Then Condition3 = 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차,"",Floor(MaxContracts*(매도비중2차/100)),1); if Condition3 == false then exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치3차); } Else{ Condition1 = false; Condition2 = false; Condition3 = false; } } } 즐거운 하루되세요 > 종풍화성 님이 쓴 글입니다. > 제목 : 시스템식 수정 부탁드립니다. > 아래 보내주신 시스템식에서 매수타점과 매도타점을 좀더 용이하게 하기위해서 다음과 같이 외부변수를 추가로 할당할려고 합니다. 이에 맞게 시스템식 수정 부탁드립니다. 더불어 도움주심에 감사드립니다. ## 추가할 외부변수 설정 시작 --------------------------------- input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4); input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3); ## 추가할 외부변수 설정 끝 --------------------------------- [설명] 첨부한 챠트에서 각각의 매수타점의 간격은 "최고점"-"V0.5" 간격차이만큼 모두 동일합니다. 따라서 이간격의 갯수를 1로 설정했을때 V1라인 즉 1차매수타점은 (최고점-V0.5)의 2개간격 -> input:1차매수위치(2) 에 해당 V2라인 즉 2차매수타점은 (최고점-V0.5)의 3개간격 -> input:1차매수위치(3) 에 해당 V3라인 즉 3차매수타점은 (최고점-V0.5)의 4개간격 -> input:1차매수위치(4) 에 해당 으로 변경해 주시고요 매도위치도 마찬가지로 1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도 1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도 로 변경해 주시면 감사하겠습니다. ------------------------------------------------------------------------------------- input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000); ## 추가할 외부변수 설정 시작 --------------------------------- input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4); input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3); ## 추가할 외부변수 설정 끝 --------------------------------- input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50); ##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다. input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50); ##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다. input : Period(384); 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); Array : HH[400](0),LL[499](0); TF = TimeToMinutes(stime)%15; if date != date[1] or (date == date and TF < TF[1]) Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 399{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if HH[Period] > 0 Then{ var1 = HH[0]; var2 = LL[0]; var11 = HH[1]; var12 = LL[1]; for cnt = 0 to Period-1{ if HH[cnt] > var1 Then var1 = HH[cnt]; if HH[cnt+1] > var11 Then var11 = HH[cnt+1]; if LL[cnt] < var2 Then var2 = LL[cnt]; if LL[cnt+1] < var21 Then var21 = LL[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; if sdate >= 전략식시작일자 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and O > C[1]*0.985) or (stime >= 133000 and C > V2)) Then{ if NextBarOpen > V1 Then buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C)); if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if LatestExitName(0) == "3차매도" Then Condition3 = 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,"",Floor(MaxContracts*(매도비중2차/100)),1); if Condition3 == false then exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3); } Else{ Condition1 = false; Condition2 = false; Condition3 = false; } } } -------------------------------------------------------------------------------------