커뮤니티

수식문의

프로필 이미지
softtoug
2018-07-29 18:33:44
140
글번호 120964
답변완료

첨부 이미지

안녕하세요 하기 수식 문의 드립니다. 1. MACD oscillator 로 진입을 하고 싶습니다. 0 보다 높아지면 매수 진입, 0보다 낮아지면 매도 진입 피라미딩 방법으로 진입하고 싶습니다. 가격이 올라가거나 떨어지거나 순서대로 바뀌게 되니 3가지 시간대로 차례차례 진입하고 싶습니다. : data1 : 60분, data2 : 30분 , data3 : 10분 조건 : 매수 진입은 볼린져 밴드 중앙이평 하단에서만 oscillator 가 0 이상으로 바뀌었을때만, 진입하게 부탁드립니다. 밴드 중앙이평 상단에서는 매수진입 금지입니다. 매도 진입은 볼린져 밴드 중앙이평 상단에서만 oscillator 가 0 이하로 바뀌었을때만, 진입하게 부탁드립니다. 벤드 중앙이평 하단에서는 매도진입 금지입니다. 익절청산 조건은 : data 1 은 30틱, data 2 는 20틱, data 3 는 10틱으로 부탁드립니다. 조정가능하게 수식 부탁드립니다. 손절청산 조건은 없습니다. 추가로 궁금한게 있는데, 예를 들어 크루드 오일로 data 1 이 70불에 매도를 들어가고 data2 가 69.90 에 매도를 들어갔으면 청산은 제가 말씀드린 각각의 틱수에서 청산이 되는지요? 아니면 청산방식에서 선입선출이 적용되는지요? 제가 바라는 것과 달리 69.90에 진입한 것이 30틱 후에 청산되고 70에 진입한것이 20틱 후에 청산 되는 것인지요? 2. 가격이 현재 볼린져 밴드 하단에 몸통이나 꼬리가 걸쳐져 있고, 앞봉은 음봉이고, 앞봉보다 꼬리는 상관없이 앞봉의 몸통대비 몸통만 큰 양봉이 발생하면, 매수 진입부탁드립니다. 반대로 가격이 현재 볼린져 밴드 상단에 몸통이나 꼬리가 걸쳐져 있고, 앞봉은 양봉이고, 앞봉보다 꼬리는 상관없이 앞봉의 몸통대비 몸통만 큰 음봉이 발생하면, 매도 진입부탁드립니다. data2 와 data 3는 지표로 챠트에 표시만 되게끔 부탁드립니다. 봉색깔이 노란색으로 되게 부탁드립니다. 3. 첨부된 캡쳐 파일처럼 MACD oscillator 가 0 이상으로 바뀌는 첫번째 봉이, 볼린져 상단을 넘어서서 완성이되고 다음봉이 음봉이 발생하면, 음봉발생 후 매도 진입 부탁드립니다. 반대로도 마찬가지로, MACD oscillator가 0이하로 바뀌는 첫번째 봉이, 볼린져 하단을 넘어서서 완성이되고 다음봉이 양봉이 발생하면, 양봉발생 후 매수 진입 부탁드립니다. data2와 data3는 지표로 챠트에 표시만 되게끔 부탁드립니다. 봉색갈을 연두색으로 되게 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-30 11:34:01

안녕하세요 예스스탁입니다. 1 수식은 모두 기본차트 기준입니다. 기본차트 봉 완성시 조건체크해 신호가 발생합니다. 참조데이터 봉완성시로는 신호가 발생하지 않습니다. data1,data2,data3 진입별로 이름을 지정하고 청산은 지정한 진입명에 대해 청산하게 작성했습니다. input : short1(12),long1(26),sig1(9),P1(20); input : short2(12),long2(26),sig2(9),P2(20); input : short3(12),long3(26),sig3(9),P3(20); var : MACDO1(0,data1),bbmd1(0,data1),BP1(0,data1),SP1(0,data1); var : MACDO2(0,data2),bbmd2(0,data2),BP2(0,data2),SP2(0,data2); var : MACDO3(0,data3),bbmd3(0,data3),BP3(0,data3),SP3(0,data3); MACDO1 = data1(MACD_OSC(Short1,long1,sig1)); MACDO2 = data2(MACD_OSC(Short2,long2,sig2)); MACDO3 = data3(MACD_OSC(Short3,long3,sig3)); BBmd1 = data1(ma(C,P1)); BBmd2 = data1(ma(C,P2)); BBmd3 = data1(ma(C,P3)); if (MarketPosition == 0 or (MarketPosition == 1 and var1 == 0)) and data1(C< bbmd1 and CrossUp(MACDO1,0)) Then buy("b1"); if (MarketPosition == 0 or (MarketPosition == 1 and var2 == 0)) and data2(C< bbmd2 and CrossUp(MACDO2,0)) Then buy("b2"); if (MarketPosition == 0 or (MarketPosition == 1 and var3 == 0)) and data3(C< bbmd3 and CrossUp(MACDO3,0)) Then buy("b3"); if MarketPosition == 1 Then{ if LatestEntryName == "b1" and CurrentContracts > CurrentContracts[1] Then BP1 = LatestEntryPrice(0); if LatestEntryName == "b2" and CurrentContracts > CurrentContracts[1] Then BP2 = LatestEntryPrice(0); if LatestEntryName == "b3" and CurrentContracts > CurrentContracts[1] Then BP3 = LatestEntryPrice(0); if BP1 > 0 Then ExitLong("bx1",Atlimit,BP1+PriceScale*30,"b1"); if BP2 > 0 Then ExitLong("bx2",Atlimit,BP2+PriceScale*20,"b2"); if BP3 > 0 Then ExitLong("bx3",Atlimit,BP3+PriceScale*10,"b3"); } Else { BP1 = 0; BP2 = 0; BP3 = 0; } if data1(C> bbmd1 and CrossDown(MACDO1,0)) Then Sell("s1"); if data2(C> bbmd2 and CrossDown(MACDO2,0)) Then Sell("s2"); if data3(C> bbmd3 and CrossDown(MACDO3,0)) Then Sell("s3"); if MarketPosition == -1 Then{ if LatestEntryName == "s1" and CurrentContracts > CurrentContracts[1] Then SP1 = LatestEntryPrice(0); if LatestEntryName == "s2" and CurrentContracts > CurrentContracts[1] Then SP2 = LatestEntryPrice(0); if LatestEntryName == "s3" and CurrentContracts > CurrentContracts[1] Then SP3 = LatestEntryPrice(0); if SP1 > 0 Then ExitShort("sx1",Atlimit,SP1-PriceScale*30,"s1"); if SP2 > 0 Then ExitShort("sx2",Atlimit,SP2-PriceScale*20,"s2"); if SP3 > 0 Then ExitShort("sx3",Atlimit,SP3-PriceScale*10,"s3"); } Else { SP1 = 0; SP2 = 0; SP3 = 0; } 2 Input : Period(20), MultiD(2); var : BBmd(0),BBup(0),BBdn(0); BBmd = ma(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); if H >= BBdn and BBdn >= L and C[1] < O[1] and C > O and abs(C-O) > abs(C[1]-O[1]) Then buy(); if H >= BBup and BBup >= L and C[1] > O[1] and C < O and abs(C-O) > abs(C[1]-O[1]) Then sell(); 참조데이터에는 강조식이 적용되지 않아 몸통에 색을 입힐수 없습니다. 일반 지표식으로 작성해 드립니다. 점그래프로 지정하고 해당 데이터위에 지표를 올려서 보셔야 합니다. Input : Period(20), MultiD(2); var : BBmd(0,data2),BBup(0,data2),BBdn(0,data2); BBmd = data2(ma(C,Period)); BBup = data2(BollBandUp(Period,MultiD)); BBdn = data2(BollBandDown(Period,MultiD)); if data2(H >= BBdn and BBdn >= L and C[1] < O[1] and C > O and abs(C-O) > abs(C[1]-O[1])) Then plot1(data2(H)); if data2(H >= BBup and BBup >= L and C[1] > O[1] and C < O and abs(C-O) > abs(C[1]-O[1])) Then plot2(data2(L)); Input : Period(20), MultiD(2); var : BBmd(0,data3),BBup(0,data3),BBdn(0,data3); BBmd = data3(ma(C,Period)); BBup = data3(BollBandUp(Period,MultiD)); BBdn = data3(BollBandDown(Period,MultiD)); if data3(H >= BBdn and BBdn >= L and C[1] < O[1] and C > O and abs(C-O) > abs(C[1]-O[1])) Then plot1(data3(H)); if data3(H >= BBup and BBup >= L and C[1] > O[1] and C < O and abs(C-O) > abs(C[1]-O[1])) Then plot2(data3(L)); 3 Input : Period(20), MultiD(2),short(12),long(26),sig(0); var : BBmd(0),BBup(0),BBdn(0),MACDO(0); MACDO = MACD_OSC(short,long,sig); BBmd = ma(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); if crossup(MACDO[1],0) and C[1] > BBup[1] and C < O Then sell(); if CrossDown(MACDO[1],0) and C[1] < BBdn[1] and C > O Then buy(); 2번과 같습니다. 참조데이터에 강조식이 적용되지 않으므로 지표식으로 작성해서 차트에 적용후 해당 데이터위로 올려서 보셔야 합니다. Input : Period(20), MultiD(2),short(12),long(26),sig(0); var : BBmd(0,data2),BBup(0,data2),BBdn(0,data2),MACDO(0,data2); MACDO = data2(MACD_OSC(short,long,sig)); BBmd = data2(ma(C,Period)); BBup = data2(BollBandUp(Period,MultiD)); BBdn = data2(BollBandDown(Period,MultiD)); if data2(crossup(MACDO[1],0) and C[1] > BBup[1] and C < O) Then plot1(data2(H)); if data2(CrossDown(MACDO[1],0) and C[1] < BBdn[1] and C > O) Then plot2(data2(L)); Input : Period(20), MultiD(2),short(12),long(26),sig(0); var : BBmd(0,data3),BBup(0,data3),BBdn(0,data3),MACDO(0,data3); MACDO = data3(MACD_OSC(short,long,sig)); BBmd = data3(ma(C,Period)); BBup = data3(BollBandUp(Period,MultiD)); BBdn = data3(BollBandDown(Period,MultiD)); if data3(crossup(MACDO[1],0) and C[1] > BBup[1] and C < O) Then plot1(data3(H)); if data3(CrossDown(MACDO[1],0) and C[1] < BBdn[1] and C > O) Then plot2(data3(L)); 즐거운 하루되세요 > softtoug 님이 쓴 글입니다. > 제목 : 수식문의 > 안녕하세요 하기 수식 문의 드립니다. 1. MACD oscillator 로 진입을 하고 싶습니다. 0 보다 높아지면 매수 진입, 0보다 낮아지면 매도 진입 피라미딩 방법으로 진입하고 싶습니다. 가격이 올라가거나 떨어지거나 순서대로 바뀌게 되니 3가지 시간대로 차례차례 진입하고 싶습니다. : data1 : 60분, data2 : 30분 , data3 : 10분 조건 : 매수 진입은 볼린져 밴드 중앙이평 하단에서만 oscillator 가 0 이상으로 바뀌었을때만, 진입하게 부탁드립니다. 밴드 중앙이평 상단에서는 매수진입 금지입니다. 매도 진입은 볼린져 밴드 중앙이평 상단에서만 oscillator 가 0 이하로 바뀌었을때만, 진입하게 부탁드립니다. 벤드 중앙이평 하단에서는 매도진입 금지입니다. 익절청산 조건은 : data 1 은 30틱, data 2 는 20틱, data 3 는 10틱으로 부탁드립니다. 조정가능하게 수식 부탁드립니다. 손절청산 조건은 없습니다. 추가로 궁금한게 있는데, 예를 들어 크루드 오일로 data 1 이 70불에 매도를 들어가고 data2 가 69.90 에 매도를 들어갔으면 청산은 제가 말씀드린 각각의 틱수에서 청산이 되는지요? 아니면 청산방식에서 선입선출이 적용되는지요? 제가 바라는 것과 달리 69.90에 진입한 것이 30틱 후에 청산되고 70에 진입한것이 20틱 후에 청산 되는 것인지요? 2. 가격이 현재 볼린져 밴드 하단에 몸통이나 꼬리가 걸쳐져 있고, 앞봉은 음봉이고, 앞봉보다 꼬리는 상관없이 앞봉의 몸통대비 몸통만 큰 양봉이 발생하면, 매수 진입부탁드립니다. 반대로 가격이 현재 볼린져 밴드 상단에 몸통이나 꼬리가 걸쳐져 있고, 앞봉은 양봉이고, 앞봉보다 꼬리는 상관없이 앞봉의 몸통대비 몸통만 큰 음봉이 발생하면, 매도 진입부탁드립니다. data2 와 data 3는 지표로 챠트에 표시만 되게끔 부탁드립니다. 봉색깔이 노란색으로 되게 부탁드립니다. 3. 첨부된 캡쳐 파일처럼 MACD oscillator 가 0 이상으로 바뀌는 첫번째 봉이, 볼린져 상단을 넘어서서 완성이되고 다음봉이 음봉이 발생하면, 음봉발생 후 매도 진입 부탁드립니다. 반대로도 마찬가지로, MACD oscillator가 0이하로 바뀌는 첫번째 봉이, 볼린져 하단을 넘어서서 완성이되고 다음봉이 양봉이 발생하면, 양봉발생 후 매수 진입 부탁드립니다. data2와 data3는 지표로 챠트에 표시만 되게끔 부탁드립니다. 봉색갈을 연두색으로 되게 부탁드립니다. 감사합니다.