커뮤니티

이것저것 문의드립니다.

프로필 이미지
잡다백수
2017-10-31 10:42:00
205
글번호 113780
답변완료
파이썬 때는 구현 엄두도 못할 전략들 도와주시는 덕분에 실험해보고 있네요. 매번 감사합니다. 1. 시스템 아래 수식은 하락하면 더 조금사고 상승하면 더 많이 사는 수식인데요. 전에 질문하고 답 얻은 내용입니다. if Rate > 0 Then 이 부분이 이해가 잘 가지 않습니다. var1이 0보다 더 크면으로 바꿔야 하는 건지요? input : 투입금액(1000000); var : Rate(0); var1 = (C-C[1])/C[1]*100; if MarketPosition == 0 Then value1 = 100; if Rate > 0 Then value1 = value1-(value1*Rate); Else value1 = value1+(value1*Rate); if MarketPosition >= 0 Then buy("b",OnClose,def,floor((투입금액*value1)/C)); if NextBarSdate > sdate Then ExitLong("bx",AtMarket); 2. 시스템 아래 전략에 조건 하나씩 추가한 코딩 부탁드립니다. 금일 130000까지 누적 거래대금이 100억 이상 일 때 버전 input : 설정자금(10000000),n(10),Per(5); if stime >= 133000 and stime < 151500 Then buy("b",OnClose,def,floor((설정자금/n)/C)); if MarketPosition == 1 and sdate > EntryDate then{ exitlong("bx1",atlimit,dayopen*(1+Per/100)); if stime >= 91000 Then exitlong("bx2"); } 비고: 2-3번 전략은 다 모든 신호 허용하고 피라미딩을 해야 하는 건가요? 3. 시스템 아래 수식에 전일 거래대금이 300억 이상일 때라는 조건을 추가 부탁드립니다. 전일 거래대금이 300억 이상일 때 분할매수해서 익일에 파는 내용입니다. input : 설정자금(10000000),n(10),Per(5); if stime >= 133000 and stime < 151500 Then buy("b",OnClose,def,floor((설정자금/n)/C)); if MarketPosition == 1 and sdate > EntryDate then{ exitlong("bx1",atlimit,dayopen*(1+Per/100)); if stime >= 91000 Then exitlong("bx2"); } 4. 지표 -장시작후 30분동안 5분봉 10분봉 30분봉의 양봉길이(각 타임프레임 봉에서 양봉만 나온 봉의 길이만 더한 것) plot1 5분봉의 양봉길이 plot2 10분봉의 양봉길이 plot3 30분봉의 양봉길이 비고 구현이 어려운 내용이면 30분봉 하나만이라도 부탁드립니다. 5. 시스템 아래 수식에 전일 거래대금이 200억이상이란 조건 추가 부탁드립니다. input : 타주기분(30),P(20),Dv(2); var : S1(0),D1(0),TM(0),TF(0),cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup1(0),BBdn1(0),Bbup2(0),BBdn2(0); Array : CC[100](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum = 0; for cnt = 0 to P-1{ sum = sum + CC[cnt]; } BBmd = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2; } Stdv = SquareRoot(SumSqrt / P); BBup1 = BBmd + Stdv*2; BBdn1 = BBmd - Stdv*2; BBup2 = BBmd + Stdv*1.8; BBdn2 = BBmd - Stdv*1.8; if stime >= 90000 and stime < 93000 and crossup(c,bbup1) Then buy("b1"); if stime >= 93000 and stime < 133000 and CrossDown(L,bbdn2) Then buy("b2"); if MarketPosition == 1 and IsEntryName("b1") == true and CrossDown(L,bbup1) Then exitlong("bx1"); if MarketPosition == 1 and IsEntryName("b2") == true and CrossUp(H,bbup2) Then exitlong("bx2"); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-10-31 16:20:57

안녕하세요 예스스탁입니다. 1 var1을 Rate변수로 변경해 주시면 됩니다. input : 투입금액(1000000); var : Rate(0); Rate = (C-C[1])/C[1]*100; if MarketPosition == 0 Then value1 = 100; if Rate > 0 Then value1 = value1-(value1*Rate); Else value1 = value1+(value1*Rate); if MarketPosition >= 0 Then buy("b",OnClose,def,floor((투입금액*value1)/C)); if NextBarSdate > sdate Then ExitLong("bx",AtMarket); 2 전략에 추가진입이 있으면 피라미딩을 설정해야 하고 추가진입이 없으면 피라미딩은 설정하지 않습니다. 모든신호허용으로 설정하고 적용하시면 됩니다. input : 설정자금(10000000),n(10),Per(5); var : mm(0); if bdate != bdate[1] Then mm = 0; if stime < 130000 Then mm = mm +m; if stime >= 133000 and stime < 151500 and mm >= 10000000000 Then buy("b",OnClose,def,floor((설정자금/n)/C)); if MarketPosition == 1 and sdate > EntryDate then{ exitlong("bx1",atlimit,dayopen*(1+Per/100)); if stime >= 91000 Then exitlong("bx2"); } 3 input : 설정자금(10000000),n(10),Per(5); var : mm(0),m1(0); if bdate != bdate[1] Then{ mm = 0; m1 = mm[1]; } mm = mm +m; if stime >= 133000 and stime < 151500 and m1 >= 30000000000 Then buy("b",OnClose,def,floor((설정자금/n)/C)); if MarketPosition == 1 and sdate > EntryDate then{ exitlong("bx1",atlimit,dayopen*(1+Per/100)); if stime >= 91000 Then exitlong("bx2"); } 4 var : TF1(0),TF2(0),O1(0),O2(0); var : sum1(0),sum2(0),sum3(0); TF1 = TimeToMinutes(stime)%5; TF2 = TimeToMinutes(stime)%10; if bdate != bdate[1] Then{ var1 = 0; var2 = 0; var3 = 0; } if bdate != bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{ O1 = O; if (bdate == bdate[1] and C[1] > O1[1]) Then var1 = var1 + (C[1]-O1[1]); } if bdate != bdate[1] or (bdate == bdate[1] and TF2 < TF2[1]) Then{ O2 = O; if (bdate == bdate[1] and C[1] > O2[1]) Then{ var2 = var2 + (C[1]-O2[1]); } } if stime >= 93000 and stime[1] < 93000 Then{ sum1 = var1; sum2 = var2; var3 = C[1]-dayopen; if var3 > 0 Then sum3 = var3; Else sum3 = 0; } plot1(sum1); plot2(sum2); plot3(sum3); 5 input : 타주기분(30),P(20),Dv(2); var : S1(0),D1(0),TM(0),TF(0),cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup1(0),BBdn1(0),Bbup2(0),BBdn2(0); var : mm(0),m1(0); Array : CC[100](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; mm = 0; m1 = mm[1]; } mm = mm + m; if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum = 0; for cnt = 0 to P-1{ sum = sum + CC[cnt]; } BBmd = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2; } Stdv = SquareRoot(SumSqrt / P); BBup1 = BBmd + Stdv*2; BBdn1 = BBmd - Stdv*2; BBup2 = BBmd + Stdv*1.8; BBdn2 = BBmd - Stdv*1.8; if stime >= 90000 and stime < 93000 and crossup(c,bbup1) and m1 >= 20000000000 Then buy("b1"); if stime >= 93000 and stime < 133000 and CrossDown(L,bbdn2) and m1 >= 20000000000 Then buy("b2"); if MarketPosition == 1 and IsEntryName("b1") == true and CrossDown(L,bbup1) Then exitlong("bx1"); if MarketPosition == 1 and IsEntryName("b2") == true and CrossUp(H,bbup2) Then exitlong("bx2"); } } 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 이것저것 문의드립니다. > 파이썬 때는 구현 엄두도 못할 전략들 도와주시는 덕분에 실험해보고 있네요. 매번 감사합니다. 1. 시스템 아래 수식은 하락하면 더 조금사고 상승하면 더 많이 사는 수식인데요. 전에 질문하고 답 얻은 내용입니다. if Rate > 0 Then 이 부분이 이해가 잘 가지 않습니다. var1이 0보다 더 크면으로 바꿔야 하는 건지요? input : 투입금액(1000000); var : Rate(0); var1 = (C-C[1])/C[1]*100; if MarketPosition == 0 Then value1 = 100; if Rate > 0 Then value1 = value1-(value1*Rate); Else value1 = value1+(value1*Rate); if MarketPosition >= 0 Then buy("b",OnClose,def,floor((투입금액*value1)/C)); if NextBarSdate > sdate Then ExitLong("bx",AtMarket); 2. 시스템 아래 전략에 조건 하나씩 추가한 코딩 부탁드립니다. 금일 130000까지 누적 거래대금이 100억 이상 일 때 버전 input : 설정자금(10000000),n(10),Per(5); if stime >= 133000 and stime < 151500 Then buy("b",OnClose,def,floor((설정자금/n)/C)); if MarketPosition == 1 and sdate > EntryDate then{ exitlong("bx1",atlimit,dayopen*(1+Per/100)); if stime >= 91000 Then exitlong("bx2"); } 비고: 2-3번 전략은 다 모든 신호 허용하고 피라미딩을 해야 하는 건가요? 3. 시스템 아래 수식에 전일 거래대금이 300억 이상일 때라는 조건을 추가 부탁드립니다. 전일 거래대금이 300억 이상일 때 분할매수해서 익일에 파는 내용입니다. input : 설정자금(10000000),n(10),Per(5); if stime >= 133000 and stime < 151500 Then buy("b",OnClose,def,floor((설정자금/n)/C)); if MarketPosition == 1 and sdate > EntryDate then{ exitlong("bx1",atlimit,dayopen*(1+Per/100)); if stime >= 91000 Then exitlong("bx2"); } 4. 지표 -장시작후 30분동안 5분봉 10분봉 30분봉의 양봉길이(각 타임프레임 봉에서 양봉만 나온 봉의 길이만 더한 것) plot1 5분봉의 양봉길이 plot2 10분봉의 양봉길이 plot3 30분봉의 양봉길이 비고 구현이 어려운 내용이면 30분봉 하나만이라도 부탁드립니다. 5. 시스템 아래 수식에 전일 거래대금이 200억이상이란 조건 추가 부탁드립니다. input : 타주기분(30),P(20),Dv(2); var : S1(0),D1(0),TM(0),TF(0),cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup1(0),BBdn1(0),Bbup2(0),BBdn2(0); Array : CC[100](0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum = 0; for cnt = 0 to P-1{ sum = sum + CC[cnt]; } BBmd = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2; } Stdv = SquareRoot(SumSqrt / P); BBup1 = BBmd + Stdv*2; BBdn1 = BBmd - Stdv*2; BBup2 = BBmd + Stdv*1.8; BBdn2 = BBmd - Stdv*1.8; if stime >= 90000 and stime < 93000 and crossup(c,bbup1) Then buy("b1"); if stime >= 93000 and stime < 133000 and CrossDown(L,bbdn2) Then buy("b2"); if MarketPosition == 1 and IsEntryName("b1") == true and CrossDown(L,bbup1) Then exitlong("bx1"); if MarketPosition == 1 and IsEntryName("b2") == true and CrossUp(H,bbup2) Then exitlong("bx2"); } }