커뮤니티

질문 올립니다.

프로필 이미지
즐겁게
2020-03-16 11:35:49
400
글번호 136889
답변완료
안녕하세요. 늘 감사드립니다. 올리는 질문마다 항상 상세하고 친절하게 답을 주셔서, 그 것을 보며 공부하면서 아주 많이 배우게 되어 대단히 감사합니다. 지금, 둘 내지 세 개의 기준(조건)을 순차적으로(즉, 동시가 아니라 차례대로...) 충족시키고 나면 즉시(AtLimit, AtStop 활용) 주문이 나가서 체결가능하게 하는 매매식을 만드는 방법에 대해 공부하고 있습니다. 이런 예제 소스를 보여 주시면, 보고 열심히 공부하고자 합니다. 잘 부탁드립니다. 예로서, A. 이평선들 Max Min 돌파이탈 지지저항 전략 변수들: 5개의 이평선들(기간값 각각 input: ii(50), jj(100), kk(150), ll(200), mm(250); 외부변수)의 최대값(var: Max(0))과 최소값(var: Min(0)), 그 것의 중심선 (var: Center(0); Center = (Max+Min)/2); ) Max와 Min의 차이 (var: Dif(0); Dif = Max-Min;) // 매수1 ((돌파 매수)): (제1조건:) (C가 Min 아래에 있다가) C가 Min을 뚫고 올라 간 후 (제2조건:) C가 Center를 nn(7)(외부변수)틱보다 더 높게 올라 가면 [ = 즉, C가 Center+nn*PriceScale을 CrossUp 또는 C > Center+nn*PriceScale ], then 즉시(AtStop?) 매수 [ = Buy("B1", AtStop...); ]. (제3조건) 제1조건, 제2조건 충족 후, C가 Max를 pp(5)(외부변수)보다 더 높게 올라 가면, [ = 즉, C가 Max+pp*PriceScale을 CrossUp 또는 C > Max+pp*PriceScale], then 즉시((AtStop?) 매수 [ = Buy("B2", AtStop...); ] // 즉 피라미딩 가능. // 매수2 ((지지 매수)): (제1조건): C가 Max의 uu(7)((외부변수)) 틱 위에 있었다가 (제2조건): C가 Max의 아래 위 각 vv(2)((외부변수))틱 범위 속에 들어 갔다가 ((즉, Max에 접근했다가)) (제3조건): C가 Max의 ww(8)((외부변수)) 틱 위로 올라 가는 순간 즉시 매수 [ = Buy("B3", AtStop...); ]. // 매수청산 C가 EMA(ee)(=ee(2)=기간값 2. 외부변수로)를 하향 이탈하는 즉시 ExitLong("EL1", AtStop?...); // 매도1, 매도2, 매도청산은 매수의 경우와 정 반대로... ((외부변수는 그 대로 같이 사용)) B. 볼린저 밴드 급등 매매 전략 // 매수 (제1조건) C가 하단선을 아래에서 위로 돌파 (제2조건) C가 중간선(EMA(bb) (bb(12)는 볼밴 중심선인 EMA의 기간값 외부변수)을 cc(3)(=외부변수)틱 돌파 ((즉 중간선+cc틱을 상향돌파)) 즉시 매수 [ = Buy("BB", AtStop...); ] //매수청산1 (제1조건) C가 볼밴 상단선 위에 있다 (제2조건) C가 볼밴 상단선을 dd 틱 (input: dd(3); // 외부변수)만큼 하회하는 즉시 ExitLong("EL1", AtLimit?...); //매수청산2 (제1조건) C가 볼밴 중심선과 상단선 사이에 있다. (제2조건) C가 볼밴 중심선을 ff틱(ff(2)=외부변수) 하회하는 즉시 매수청산 = ExitLong("EL2", AtStop?) //매도와 매도청산은 매수의 경우와 정반대로... 대단히 감사합니다!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-16 19:27:35

안녕하세요 예스스탁입니다. 1 input: ii(50), jj(100), kk(150), ll(200), mm(250),pp(5),uu(7),vv(2),ww(8),ee(2); var : maxv(0),center(0),minv(0),dif(0),t(0),hv(0),lv(0); var : _up(0),uh1(0),ul1(0),uh2(0),ul2(0); var : _dn(0),dh1(0),dl1(0),dh2(0),dl2(0); var1 = ma(c,ii); var2 = ma(c,jj); var3 = ma(c,kk); var4 = ma(c,ll); var5 = ma(c,mm); value1 = ema(c,ee); if var5 > 0 then { maxv = max(var1,var2,var3,var4,var5); minv = min(var1,var2,var3,var4,var5); center = (maxv+minv)/2; dif = maxv-minv; } if crossup(c,minv) Then { T = 1; hv = h; } if CrossDown(c,maxv) Then { T = -1; lv = l; } if T == 1 then { if h > hv Then hv = h; if hv < center+PriceScale*pp Then buy("b1",AtStop,center+PriceScale*pp); if hv < maxv+PriceScale*pp Then buy("b2",AtStop,maxv+PriceScale*pp); } if crossup(c,maxv+PriceScale*vv) Then { _up = 1; uh1 = h; uh2 = uh1[1]; } if CrossDown(c,maxv+PriceScale*vv) Then { _up = -1; ul1 = l; ul2 = ul1[1]; } if _up == 1 Then { if h > uh1 Then uh1 = h; if uh2 > 0 and uh2 >= maxv+PriceScale*uu and ul1 >= maxv-PriceScale*vv and uh1 < maxv+PriceScale*ww Then buy("b3",AtStop,maxv+PriceScale*ww); } if _up == -1 Then { if l < ul1 Then ul1 = l; } if MarketPosition == 1 Then ExitLong("bx",AtStop,value1); if T == -1 then { if l < lv Then lv = h; if lv > center-PriceScale*pp Then sell("s1",AtStop,center-PriceScale*pp); if lv > minv-PriceScale*pp Then sell("s2",AtStop,minv-PriceScale*pp); } if CrossDown(c,minv-PriceScale*vv) Then { _dn = -1; dh1 = h; dh2 = dh1[1]; } if CrossUp(c,maxv-PriceScale*vv) Then { _dn = 1; dl1 = l; dl2 = dl1[1]; } if _dn == 1 Then { if h > dh1 Then dh1 = h; } if _dn == -1 Then { if l < dl1 Then dl1 = l; if dl2 > 0 and dl2 <= minv-PriceScale*uu and dh1 <= minv+PriceScale*vv and dl1 > minv-PriceScale*ww Then sell("s3",AtStop,minv-PriceScale*ww); } if MarketPosition == -1 Then ExitShort("sx",AtStop,value1); 2 Input: bb(12),dv(2),cc(3),dd(3),ff(2); Var : SumSqrt(0), Counter(0),AVGV(0),Stdv(0),BBmd(0),BBup(0),BBdn(0); var : T(0),hv(0),lv(0); BBmd = ema(c,bb); If index >= bb Then{ SumSqrt = 0; For Counter = 0 To bb - 1 Begin SumSqrt = SumSqrt + (C[Counter] - BBmd) * (C[Counter] - BBmd); End; Stdv = SquareRoot(SumSqrt / bb); BBup = BBmd + (Dv * stdv); BBdn = BBmd - (Dv * stdv); } if crossup(c,bbdn) Then { T = 1; hv = h; } if CrossDown(c,bbup) Then { T = -1; lv = l; } if T == 1 then { if h > hv Then hv = h; if hv < bbmd+PriceScale*cc Then buy("b1",AtStop,BBmd+PriceScale*cc); } if T == -1 then { if l < lv Then lv = l; if lv > bbmd-PriceScale*cc Then sell("s1",AtStop,BBmd-PriceScale*cc); } if MarketPosition == 1 Then { if c > bbup Then exitlong("bx1",AtStop,bbup-PriceScale*dd); if c < bbup and c > bbmd Then exitlong("bx2",AtStop,bbmd-PriceScale*ff); } if MarketPosition == -1 Then { if c < bbdn Then ExitShort("sx1",AtStop,bbdn+PriceScale*dd); if c < bbup and c > bbmd Then ExitShort("sx2",AtStop,bbmd+PriceScale*ff); } 즐거운 하루되세요 > 즐겁게 님이 쓴 글입니다. > 제목 : 질문 올립니다. > 안녕하세요. 늘 감사드립니다. 올리는 질문마다 항상 상세하고 친절하게 답을 주셔서, 그 것을 보며 공부하면서 아주 많이 배우게 되어 대단히 감사합니다. 지금, 둘 내지 세 개의 기준(조건)을 순차적으로(즉, 동시가 아니라 차례대로...) 충족시키고 나면 즉시(AtLimit, AtStop 활용) 주문이 나가서 체결가능하게 하는 매매식을 만드는 방법에 대해 공부하고 있습니다. 이런 예제 소스를 보여 주시면, 보고 열심히 공부하고자 합니다. 잘 부탁드립니다. 예로서, A. 이평선들 Max Min 돌파이탈 지지저항 전략 변수들: 5개의 이평선들(기간값 각각 input: ii(50), jj(100), kk(150), ll(200), mm(250); 외부변수)의 최대값(var: Max(0))과 최소값(var: Min(0)), 그 것의 중심선 (var: Center(0); Center = (Max+Min)/2); ) Max와 Min의 차이 (var: Dif(0); Dif = Max-Min;) // 매수1 ((돌파 매수)): (제1조건:) (C가 Min 아래에 있다가) C가 Min을 뚫고 올라 간 후 (제2조건:) C가 Center를 nn(7)(외부변수)틱보다 더 높게 올라 가면 [ = 즉, C가 Center+nn*PriceScale을 CrossUp 또는 C > Center+nn*PriceScale ], then 즉시(AtStop?) 매수 [ = Buy("B1", AtStop...); ]. (제3조건) 제1조건, 제2조건 충족 후, C가 Max를 pp(5)(외부변수)보다 더 높게 올라 가면, [ = 즉, C가 Max+pp*PriceScale을 CrossUp 또는 C > Max+pp*PriceScale], then 즉시((AtStop?) 매수 [ = Buy("B2", AtStop...); ] // 즉 피라미딩 가능. // 매수2 ((지지 매수)): (제1조건): C가 Max의 uu(7)((외부변수)) 틱 위에 있었다가 (제2조건): C가 Max의 아래 위 각 vv(2)((외부변수))틱 범위 속에 들어 갔다가 ((즉, Max에 접근했다가)) (제3조건): C가 Max의 ww(8)((외부변수)) 틱 위로 올라 가는 순간 즉시 매수 [ = Buy("B3", AtStop...); ]. // 매수청산 C가 EMA(ee)(=ee(2)=기간값 2. 외부변수로)를 하향 이탈하는 즉시 ExitLong("EL1", AtStop?...); // 매도1, 매도2, 매도청산은 매수의 경우와 정 반대로... ((외부변수는 그 대로 같이 사용)) B. 볼린저 밴드 급등 매매 전략 // 매수 (제1조건) C가 하단선을 아래에서 위로 돌파 (제2조건) C가 중간선(EMA(bb) (bb(12)는 볼밴 중심선인 EMA의 기간값 외부변수)을 cc(3)(=외부변수)틱 돌파 ((즉 중간선+cc틱을 상향돌파)) 즉시 매수 [ = Buy("BB", AtStop...); ] //매수청산1 (제1조건) C가 볼밴 상단선 위에 있다 (제2조건) C가 볼밴 상단선을 dd 틱 (input: dd(3); // 외부변수)만큼 하회하는 즉시 ExitLong("EL1", AtLimit?...); //매수청산2 (제1조건) C가 볼밴 중심선과 상단선 사이에 있다. (제2조건) C가 볼밴 중심선을 ff틱(ff(2)=외부변수) 하회하는 즉시 매수청산 = ExitLong("EL2", AtStop?) //매도와 매도청산은 매수의 경우와 정반대로... 대단히 감사합니다!