커뮤니티
옵션매수매도
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();
다음글
이전글