커뮤니티

문의드립니다.

프로필 이미지
앙두
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; }