커뮤니티
문의드립니다.
2006-12-27 16:16:52
854
글번호 11580
아래 5531에 대한 답변 감사드립니다만,
제가 원하는 신호가 안 나와 다시 문의드리게 되었습니다.
본 홈페이지에 게시된 아래의 분할매매 예제수식에
다음의 매매수량 증가 조건을 추가하여 주시면 감사하겠습니다.
아울러 피라미딩 설정하여 분할매매 진입/청산시 진입 순서대로
청산이 되는데 진입의 역순으로 즉, 가장 나중(최근)에 진입한 포지션부터
최초진입 순으로 청산되는게 가능한지 궁금하구요, 가능하다면
아래의 분할매매 예제수식에 삽입하여 주시면 감사하겠습니다.
- 다 음 -
최초1, 최초2 를 제외한 매수진입시 연결선물계약 2계약, 3계약 등 1계약씩
더하여 진입하되 최대 진입계약수는 10계약으로 제한, 즉 진입횟수는 10회, 11회,
12회..... 등 제한없이 진입가능하나 진입계약수만 11회도 10계약, 12회도 10계약
등으로 제한
- 아 래 -
input : 기준수량(10); //분할매매 기준수량
input : 반전매수폭(20), 반전매도폭(20); //포지션반전폭
input : 매수폭(5); //직전매수가보다 n%하락시 매수
input : 매도폭(5); //직전매수가보다 n%상승시 매도
input : 거래개시일(20010101); //(20010101);
var : 첫거래(1);
var : 직전매수가(0), 직전매도가(0);
var : N_직전매수가(0), N_직전매도가(0);
var : dbg_flag(0), chk_price(0);
직전매수가 = N_직전매수가;
직전매도가 = N_직전매도가;
if 거래개시일 < sdate then { ###############################
if 첫거래 then {
if CrossDown(ma(C,20), ma(C,60)) then {
buy("최초", OnClose, DEF, 기준수량);
N_직전매수가 = C;//최초거래가;
첫거래 = 0;
}
}
else if CurrentEntries() <= 20 then {
if 직전매수가 == 0 then {
// 직전 매도거래 일 경우, 매수반전가격 이하로 하락할 경우
chk_price = 직전매도가*(1-반전매수폭/100);
if c < chk_price and c[1] >= chk_price then {
buy("매수1", OnClose, DEF, 기준수량);
N_직전매수가 = C; //직전매도가*(1-반전매수폭/100);
N_직전매도가 = 0;
}
}
else {
chk_price = 직전매수가*(1-매수폭/100);
if c < chk_price and c[1] >= chk_price then {
buy("매수2", OnClose, DEF, 기준수량);
N_직전매수가 = C; //직전매수가*(1-매수폭/100);
N_직전매도가 = 0;
}
}
}
// 청산처리 ....................................................................
if MarketPosition() == 1 then {
if 직전매도가 == 0 then {
// 직전 매수거래 일 경우, 매도반전가격 이상으로 상승할 경우
chk_price = 직전매수가*(1+반전매도폭/100);
if c > chk_price and c[1] <= chk_price then {
exitlong("청산1", OnClose, DEF, "", 기준수량, 1);
N_직전매도가 = C; //직전매수가*(1+반전매도폭/100);
N_직전매수가 = 0;
}
}
else {
chk_price = 직전매도가*(1+매도폭/100);
if c > chk_price and c[1] <= chk_price then {
exitlong("청산2", OnClose, DEF, "", 기준수량, 1);
N_직전매도가 = C; //직전매도가*(1+매도폭/100);
N_직전매수가 = 0;
}
}
}
} ###############################
if marketposition(0) == 0 and 첫거래 == 0 and CrossDown(ma(C,20), ma(C,60)) then {
buy("최초2", OnClose, DEF, 기준수량);
N_직전매수가 = C;//최초거래가;
N_직전매도가 = 0;
}
답변 1
예스스탁 예스스탁 답변
2006-12-28 13:32:43
안녕하세요
예스스탁입니다.
조건에 따라 청산이 연속적으로 나오지만
실제 어느 계약이 청산되는 지는 알수 없습니다.
식을 수정했습니다.
input : 최초수량(1),기준수량(1); //분할매매 기준수량
input : 반전매수폭(20), 반전매도폭(20); //포지션반전폭
input : 매수폭(5); //직전매수가보다 n%하락시 매수
input : 매도폭(5); //직전매수가보다 n%상승시 매도
input : 거래개시일(20010101); //(20010101);
var : 첫거래(1);
var : 직전매수가(0), 직전매도가(0);
var : N_직전매수가(0), N_직전매도가(0);
var : dbg_flag(0), chk_price(0),cnt(0);
직전매수가 = N_직전매수가;
직전매도가 = N_직전매도가;
if 거래개시일 < sdate then { ###############################
if 첫거래 then {
if CrossDown(ma(C,20), ma(C,60)) then {
buy("최초", OnClose, DEF, 최초수량);
N_직전매수가 = C;//최초거래가;
첫거래 = 0;
cnt = cnt +1;
}
}
else if CurrentEntries() <= 10 then {
if 직전매수가 == 0 then {
// 직전 매도거래 일 경우, 매수반전가격 이하로 하락할 경우
chk_price = 직전매도가*(1-반전매수폭/100);
if c < chk_price and c[1] >= chk_price then {
buy("매수1", OnClose, DEF, 기준수량+cnt);
N_직전매수가 = C; //직전매도가*(1-반전매수폭/100);
N_직전매도가 = 0;
cnt = cnt +1;
}
}
else {
chk_price = 직전매수가*(1-매수폭/100);
if c < chk_price and c[1] >= chk_price then {
buy("매수2", OnClose, DEF, 기준수량+cnt);
N_직전매수가 = C; //직전매수가*(1-매수폭/100);
N_직전매도가 = 0;
cnt = cnt+1;
}
}
}
// 청산처리 ....................................................................
if MarketPosition() == 1 then {
if 직전매도가 == 0 then {
// 직전 매수거래 일 경우, 매도반전가격 이상으로 상승할 경우
chk_price = 직전매수가*(1+반전매도폭/100);
if c > chk_price and c[1] <= chk_price then {
exitlong("청산1", OnClose, DEF, "", 기준수량, 1);
N_직전매도가 = C; //직전매수가*(1+반전매도폭/100);
N_직전매수가 = 0;
cnt = 0;
}
}
else {
chk_price = 직전매도가*(1+매도폭/100);
if c > chk_price and c[1] <= chk_price then {
exitlong("청산2", OnClose, DEF, "", 기준수량, 1);
N_직전매도가 = C; //직전매도가*(1+매도폭/100);
N_직전매수가 = 0;
cnt = 0;
}
}
}
} ###############################
if marketposition(0) == 0 and 첫거래 == 0 and CrossDown(ma(C,20), ma(C,60)) then {
buy("최초2", OnClose, DEF, 최초수량);
N_직전매수가 = C;//최초거래가;
N_직전매도가 = 0;
cnt = cnt +1;
}
즐거운 하루되세요
> 앙두 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 아래 5531에 대한 답변 감사드립니다만,
제가 원하는 신호가 안 나와 다시 문의드리게 되었습니다.
본 홈페이지에 게시된 아래의 분할매매 예제수식에
다음의 매매수량 증가 조건을 추가하여 주시면 감사하겠습니다.
아울러 피라미딩 설정하여 분할매매 진입/청산시 진입 순서대로
청산이 되는데 진입의 역순으로 즉, 가장 나중(최근)에 진입한 포지션부터
최초진입 순으로 청산되는게 가능한지 궁금하구요, 가능하다면
아래의 분할매매 예제수식에 삽입하여 주시면 감사하겠습니다.
- 다 음 -
최초1, 최초2 를 제외한 매수진입시 연결선물계약 2계약, 3계약 등 1계약씩
더하여 진입하되 최대 진입계약수는 10계약으로 제한, 즉 진입횟수는 10회, 11회,
12회..... 등 제한없이 진입가능하나 진입계약수만 11회도 10계약, 12회도 10계약
등으로 제한
- 아 래 -
input : 기준수량(10); //분할매매 기준수량
input : 반전매수폭(20), 반전매도폭(20); //포지션반전폭
input : 매수폭(5); //직전매수가보다 n%하락시 매수
input : 매도폭(5); //직전매수가보다 n%상승시 매도
input : 거래개시일(20010101); //(20010101);
var : 첫거래(1);
var : 직전매수가(0), 직전매도가(0);
var : N_직전매수가(0), N_직전매도가(0);
var : dbg_flag(0), chk_price(0);
직전매수가 = N_직전매수가;
직전매도가 = N_직전매도가;
if 거래개시일 < sdate then { ###############################
if 첫거래 then {
if CrossDown(ma(C,20), ma(C,60)) then {
buy("최초", OnClose, DEF, 기준수량);
N_직전매수가 = C;//최초거래가;
첫거래 = 0;
}
}
else if CurrentEntries() <= 20 then {
if 직전매수가 == 0 then {
// 직전 매도거래 일 경우, 매수반전가격 이하로 하락할 경우
chk_price = 직전매도가*(1-반전매수폭/100);
if c < chk_price and c[1] >= chk_price then {
buy("매수1", OnClose, DEF, 기준수량);
N_직전매수가 = C; //직전매도가*(1-반전매수폭/100);
N_직전매도가 = 0;
}
}
else {
chk_price = 직전매수가*(1-매수폭/100);
if c < chk_price and c[1] >= chk_price then {
buy("매수2", OnClose, DEF, 기준수량);
N_직전매수가 = C; //직전매수가*(1-매수폭/100);
N_직전매도가 = 0;
}
}
}
// 청산처리 ....................................................................
if MarketPosition() == 1 then {
if 직전매도가 == 0 then {
// 직전 매수거래 일 경우, 매도반전가격 이상으로 상승할 경우
chk_price = 직전매수가*(1+반전매도폭/100);
if c > chk_price and c[1] <= chk_price then {
exitlong("청산1", OnClose, DEF, "", 기준수량, 1);
N_직전매도가 = C; //직전매수가*(1+반전매도폭/100);
N_직전매수가 = 0;
}
}
else {
chk_price = 직전매도가*(1+매도폭/100);
if c > chk_price and c[1] <= chk_price then {
exitlong("청산2", OnClose, DEF, "", 기준수량, 1);
N_직전매도가 = C; //직전매도가*(1+매도폭/100);
N_직전매수가 = 0;
}
}
}
} ###############################
if marketposition(0) == 0 and 첫거래 == 0 and CrossDown(ma(C,20), ma(C,60)) then {
buy("최초2", OnClose, DEF, 기준수량);
N_직전매수가 = C;//최초거래가;
N_직전매도가 = 0;
}
다음글
이전글