커뮤니티

옵션매수매도

프로필 이미지
외국인
2012-01-28 10:50:23
572
글번호 47016
답변완료
안녕하세요 현제의식으로 data 는 선물을기준으로 data1콜옵션매수 청산식 data2는 풋옵션매수청산식 부탁드립니다 var : pp(0), pr1(0), pr2(0), ps1(0), ps2(0), sp(40), lp(350), emashort(0),emalong(0), pivot_idx(22), pivot_ch(0.3), ilmokidx(15), ilmokx(14),ilmok1(0),ilmok2(0), ilmok3(0), sunhang1(0), sunhang2(0), ccilen(50), ccich(100), mult(1), ccivalue(0), bcnt(0), scnt(0); #손절 1.6 포인트 SetStopLoss(1.6, PointStop); #피봇 # if dayindex() == 0 then{# 첫봉에서 pp = (DayHigh(1)+DayLow(1)+DayClose(1))/3;#(전일고가+전일저가+전일종가)/3을 피봇포인트 값으로 저장 pr1 = 2*pp-daylow(1); #PP의 두배값에서 전일저가를 뺀값을 저항1값으로 저장 pr2 = pp+DayHigh(1)-DayLow(1);#PP값+전일고가-전일저가값을 저항2값으로 저장 ps1 = 2*pp-DayHigh(1);##PP의 두배값에서 전일고가를 뺀값을 지지1값으로 저장 ps2 = pp-DayHigh(1)+DayLow(1);#PP값-전일고가+전일저가값을 지지2값으로 저장 } #14시 이전에 if stime < 140000 then { #종가가 지지1값을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if crossup(c, ps1) and bids > asks then buy("pprec_b"); #종가가 저항1값을 하향이탈하고 매도잔량이 매수잔량보다 크면 매도 if CrossDown(c, pr1) and bids < asks then sell("pprev_s"); } #CCI if date != date[1] then { bcnt = 0; scnt = 0; } CCIvalue = cci(ccilen);#CCI값 #CCI가 -100을 상향돌파하고 매수잔량이 매도잔량보다 크고 당일 첫번째 조건만족할 때만 매수진입 if CrossUp(ccivalue, -ccich) and bids > asks and bcnt == 0 Then{ buy("ccirev_b"); bcnt = bcnt +1;#if조건 만족하면 1씩 증가 } #CCI가 100을 하향이탈하고 매도잔량이 매수잔량보다 크고 당일 첫번째 조건만족할 때만 매도진입 if CrossDown(ccivalue,ccich) and bids < asks and scnt == 0 Then{ sell("ccirev_s"); scnt = scnt+1;#if조건 만족하면 1씩증가 } if BarsSinceEntry(0) > 0 then {# 진입후(BarsSinceEntry가 0보다 크다는 진입이 들어가 있는 상태라는 표현입니다.) #진입명이 ccirev_b 일때 당일 저가를 갱신하면 매수청산 if IsEntryName("ccirev_b") and l == daylow(0) then exitlong("cci_le"); #진입명이 ccirev_s 일때 당일 고가를 갱신하면 매도청산 if IsEntryName("ccirev_s") and h == DayHigh(0) then ExitShort("cci_es"); } #지수이평 emashort = ema(c, sp);#단기지수이평 emalong = ema(c, lp);#장기지수이평 #단기지수이평이 장기지수이평을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if crossup(emashort, emalong) and bids > asks then buy("ema_b"); #단기지수이평이 장기지수이평을 하향이탈하고 매수잔량이 매도잔량보다 작으면 매도 if CrossDown(emashort, emalong) and bids < asks then sell("ema_s"); #피봇추세 #당일 22개봉 이전에 if DayIndex() <= pivot_idx then { #종가가 저항2값보다 크고 매수잔량이 매도잔량보다 크면 매수 if c > pr2 and bids > asks then buy("pp_b"); #종가가 지지2값보다 작고 매도잔량이 매수잔량보다 크면 매도 if c < ps2 and bids < asks then sell("pp_s"); } # PP_B 진입이 발생하고 주가가 저항2값-0.3보다 작아지면 매수청산 if IsEntryName("pp_b") and CrossDown(c,pr2-pivot_ch) then ExitLong("pp_es"); # PP_s 진입이 발생하고 주가가 지지2값+.3보다 커지면 매도청산 if IsEntryName("pp_s") and Crossup(c,ps2+pivot_ch) then ExitShort("pp_el"); #일목 ilmok1 = (Highest(h,ilmokx)+lowest(l,ilmokx))/2;#14봉 최고가와 최저가의 중간값 ilmok2 = (Highest(h,ilmokx*3)+lowest(l,ilmokx*3))/2;#14*3봉 최고가와 최저가의 중간값 ilmok3 = (Highest(h,ilmokx*3*2)+lowest(l,ilmokx*3*2))/2;#14*3*2봉 최고가와 최저가의 중간값 sunhang1 = (ilmok1+ilmok2)/2;//선행스팬1 sunhang2 = ilmok3;#선행스팬2 #당일 15번째 봉 이후 if DayIndex() == ilmokidx+1 then { #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 큰값(구름대 상단)보다 크고 현재봉 매수잔량이 매도잔량보다 많으면 매수 if AccumN( IFF (c > max(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids > asks Then buy("ilmokb"); #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 작은값(구름대 하단)보다 작고 현재봉 매도잔량이 매수잔량보다 많으면 매도 if AccumN( IFF (c < min(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids < asks Then sell("ilmoks"); } #ilmokb 진입후에 선행스팬1이 선행스팬2를 하향이탈하면 매수청산 if IsEntryName("ilmokb") and CrossDown(c, max(sunhang1, sunhang2)) Then ExitLong("ilmok_el"); #ilmoks 진입후에 선행스팬1이 선행스팬2를 상향돌파하면 매도청산 if IsEntryName("ilmoks") and Crossup(c, min(sunhang1, sunhang2)) Then ExitShort("ilmok_es"); #==========================================# # 지표명 : 꺾은선차트 # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:상승전환가격(0.5),하락전환가격(0.5); Var:j(0),꺾은선(0),방향(0),상승(100),하락(-100), 기준고(0),기준저(0),기준고Bar(0),기준저Bar(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If 기준고 <= C || 기준고 == 0 || IsNaN(기준고) == True Then { 기준고 = C; 기준고Bar = 0; } Else 기준고Bar = 기준고Bar + 1; If 기준저 >= C || 기준저 == 0 || IsNaN(기준저) == True Then { 기준저 = C; 기준저Bar = 0; } Else 기준저Bar = 기준저Bar + 1; #==========================================# # 추세방향 결정 #==========================================# If 기준저[1] + 상승전환가격 > C[1] && 기준저[1] + 상승전환가격 <= C Then 방향 = 상승; If 기준고[1] - 하락전환가격 < C[1] && 기준고[1] - 하락전환가격 >= C Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = C; 기준저Bar = 0; 기준고 = C; 기준고Bar = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = C; 기준고Bar = 0; 기준저 = C; 기준저Bar = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If 기준고[1] - 하락전환가격 <= C[1] && 기준고[1] - 하락전환가격 > C && 고[1] < 기준고 Then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = C; 기준고Bar = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If 기준저[1] + 상승전환가격 >= C[1] && 기준저[1] + 상승전환가격 < C && 저[1] > 기준저 Then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = C; 기준저Bar = 0; } } #==========================================# # 지표식 출력 #==========================================# /* //If 꺾은선[1] != 꺾은선 Then Plot1(꺾은선,"파동"); //Else If LastBarOnChart == 1 Then plot2(Iff(방향 == 상승,기준고,기준저)); If 꺾은선[1] != 꺾은선 Then{ var1 = 꺾은선; var2 = var1[1]; Plot1(꺾은선); } If 기준저[1] <= C and c>o Then Plot4(기준저,"파동1",red); If 기준저[1] >= C and c<o Then Plot4(기준저,"파동1",blue); If 기준고[1] <= C and c<o Then Plot5(기준고,"파동1",red); If 기준고[1] >= C and c>o Then Plot5(기준고,"파동1",blue); */ If 기준저[1] < C and c>ma(c,20)[1] and C[1] > ma(c,20)[1] and marketposition(0)!=1 Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매수신호발생1.wav"); buy("매수"); } If 기준저[1] > C and c<ma(c,20)[1] and C[1] < ma(c,20)[1] and marketposition(0)!=-1 Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매도신호발생1.wav"); sell("매도"); } #윗꼬리없는 양봉 - 고점에 점 if C > O and H == C then sell(); #아랫꼬리없는 음봉 - 저점에 점 if C < O and L == C then buy();
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-01-30 13:13:06

안녕하세요 예스스탁입니다. 선물을 참조로 옵션을 거래하기 위해서는 옵션이 주종목 선물이 참조종목(data2)이 되어야 합니다. 하나의 차트에는 주종목에만 주문이 나가게 되므로 콜과 풋 따로 차트를 만드시고 선물을 각각 참조로 적용하셔야 합니다. 1, 선물참조 콜옵션매수-매수청산 var : pp(0,data2), pr1(0,data2), pr2(0,data2), ps1(0,data2), ps2(0,data2), sp(40,data2), lp(350,data2), emashort(0,data2),emalong(0,data2), pivot_idx(22,data2), pivot_ch(0.3,data2), ilmokidx(15,data2), ilmokx(14,data2),ilmok1(0,data2),ilmok2(0,data2),ilmok3(0,data2),d2c(0,data1), sunhang1(0,data2), sunhang2(0,data2), ccilen(50,data2), ccich(100,data2), mult(1,data2), ccivalue(0,data2), bcnt(0,data2), scnt(0,data2); #손절 1.6 포인트 #SetStopLoss(1.6, PointStop); d2c = data2(c); if MarketPosition == 1 and d2c <= d2c[BarsSinceEntry]-1.6 then exitlong(); #피봇 # if data2(dayindex() == 0) then{# 첫봉에서 pp = data2((Highd(1)+lowd(1)+CloseD(1))/3);#(전일고가+전일저가+전일종가)/3을 피봇포인트 값으로 저장 pr1 = data2(2*pp-lowd(1)); #PP의 두배값에서 전일저가를 뺀값을 저항1값으로 저장 pr2 = data2(pp+Highd(1)-lowd(1));#PP값+전일고가-전일저가값을 저항2값으로 저장 ps1 = data2(2*pp-Highd(1));##PP의 두배값에서 전일고가를 뺀값을 지지1값으로 저장 ps2 = data2(pp-Highd(1)+lowd(1));#PP값-전일고가+전일저가값을 지지2값으로 저장 } #14시 이전에 if data2(stime < 140000) then { #종가가 지지1값을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if data2(crossup(c, ps1) and bids > asks) then buy("pprec_b"); #종가가 저항1값을 하향이탈하고 매도잔량이 매수잔량보다 크면 매도 if data2(CrossDown(c, pr1) and bids < asks) then sell("pprev_s"); } #CCI if data2(date != date[1]) then { bcnt = 0; scnt = 0; } CCIvalue =data2(cci(ccilen));#CCI값 #CCI가 -100을 상향돌파하고 매수잔량이 매도잔량보다 크고 당일 첫번째 조건만족할 때만 매수진입 if data2(CrossUp(ccivalue, -ccich) and bids > asks and bcnt == 0) Then{ buy("ccirev_b"); bcnt = bcnt +1;#if조건 만족하면 1씩 증가 } #CCI가 100을 하향이탈하고 매도잔량이 매수잔량보다 크고 당일 첫번째 조건만족할 때만 매도진입 if data2(CrossDown(ccivalue,ccich) and bids < asks and scnt == 0) Then{ ExitLong("ccirev_s"); scnt = scnt+1;#if조건 만족하면 1씩증가 } if data2(BarsSinceEntry(0) > 0) then {# 진입후(BarsSinceEntry가 0보다 크다는 진입이 들어가 있는 상태라는 표현입니다.) #진입명이 ccirev_b 일때 당일 저가를 갱신하면 매수청산 if data2(IsEntryName("ccirev_b") and l == lowd(0)) then exitlong("cci_le"); } #지수이평 emashort = data2(ema(c, sp));#단기지수이평 emalong = data2(ema(c, lp));#장기지수이평 #단기지수이평이 장기지수이평을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if data2(crossup(emashort, emalong) and bids > asks) then buy("ema_b"); #단기지수이평이 장기지수이평을 하향이탈하고 매수잔량이 매도잔량보다 작으면 매도 if data2(CrossDown(emashort, emalong) and bids < asks) then ExitLong("ema_s"); #피봇추세 #당일 22개봉 이전에 if data2(DayIndex() <= pivot_idx) then { #종가가 저항2값보다 크고 매수잔량이 매도잔량보다 크면 매수 if data2(c > pr2 and bids > asks) then buy("pp_b"); #종가가 지지2값보다 작고 매도잔량이 매수잔량보다 크면 매도 if data2(c < ps2 and bids < asks) then ExitLong("pp_s"); } # PP_B 진입이 발생하고 주가가 저항2값-0.3보다 작아지면 매수청산 if data2(IsEntryName("pp_b") and CrossDown(c,pr2-pivot_ch)) then ExitLong("pp_es"); #일목 ilmok1 = data2((Highest(h,ilmokx)+lowest(l,ilmokx))/2);#14봉 최고가와 최저가의 중간값 ilmok2 = data2((Highest(h,ilmokx*3)+lowest(l,ilmokx*3))/2);#14*3봉 최고가와 최저가의 중간값 ilmok3 = data2((Highest(h,ilmokx*3*2)+lowest(l,ilmokx*3*2))/2);#14*3*2봉 최고가와 최저가의 중간값 sunhang1 = data2((ilmok1+ilmok2)/2);//선행스팬1 sunhang2 = data2(ilmok3);#선행스팬2 #당일 15번째 봉 이후 if data2(DayIndex() == ilmokidx+1) then { #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 큰값(구름대 상단)보다 크고 현재봉 매수잔량이 매도잔량보다 많으면 매수 if data2(AccumN( IFF (c > max(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids > asks) Then buy("ilmokb"); #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 작은값(구름대 하단)보다 작고 현재봉 매도잔량이 매수잔량보다 많으면 매도 if data2(AccumN( IFF (c < min(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids < asks) Then ExitLong("ilmoks"); } #ilmokb 진입후에 선행스팬1이 선행스팬2를 하향이탈하면 매수청산 if data2(IsEntryName("ilmokb") and CrossDown(c, max(sunhang1, sunhang2))) Then ExitLong("ilmok_el"); #==========================================# # 지표명 : 꺾은선차트 # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:상승전환가격(0.5),하락전환가격(0.5); Var:j(0,data2),꺾은선(0,data2),방향(0,data2),상승(100,data2),하락(-100,data2), 기준고(0,data2),기준저(0,data2),기준고Bar(0,data2),기준저Bar(0,data2); Array:고[20](0,data2),저[20](0,data2),고Bar[20](0,data2),저Bar[20](0,data2); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If data2(기준고 <= C || 기준고 == 0 || IsNaN(기준고) == True) Then { 기준고 = data2(C); 기준고Bar = 0; } Else 기준고Bar = 기준고Bar + 1; If data2(기준저 >= C || 기준저 == 0 || IsNaN(기준저) == True) Then { 기준저 = data2(C); 기준저Bar = 0; } Else 기준저Bar = 기준저Bar + 1; #==========================================# # 추세방향 결정 #==========================================# If data2(기준저[1] + 상승전환가격 > C[1] && 기준저[1] + 상승전환가격 <= C) Then 방향 = 상승; If data2(기준고[1] - 하락전환가격 < C[1] && 기준고[1] - 하락전환가격 >= C) Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If data2(방향[1] == 하락 && 방향 == 상승) Then { For j = 18 DownTo 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = data2(C); 기준저Bar = 0; 기준고 = data2(C); 기준고Bar = 0; } Else If data2(방향[1] == 상승 && 방향 == 하락) Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = data2(C); 기준고Bar = 0; 기준저 = data2(C); 기준저Bar = 0; } Else If data2(방향[1] == 하락 && 방향 == 하락) Then { If data2(기준고[1] - 하락전환가격 <= C[1] && 기준고[1] - 하락전환가격 > C && 고[1] < 기준고) Then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = data2(C); 기준고Bar = 0; } } Else If data2(방향[1] == 상승 && 방향 == 상승) Then { If data2(기준저[1] + 상승전환가격 >= C[1] && 기준저[1] + 상승전환가격 < C && 저[1] > 기준저) Then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = data2(C); 기준저Bar = 0; } } #==========================================# # 지표식 출력 #==========================================# /* //If 꺾은선[1] != 꺾은선 Then Plot1(꺾은선,"파동"); //Else If LastBarOnChart == 1 Then plot2(Iff(방향 == 상승,기준고,기준저)); If 꺾은선[1] != 꺾은선 Then{ var1 = 꺾은선; var2 = var1[1]; Plot1(꺾은선); } If 기준저[1] <= C and c>o Then Plot4(기준저,"파동1",red); If 기준저[1] >= C and c<o Then Plot4(기준저,"파동1",blue); If 기준고[1] <= C and c<o Then Plot5(기준고,"파동1",red); If 기준고[1] >= C and c>o Then Plot5(기준고,"파동1",blue); */ If data2(기준저[1] < C and c>ma(c,20)[1] and C[1] > ma(c,20)[1] and marketposition(0)!=1) Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매수신호발생1.wav"); buy("매수"); } If data2(기준저[1] > C and c<ma(c,20)[1] and C[1] < ma(c,20)[1] and marketposition(0)!=-1) Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매도신호발생1.wav"); ExitLong("매도"); } #윗꼬리없는 양봉 - 고점에 점 if data2(C > O and H == C) then exitlong(); #아랫꼬리없는 음봉 - 저점에 점 if data2(C < O and L == C) then buy(); 2. 선물참조 풋옵션 매수-매수청산 var : pp(0,data2), pr1(0,data2), pr2(0,data2), ps1(0,data2), ps2(0,data2), sp(40,data2), lp(350,data2), emashort(0,data2),emalong(0,data2), pivot_idx(22,data2), pivot_ch(0.3,data2), ilmokidx(15,data2), ilmokx(14,data2),ilmok1(0,data2),ilmok2(0,data2),ilmok3(0,data2),d2c(0,data1), sunhang1(0,data2), sunhang2(0,data2), ccilen(50,data2), ccich(100,data2), mult(1,data2), ccivalue(0,data2), bcnt(0,data2), scnt(0,data2); #손절 1.6 포인트 #SetStopLoss(1.6, PointStop); d2c = data2(c); if MarketPosition == 1 and d2c >= d2c[BarsSinceEntry]+1.6 then ExitLong(); #피봇 # if data2(dayindex() == 0) then{# 첫봉에서 pp = data2((Highd(1)+lowd(1)+CloseD(1))/3);#(전일고가+전일저가+전일종가)/3을 피봇포인트 값으로 저장 pr1 = data2(2*pp-lowd(1)); #PP의 두배값에서 전일저가를 뺀값을 저항1값으로 저장 pr2 = data2(pp+Highd(1)-lowd(1));#PP값+전일고가-전일저가값을 저항2값으로 저장 ps1 = data2(2*pp-Highd(1));##PP의 두배값에서 전일고가를 뺀값을 지지1값으로 저장 ps2 = data2(pp-Highd(1)+lowd(1));#PP값-전일고가+전일저가값을 지지2값으로 저장 } #14시 이전에 if data2(stime < 140000) then { #종가가 지지1값을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if data2(crossup(c, ps1) and bids > asks) then ExitLong("pprec_b"); #종가가 저항1값을 하향이탈하고 매도잔량이 매수잔량보다 크면 매도 if data2(CrossDown(c, pr1) and bids < asks) then buy("pprev_s"); } #CCI if data2(date != date[1]) then { bcnt = 0; scnt = 0; } CCIvalue =data2(cci(ccilen));#CCI값 #CCI가 -100을 상향돌파하고 매수잔량이 매도잔량보다 크고 당일 첫번째 조건만족할 때만 매수진입 if data2(CrossUp(ccivalue, -ccich) and bids > asks and bcnt == 0) Then{ exitlong("ccirev_b"); bcnt = bcnt +1;#if조건 만족하면 1씩 증가 } #CCI가 100을 하향이탈하고 매도잔량이 매수잔량보다 크고 당일 첫번째 조건만족할 때만 매도진입 if data2(CrossDown(ccivalue,ccich) and bids < asks and scnt == 0) Then{ buy("ccirev_s"); scnt = scnt+1;#if조건 만족하면 1씩증가 } if data2(BarsSinceEntry(0) > 0) then {# 진입후(BarsSinceEntry가 0보다 크다는 진입이 들어가 있는 상태라는 표현입니다.) #진입명이 ccirev_b 일때 당일 저가를 갱신하면 매수청산 if data2(IsEntryName("ccirev_s") and H == HighD(0)) then exitlong("cci_es"); } #지수이평 emashort = data2(ema(c, sp));#단기지수이평 emalong = data2(ema(c, lp));#장기지수이평 #단기지수이평이 장기지수이평을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if data2(crossup(emashort, emalong) and bids > asks) then ExitLong("ema_b"); #단기지수이평이 장기지수이평을 하향이탈하고 매수잔량이 매도잔량보다 작으면 매도 if data2(CrossDown(emashort, emalong) and bids < asks) then buy("ema_s"); #피봇추세 #당일 22개봉 이전에 if data2(DayIndex() <= pivot_idx) then { #종가가 저항2값보다 크고 매수잔량이 매도잔량보다 크면 매수 if data2(c > pr2 and bids > asks) then ExitLong("pp_b"); #종가가 지지2값보다 작고 매도잔량이 매수잔량보다 크면 매도 if data2(c < ps2 and bids < asks) then buy("pp_s"); } # PP_s 진입이 발생하고 주가가 지지2값+.3보다 커지면 매도청산 if data2(IsEntryName("pp_s") and Crossup(c,ps2+pivot_ch)) then ExitLong("pp_el"); #일목 ilmok1 = data2((Highest(h,ilmokx)+lowest(l,ilmokx))/2);#14봉 최고가와 최저가의 중간값 ilmok2 = data2((Highest(h,ilmokx*3)+lowest(l,ilmokx*3))/2);#14*3봉 최고가와 최저가의 중간값 ilmok3 = data2((Highest(h,ilmokx*3*2)+lowest(l,ilmokx*3*2))/2);#14*3*2봉 최고가와 최저가의 중간값 sunhang1 = data2((ilmok1+ilmok2)/2);//선행스팬1 sunhang2 = data2(ilmok3);#선행스팬2 #당일 15번째 봉 이후 if data2(DayIndex() == ilmokidx+1) then { #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 큰값(구름대 상단)보다 크고 현재봉 매수잔량이 매도잔량보다 많으면 매수 if data2(AccumN( IFF (c > max(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids > asks) Then ExitLong("ilmokb"); #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 작은값(구름대 하단)보다 작고 현재봉 매도잔량이 매수잔량보다 많으면 매도 if data2(AccumN( IFF (c < min(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids < asks) Then buy("ilmoks"); } #ilmoks 진입후에 선행스팬1이 선행스팬2를 상향돌파하면 매도청산 if data2(IsEntryName("ilmoks") and Crossup(c, min(sunhang1, sunhang2))) Then ExitShort("ilmok_es"); #==========================================# # 지표명 : 꺾은선차트 # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:상승전환가격(0.5),하락전환가격(0.5); Var:j(0,data2),꺾은선(0,data2),방향(0,data2),상승(100,data2),하락(-100,data2), 기준고(0,data2),기준저(0,data2),기준고Bar(0,data2),기준저Bar(0,data2); Array:고[20](0,data2),저[20](0,data2),고Bar[20](0,data2),저Bar[20](0,data2); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If data2(기준고 <= C || 기준고 == 0 || IsNaN(기준고) == True) Then { 기준고 = data2(C); 기준고Bar = 0; } Else 기준고Bar = 기준고Bar + 1; If data2(기준저 >= C || 기준저 == 0 || IsNaN(기준저) == True) Then { 기준저 = data2(C); 기준저Bar = 0; } Else 기준저Bar = 기준저Bar + 1; #==========================================# # 추세방향 결정 #==========================================# If data2(기준저[1] + 상승전환가격 > C[1] && 기준저[1] + 상승전환가격 <= C) Then 방향 = 상승; If data2(기준고[1] - 하락전환가격 < C[1] && 기준고[1] - 하락전환가격 >= C) Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If data2(방향[1] == 하락 && 방향 == 상승) Then { For j = 18 DownTo 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = data2(C); 기준저Bar = 0; 기준고 = data2(C); 기준고Bar = 0; } Else If data2(방향[1] == 상승 && 방향 == 하락) Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = data2(C); 기준고Bar = 0; 기준저 = data2(C); 기준저Bar = 0; } Else If data2(방향[1] == 하락 && 방향 == 하락) Then { If data2(기준고[1] - 하락전환가격 <= C[1] && 기준고[1] - 하락전환가격 > C && 고[1] < 기준고) Then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = data2(C); 기준고Bar = 0; } } Else If data2(방향[1] == 상승 && 방향 == 상승) Then { If data2(기준저[1] + 상승전환가격 >= C[1] && 기준저[1] + 상승전환가격 < C && 저[1] > 기준저) Then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = data2(C); 기준저Bar = 0; } } #==========================================# # 지표식 출력 #==========================================# /* //If 꺾은선[1] != 꺾은선 Then Plot1(꺾은선,"파동"); //Else If LastBarOnChart == 1 Then plot2(Iff(방향 == 상승,기준고,기준저)); If 꺾은선[1] != 꺾은선 Then{ var1 = 꺾은선; var2 = var1[1]; Plot1(꺾은선); } If 기준저[1] <= C and c>o Then Plot4(기준저,"파동1",red); If 기준저[1] >= C and c<o Then Plot4(기준저,"파동1",blue); If 기준고[1] <= C and c<o Then Plot5(기준고,"파동1",red); If 기준고[1] >= C and c>o Then Plot5(기준고,"파동1",blue); */ If data2(기준저[1] < C and c>ma(c,20)[1] and C[1] > ma(c,20)[1] and marketposition(0)!=-1) Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매수신호발생1.wav"); ExitLong("매수"); } If data2(기준저[1] > C and c<ma(c,20)[1] and C[1] < ma(c,20)[1] and marketposition(0)!=1) Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매도신호발생1.wav"); Buy("매도"); } #윗꼬리없는 양봉 - 고점에 점 if data2(C > O and H == C) then sell(); #아랫꼬리없는 음봉 - 저점에 점 if data2(C < O and L == C) then ExitShort(); 즐거운 하루되세요 > 외국인 님이 쓴 글입니다. > 제목 : 옵션매수매도 > 안녕하세요 현제의식으로 data 는 선물을기준으로 data1콜옵션매수 청산식 data2는 풋옵션매수청산식 부탁드립니다 var : pp(0), pr1(0), pr2(0), ps1(0), ps2(0), sp(40), lp(350), emashort(0),emalong(0), pivot_idx(22), pivot_ch(0.3), ilmokidx(15), ilmokx(14),ilmok1(0),ilmok2(0), ilmok3(0), sunhang1(0), sunhang2(0), ccilen(50), ccich(100), mult(1), ccivalue(0), bcnt(0), scnt(0); #손절 1.6 포인트 SetStopLoss(1.6, PointStop); #피봇 # if dayindex() == 0 then{# 첫봉에서 pp = (DayHigh(1)+DayLow(1)+DayClose(1))/3;#(전일고가+전일저가+전일종가)/3을 피봇포인트 값으로 저장 pr1 = 2*pp-daylow(1); #PP의 두배값에서 전일저가를 뺀값을 저항1값으로 저장 pr2 = pp+DayHigh(1)-DayLow(1);#PP값+전일고가-전일저가값을 저항2값으로 저장 ps1 = 2*pp-DayHigh(1);##PP의 두배값에서 전일고가를 뺀값을 지지1값으로 저장 ps2 = pp-DayHigh(1)+DayLow(1);#PP값-전일고가+전일저가값을 지지2값으로 저장 } #14시 이전에 if stime < 140000 then { #종가가 지지1값을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if crossup(c, ps1) and bids > asks then buy("pprec_b"); #종가가 저항1값을 하향이탈하고 매도잔량이 매수잔량보다 크면 매도 if CrossDown(c, pr1) and bids < asks then sell("pprev_s"); } #CCI if date != date[1] then { bcnt = 0; scnt = 0; } CCIvalue = cci(ccilen);#CCI값 #CCI가 -100을 상향돌파하고 매수잔량이 매도잔량보다 크고 당일 첫번째 조건만족할 때만 매수진입 if CrossUp(ccivalue, -ccich) and bids > asks and bcnt == 0 Then{ buy("ccirev_b"); bcnt = bcnt +1;#if조건 만족하면 1씩 증가 } #CCI가 100을 하향이탈하고 매도잔량이 매수잔량보다 크고 당일 첫번째 조건만족할 때만 매도진입 if CrossDown(ccivalue,ccich) and bids < asks and scnt == 0 Then{ sell("ccirev_s"); scnt = scnt+1;#if조건 만족하면 1씩증가 } if BarsSinceEntry(0) > 0 then {# 진입후(BarsSinceEntry가 0보다 크다는 진입이 들어가 있는 상태라는 표현입니다.) #진입명이 ccirev_b 일때 당일 저가를 갱신하면 매수청산 if IsEntryName("ccirev_b") and l == daylow(0) then exitlong("cci_le"); #진입명이 ccirev_s 일때 당일 고가를 갱신하면 매도청산 if IsEntryName("ccirev_s") and h == DayHigh(0) then ExitShort("cci_es"); } #지수이평 emashort = ema(c, sp);#단기지수이평 emalong = ema(c, lp);#장기지수이평 #단기지수이평이 장기지수이평을 상향돌파하고 매수잔량이 매도잔량보다 크면 매수 if crossup(emashort, emalong) and bids > asks then buy("ema_b"); #단기지수이평이 장기지수이평을 하향이탈하고 매수잔량이 매도잔량보다 작으면 매도 if CrossDown(emashort, emalong) and bids < asks then sell("ema_s"); #피봇추세 #당일 22개봉 이전에 if DayIndex() <= pivot_idx then { #종가가 저항2값보다 크고 매수잔량이 매도잔량보다 크면 매수 if c > pr2 and bids > asks then buy("pp_b"); #종가가 지지2값보다 작고 매도잔량이 매수잔량보다 크면 매도 if c < ps2 and bids < asks then sell("pp_s"); } # PP_B 진입이 발생하고 주가가 저항2값-0.3보다 작아지면 매수청산 if IsEntryName("pp_b") and CrossDown(c,pr2-pivot_ch) then ExitLong("pp_es"); # PP_s 진입이 발생하고 주가가 지지2값+.3보다 커지면 매도청산 if IsEntryName("pp_s") and Crossup(c,ps2+pivot_ch) then ExitShort("pp_el"); #일목 ilmok1 = (Highest(h,ilmokx)+lowest(l,ilmokx))/2;#14봉 최고가와 최저가의 중간값 ilmok2 = (Highest(h,ilmokx*3)+lowest(l,ilmokx*3))/2;#14*3봉 최고가와 최저가의 중간값 ilmok3 = (Highest(h,ilmokx*3*2)+lowest(l,ilmokx*3*2))/2;#14*3*2봉 최고가와 최저가의 중간값 sunhang1 = (ilmok1+ilmok2)/2;//선행스팬1 sunhang2 = ilmok3;#선행스팬2 #당일 15번째 봉 이후 if DayIndex() == ilmokidx+1 then { #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 큰값(구름대 상단)보다 크고 현재봉 매수잔량이 매도잔량보다 많으면 매수 if AccumN( IFF (c > max(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids > asks Then buy("ilmokb"); #15개봉 연속으로 종가가 선행스팬1과 선행스팬2중 작은값(구름대 하단)보다 작고 현재봉 매도잔량이 매수잔량보다 많으면 매도 if AccumN( IFF (c < min(sunhang1, sunhang2),1,0), ilmokidx) == ilmokidx and bids < asks Then sell("ilmoks"); } #ilmokb 진입후에 선행스팬1이 선행스팬2를 하향이탈하면 매수청산 if IsEntryName("ilmokb") and CrossDown(c, max(sunhang1, sunhang2)) Then ExitLong("ilmok_el"); #ilmoks 진입후에 선행스팬1이 선행스팬2를 상향돌파하면 매도청산 if IsEntryName("ilmoks") and Crossup(c, min(sunhang1, sunhang2)) Then ExitShort("ilmok_es"); #==========================================# # 지표명 : 꺾은선차트 # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:상승전환가격(0.5),하락전환가격(0.5); Var:j(0),꺾은선(0),방향(0),상승(100),하락(-100), 기준고(0),기준저(0),기준고Bar(0),기준저Bar(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If 기준고 <= C || 기준고 == 0 || IsNaN(기준고) == True Then { 기준고 = C; 기준고Bar = 0; } Else 기준고Bar = 기준고Bar + 1; If 기준저 >= C || 기준저 == 0 || IsNaN(기준저) == True Then { 기준저 = C; 기준저Bar = 0; } Else 기준저Bar = 기준저Bar + 1; #==========================================# # 추세방향 결정 #==========================================# If 기준저[1] + 상승전환가격 > C[1] && 기준저[1] + 상승전환가격 <= C Then 방향 = 상승; If 기준고[1] - 하락전환가격 < C[1] && 기준고[1] - 하락전환가격 >= C Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = C; 기준저Bar = 0; 기준고 = C; 기준고Bar = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = C; 기준고Bar = 0; 기준저 = C; 기준저Bar = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If 기준고[1] - 하락전환가격 <= C[1] && 기준고[1] - 하락전환가격 > C && 고[1] < 기준고 Then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; 꺾은선 = 기준고; 기준고 = C; 기준고Bar = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If 기준저[1] + 상승전환가격 >= C[1] && 기준저[1] + 상승전환가격 < C && 저[1] > 기준저 Then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; 꺾은선 = 기준저; 기준저 = C; 기준저Bar = 0; } } #==========================================# # 지표식 출력 #==========================================# /* //If 꺾은선[1] != 꺾은선 Then Plot1(꺾은선,"파동"); //Else If LastBarOnChart == 1 Then plot2(Iff(방향 == 상승,기준고,기준저)); If 꺾은선[1] != 꺾은선 Then{ var1 = 꺾은선; var2 = var1[1]; Plot1(꺾은선); } If 기준저[1] <= C and c>o Then Plot4(기준저,"파동1",red); If 기준저[1] >= C and c<o Then Plot4(기준저,"파동1",blue); If 기준고[1] <= C and c<o Then Plot5(기준고,"파동1",red); If 기준고[1] >= C and c>o Then Plot5(기준고,"파동1",blue); */ If 기준저[1] < C and c>ma(c,20)[1] and C[1] > ma(c,20)[1] and marketposition(0)!=1 Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매수신호발생1.wav"); buy("매수"); } If 기준저[1] > C and c<ma(c,20)[1] and C[1] < ma(c,20)[1] and marketposition(0)!=-1 Then{ PlaySound("C:₩리딩투자증권₩리딩스타플러스₩data₩Sound₩매도신호발생1.wav"); sell("매도"); } #윗꼬리없는 양봉 - 고점에 점 if C > O and H == C then sell(); #아랫꼬리없는 음봉 - 저점에 점 if C < O and L == C then buy();