커뮤니티
추가검토 부탁드립니다.
2015-02-25 08:49:26
150
글번호 83413
빠르고 명쾌한 답변 감사드립니다.
그런데 짜주신 식으로는 매수가 생각과 다르게 구현되기에
제가 원했던 바가 온전히 전달이 안 된 것 같아 다시 한 번 부탁드리게 되었습니다.
제가 그림을 못 그려 어쩔 수 없이 글로 다시 한 번 말씀드리면
원했던 것은
1)봉들이 연속 저점을 낮추다가 최저점을 찍고 연속 저점을 높이는 일이 발생
(짜주신 식이 이 부분은 잡아내는 것 같습니다)
2)가장 높은 저점을 지닌 마지막 봉의 저점을 깨는 새로운 봉이 출현
(이 새로운 봉의 고점은 상관없고, 중요한 것은 가장 높은 저점을 지닌 마지막
봉의 저점을 깨느냐입니다.)
3)새로운 봉이 출현한 후 어제까지는, 전일의 고점을 깨는 고점을 지닌 봉이 출현하는 일도 없었고 아까 1)에서의 최저점을 깨는 저점을 지닌 봉이 출현하는 일도 없었음.(즉, 그 조건만 지켜진다면 새로운 봉이 출현한 후의 봉 갯수가 상관없고, 새로운 봉이나 2)에서의 마지막 봉보다 저점이 높아도 낮아도 상관없음. 그 어떤 봉도 생길 수 있을 것이고, 감시하는 조건은 위에서 말씀드린대로 딱 전일의 고점을 깨느냐와 최저점을 깨느냐뿐임)
4) 그러다 드디어 오늘, 오늘 이 순간까지의 고점이 어제의 고점을 깨고 올라감(오늘의 시가가 어땠는지 상관없음).
5) 위와 같은 조건이 만족되면 최초 전일의 고점 돌파시 1회만 매수진입함.(즉, 내일은 오늘의 고점을 깨도 매수진입하지 않으며, 모레 역시 내일의 고점을 깨도 매수진입하지 않음)
6) 그 후 며칠 뒤 다시 같은 조건 충족이 되면 또 1회 매수진입함(즉, 종전 매수진입분의 청산여부와 상관없이 조건 충족이 또 되면 또 1회 매수하는 것임)
좀 복잡해졌는데, 요컨대, 하락 후 저점찍고 상승하다가 조정 거친 후 재상승하면 한 계약
매수하려는 것이고, 그 청산여부와 상관없이 같은 일 또 생기면 또 한 계약 매수를 반복하려는 것입니다. 짜주신 식은 한 번의 조건 만족시 전일의 고점을 깰 때마다 계속 매수가 이루어지고, 그래서 설정창에서 피라미딩불허로 해 보면 종전 진입분이 청산이 되기 전에는 조건이 만족하여도 매수가 안 뜹니다. 그리고, 오늘 고점 돌파 이전까지 위 1)에서의 최저점을 깨는 봉이 없어야 한다는 것은 오늘의 저점만이 문제가 아니라 위 1)에서의 저점최고봉의 저점이 깨진 이후 오늘까지의 모든 봉에 해당해야 하는데(그 봉은 하나일 수도 있고 둘 일 수도 셋일 수도..있겠지요) 그 부분은 짜 주신 식에 구현된 것도 같고 아닌 것도 같고 식을 정확하게 읽을 줄 모르는 탓으로 잘 모르겠습니다.
죄송하지만 조건 부분을 다시 검토 좀 해 주십시오...감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식부탁
> 안녕하세요
예스스탁입니다.
var : HH(0);
if
L[3] < L[4] and L[4] < L[5] And
L[3] < lowest(L,3) then{
Condition1 = true;
var1 = L[3];
var2 = L;
}
if Condition1 == true and L < var1 Then
Condition1 = false;
if Condition1 == true Then
buy("b",AtStop,H+PriceScale);
if MarketPosition == 1 Then{
ExitLong("bx1",atlimit,AvgEntryPrice*1.05);
ExitLong("bl1",AtStop,var1[BarsSinceEntry]);
ExitLong("bl2",AtStop,DayLow(1));
if CurrentContracts > CurrentContracts[1] Then
HH = H;
if HH >= LatestEntryPrice*1.02 Then
exitlong("bx2",AtStop,HH-(HH-LatestEntryPrice(0))*0.3);
}
1)
강제청산 함수는 설정창과 수식내에서 함수(setstop~)로 지정할수 있는데
수삭안에서 함수로 강제청산을 설정하면 시스템 설정창에서는 해당 강제청산은 설정할수 없게 됩니다.
즉 수식이 우선되게 됩니다.
2)
강제청산 함수는 개별 진입별로 동작합니다.
피라미딩 진입을 해서 포지션 전체에 대한 내용으로 청산하고자 하시면
위 식과 같이 평균단가를 이용해 청산하셔야 합니다.
bx1이 평균단가 기준 5% 수익시 전량청산입니다.
bx2가 최종 진입후 평균단가 기준 2% 이상 수익후 30% 수익감소하면 전량청산입니다.
평균단가 기준 손절은 아래와 같습니다. 평균단가 기준 5% 손실시 청산입니다.
exitlong("loss",atstop,avgentryprice*0.95);
3)
시스템은 신호가 발생하면 주문만 집행합니다.
모든 신호는 체결된 것으로 간주하고 다음신호를 연결해 가게 됩니다.
그러므로 진입이 체결되지 않은상태에서 청산신호가 발생해 체결이 되면
반대포지션을 가지게 됩니다.
예스랭귀지는 차트의 데이터를 이용해 조건을 만들어 신호를 발생하고
주문만 발생하게 되므로 미체결여부로 신호를 컨트롤 할수는 없습니다.
4)
예스랭귀지의 잔고함수는 예수금 정도의 간단한 내용만 리턴을 하므로
수량설정등에 제한적으로 사용됩니다.
또한 시뮬레이션이 되는 이전데이터가 없으므로 실시간 봉에서만 값이 제공이 됩니다.
잔고의 데이터를 사용할때 처음에 원장의 내용을 복사한 이후 가원장을 구축하고
이후 들어오는 접수응답이나 체결응답으로 가원장을 갱신해 가면서 예수금등을 계산합니다.
만약 시스템을 적용후에 다른 단말기(스마트폰이나 싸이칸과 같은 해당 증권사의 HTS)에서
따로 주문을 내시면 해당 내용은 예스트레이더로
전송이 되지 않으므로 실제 원장과 가원장의 값이 다르게 됩니다.
이때 예스트레이더의 잔고평가 화면을 한번 조회를 해주시면
가원장이 다시 원장과 동기화해서 원장의 값으로 갱신하게 하게 됩니다.
5)
선물 데이터 중에 연결선물이라는 데이터가 있습니다.
해당데이터는 주로 거래에 많이 이용하는 최근월물(3개월)만으로
데이터를 연결해서 제공되는 데이터 입니다.
근월물만 거래하신 다면 해당 데이터로 차트를 열고 시스템을 적용하시면
시스템은 차트의 데이터로 신호를 만들고 리포트상 진입이나 청산가격을 이용하므로
신호의 위치가 변경되지 않으므로 리포트상 진입청산가격도 유지가 됩니다.
즐거운 하루되세요
> 음양조파 님이 쓴 글입니다.
> 제목 : 수식부탁
> 안녕하세요?
수식부탁드립니다.
매수진입조건
1) 제1기준봉 전에 연속 2개이상의 봉이 저점을 낮추어 오다 제1기준봉에서 최저점을 형성하고 그후 제1기준봉보다 저점이 높은 봉이 연속 3개 이상 있으며
(연속되어 저점을 높여간 최후의 봉을 편의상 제2기준봉이라 함)
2) 그 후 저점이 제2기준봉의 저점보다 낮은 봉이 1개 이상 형성되어 있지만 저점이 제1기준봉의 저점보다 낮은 봉은 형성된 적이없는 상태에서
4) 그후 몇번째 봉에서든 장중의 현재가가 직전봉의 고점보다 높게 형성되었을 때 현재가로 매수진입
(누적 진입 허용, 일봉이든 분봉이든 모두 적용될 수 있게 해 주세요.)
청산조건
매수한 총 포지션의 수익이 5푸로 이상이거나
매수한 총 포지션의 수익이 2푸로 이상으로 수익의 30푸로를 상실(트레일링스톱)하거나
현재가가 제1기준봉 혹은 직전일의 저점을 하향돌파하면 그 즉시 현재가로 청산
보충질문)
1) 수식으로 쓴 것과 시스템트레이딩설정창에서 설정한 것 중 어느 것이 우선합니까?
2) 시스템트레이딩설정창에서 손절 익절 트레일링스톱을 설정했을 때, 포지션 누적시에는
하나하나 포지션마다 조건충족 여부를 계산하여 청산을 하고 포지션 전체를 평균하지 않는 것 아닌가 싶습니다. 만일 그렇다면 포지션 전체의 진입가격 등을 평균하여 손절 익절 트레일링스톱을 거는 방법은 무엇인가요?
3) 수식이든 설정창이든 청산주문을 내는 경우, 주문 전에 잔고를 확인하는지 아니면 과거에 진입주문을 냈으면 그대로 체결된 것을 전제하고 청산주문을 내는지, 그리고 만일 진입주문냈지만 체결이 안 되었는데 잔고확인없이 청산주문이 실행되면 반대포지션을 하나 갖게 되는 것인지, 그리고 주문 전에 잔고를 확인하여 청산주문을 실행하도록 하는 방법은 무엇인지 궁금합니다.
4) 매뉴얼에 보면, 시스템트레이딩 잔고함수는 가원장을 이용하니 원장과 다를 수 있어서 동기화시키라고 나와 있는데, 시스템트레이딩을 자동으로 하도록 늘 걸어놓는다면 동기화는 구체적으로 언제 어떤 방법으로 시키라는 것인지요?
5) 선물은 월물별로 차트가 다른데, 만기로 인하여 월물이 바뀌면 종전에 진입과 청산의 기준으로 삼았던 각종 신호와 주문 자료 중에 앞으로의 주문에 계속 사용하여야 하는 것이 있으면 어떻게 하나요? (예를 들어, 진입가격에서 1푸로 오르면 청산하도록 한 경우, 만기로 인하여 지난월물 청산하고 새월물로 대체하면 컴퓨터는 진입가격을 달리 인식할 것이고, 기준봉에 따라 조건을 주는 경우 봉이 달라져서 연속성이 깨질 건데,어떻게 조치하나요?)
감사합니다.
답변 1
예스스탁 예스스탁 답변
2015-02-25 17:49:19
안녕하세요
예스스탁입니다.
var : HH(0);
if Condition1 == false and
L[3] < L[4] and L[4] < L[5] And
L[3] < lowest(L,3) then{
Condition1 = true;
Condition2 = false;
var1 = L[3];
var2 = L;
}
if Condition1 == true and L < var1 Then
Condition1 = false;
if Condition1 == true Then{
if L < L[1] Then
Condition2 = true;
if Condition2 == true Then
buy("b",AtStop,H+PriceScale);
}
if CurrentContracts > CurrentContracts[1] Then
Condition1 = false;
if MarketPosition == 1 Then{
ExitLong("bx1",atlimit,AvgEntryPrice*1.05);
ExitLong("bl1",AtStop,var1[BarsSinceEntry]);
ExitLong("bl2",AtStop,DayLow(1));
if CurrentContracts > CurrentContracts[1] Then
HH = H;
if HH >= LatestEntryPrice*1.02 Then
exitlong("bx2",AtStop,HH-(HH-LatestEntryPrice(0))*0.3);
}
식을 수정했습니다.
하나의 패턴에서 한번만 진입이 발생하게 수정했습니다.
최저점 기록후 3개봉 저가가 최저점 저가보다 크면 1차 조건만족
이후에 상승하는 저가를 깨는 저가가 발생하면 2차 조건만족
이후에 직전봉의 고가 이상을 기록하면 매수입니다.
패턴식의 경우 정확히 맞춰드리기 어렵습니다.
위 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
즐거운 하루되세요
> 음양조파 님이 쓴 글입니다.
> 제목 : 추가검토 부탁드립니다.
> 빠르고 명쾌한 답변 감사드립니다.
그런데 짜주신 식으로는 매수가 생각과 다르게 구현되기에
제가 원했던 바가 온전히 전달이 안 된 것 같아 다시 한 번 부탁드리게 되었습니다.
제가 그림을 못 그려 어쩔 수 없이 글로 다시 한 번 말씀드리면
원했던 것은
1)봉들이 연속 저점을 낮추다가 최저점을 찍고 연속 저점을 높이는 일이 발생
(짜주신 식이 이 부분은 잡아내는 것 같습니다)
2)가장 높은 저점을 지닌 마지막 봉의 저점을 깨는 새로운 봉이 출현
(이 새로운 봉의 고점은 상관없고, 중요한 것은 가장 높은 저점을 지닌 마지막
봉의 저점을 깨느냐입니다.)
3)새로운 봉이 출현한 후 어제까지는, 전일의 고점을 깨는 고점을 지닌 봉이 출현하는 일도 없었고 아까 1)에서의 최저점을 깨는 저점을 지닌 봉이 출현하는 일도 없었음.(즉, 그 조건만 지켜진다면 새로운 봉이 출현한 후의 봉 갯수가 상관없고, 새로운 봉이나 2)에서의 마지막 봉보다 저점이 높아도 낮아도 상관없음. 그 어떤 봉도 생길 수 있을 것이고, 감시하는 조건은 위에서 말씀드린대로 딱 전일의 고점을 깨느냐와 최저점을 깨느냐뿐임)
4) 그러다 드디어 오늘, 오늘 이 순간까지의 고점이 어제의 고점을 깨고 올라감(오늘의 시가가 어땠는지 상관없음).
5) 위와 같은 조건이 만족되면 최초 전일의 고점 돌파시 1회만 매수진입함.(즉, 내일은 오늘의 고점을 깨도 매수진입하지 않으며, 모레 역시 내일의 고점을 깨도 매수진입하지 않음)
6) 그 후 며칠 뒤 다시 같은 조건 충족이 되면 또 1회 매수진입함(즉, 종전 매수진입분의 청산여부와 상관없이 조건 충족이 또 되면 또 1회 매수하는 것임)
좀 복잡해졌는데, 요컨대, 하락 후 저점찍고 상승하다가 조정 거친 후 재상승하면 한 계약
매수하려는 것이고, 그 청산여부와 상관없이 같은 일 또 생기면 또 한 계약 매수를 반복하려는 것입니다. 짜주신 식은 한 번의 조건 만족시 전일의 고점을 깰 때마다 계속 매수가 이루어지고, 그래서 설정창에서 피라미딩불허로 해 보면 종전 진입분이 청산이 되기 전에는 조건이 만족하여도 매수가 안 뜹니다. 그리고, 오늘 고점 돌파 이전까지 위 1)에서의 최저점을 깨는 봉이 없어야 한다는 것은 오늘의 저점만이 문제가 아니라 위 1)에서의 저점최고봉의 저점이 깨진 이후 오늘까지의 모든 봉에 해당해야 하는데(그 봉은 하나일 수도 있고 둘 일 수도 셋일 수도..있겠지요) 그 부분은 짜 주신 식에 구현된 것도 같고 아닌 것도 같고 식을 정확하게 읽을 줄 모르는 탓으로 잘 모르겠습니다.
죄송하지만 조건 부분을 다시 검토 좀 해 주십시오...감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식부탁
> 안녕하세요
예스스탁입니다.
var : HH(0);
if
L[3] < L[4] and L[4] < L[5] And
L[3] < lowest(L,3) then{
Condition1 = true;
var1 = L[3];
var2 = L;
}
if Condition1 == true and L < var1 Then
Condition1 = false;
if Condition1 == true Then
buy("b",AtStop,H+PriceScale);
if MarketPosition == 1 Then{
ExitLong("bx1",atlimit,AvgEntryPrice*1.05);
ExitLong("bl1",AtStop,var1[BarsSinceEntry]);
ExitLong("bl2",AtStop,DayLow(1));
if CurrentContracts > CurrentContracts[1] Then
HH = H;
if HH >= LatestEntryPrice*1.02 Then
exitlong("bx2",AtStop,HH-(HH-LatestEntryPrice(0))*0.3);
}
1)
강제청산 함수는 설정창과 수식내에서 함수(setstop~)로 지정할수 있는데
수삭안에서 함수로 강제청산을 설정하면 시스템 설정창에서는 해당 강제청산은 설정할수 없게 됩니다.
즉 수식이 우선되게 됩니다.
2)
강제청산 함수는 개별 진입별로 동작합니다.
피라미딩 진입을 해서 포지션 전체에 대한 내용으로 청산하고자 하시면
위 식과 같이 평균단가를 이용해 청산하셔야 합니다.
bx1이 평균단가 기준 5% 수익시 전량청산입니다.
bx2가 최종 진입후 평균단가 기준 2% 이상 수익후 30% 수익감소하면 전량청산입니다.
평균단가 기준 손절은 아래와 같습니다. 평균단가 기준 5% 손실시 청산입니다.
exitlong("loss",atstop,avgentryprice*0.95);
3)
시스템은 신호가 발생하면 주문만 집행합니다.
모든 신호는 체결된 것으로 간주하고 다음신호를 연결해 가게 됩니다.
그러므로 진입이 체결되지 않은상태에서 청산신호가 발생해 체결이 되면
반대포지션을 가지게 됩니다.
예스랭귀지는 차트의 데이터를 이용해 조건을 만들어 신호를 발생하고
주문만 발생하게 되므로 미체결여부로 신호를 컨트롤 할수는 없습니다.
4)
예스랭귀지의 잔고함수는 예수금 정도의 간단한 내용만 리턴을 하므로
수량설정등에 제한적으로 사용됩니다.
또한 시뮬레이션이 되는 이전데이터가 없으므로 실시간 봉에서만 값이 제공이 됩니다.
잔고의 데이터를 사용할때 처음에 원장의 내용을 복사한 이후 가원장을 구축하고
이후 들어오는 접수응답이나 체결응답으로 가원장을 갱신해 가면서 예수금등을 계산합니다.
만약 시스템을 적용후에 다른 단말기(스마트폰이나 싸이칸과 같은 해당 증권사의 HTS)에서
따로 주문을 내시면 해당 내용은 예스트레이더로
전송이 되지 않으므로 실제 원장과 가원장의 값이 다르게 됩니다.
이때 예스트레이더의 잔고평가 화면을 한번 조회를 해주시면
가원장이 다시 원장과 동기화해서 원장의 값으로 갱신하게 하게 됩니다.
5)
선물 데이터 중에 연결선물이라는 데이터가 있습니다.
해당데이터는 주로 거래에 많이 이용하는 최근월물(3개월)만으로
데이터를 연결해서 제공되는 데이터 입니다.
근월물만 거래하신 다면 해당 데이터로 차트를 열고 시스템을 적용하시면
시스템은 차트의 데이터로 신호를 만들고 리포트상 진입이나 청산가격을 이용하므로
신호의 위치가 변경되지 않으므로 리포트상 진입청산가격도 유지가 됩니다.
즐거운 하루되세요
> 음양조파 님이 쓴 글입니다.
> 제목 : 수식부탁
> 안녕하세요?
수식부탁드립니다.
매수진입조건
1) 제1기준봉 전에 연속 2개이상의 봉이 저점을 낮추어 오다 제1기준봉에서 최저점을 형성하고 그후 제1기준봉보다 저점이 높은 봉이 연속 3개 이상 있으며
(연속되어 저점을 높여간 최후의 봉을 편의상 제2기준봉이라 함)
2) 그 후 저점이 제2기준봉의 저점보다 낮은 봉이 1개 이상 형성되어 있지만 저점이 제1기준봉의 저점보다 낮은 봉은 형성된 적이없는 상태에서
4) 그후 몇번째 봉에서든 장중의 현재가가 직전봉의 고점보다 높게 형성되었을 때 현재가로 매수진입
(누적 진입 허용, 일봉이든 분봉이든 모두 적용될 수 있게 해 주세요.)
청산조건
매수한 총 포지션의 수익이 5푸로 이상이거나
매수한 총 포지션의 수익이 2푸로 이상으로 수익의 30푸로를 상실(트레일링스톱)하거나
현재가가 제1기준봉 혹은 직전일의 저점을 하향돌파하면 그 즉시 현재가로 청산
보충질문)
1) 수식으로 쓴 것과 시스템트레이딩설정창에서 설정한 것 중 어느 것이 우선합니까?
2) 시스템트레이딩설정창에서 손절 익절 트레일링스톱을 설정했을 때, 포지션 누적시에는
하나하나 포지션마다 조건충족 여부를 계산하여 청산을 하고 포지션 전체를 평균하지 않는 것 아닌가 싶습니다. 만일 그렇다면 포지션 전체의 진입가격 등을 평균하여 손절 익절 트레일링스톱을 거는 방법은 무엇인가요?
3) 수식이든 설정창이든 청산주문을 내는 경우, 주문 전에 잔고를 확인하는지 아니면 과거에 진입주문을 냈으면 그대로 체결된 것을 전제하고 청산주문을 내는지, 그리고 만일 진입주문냈지만 체결이 안 되었는데 잔고확인없이 청산주문이 실행되면 반대포지션을 하나 갖게 되는 것인지, 그리고 주문 전에 잔고를 확인하여 청산주문을 실행하도록 하는 방법은 무엇인지 궁금합니다.
4) 매뉴얼에 보면, 시스템트레이딩 잔고함수는 가원장을 이용하니 원장과 다를 수 있어서 동기화시키라고 나와 있는데, 시스템트레이딩을 자동으로 하도록 늘 걸어놓는다면 동기화는 구체적으로 언제 어떤 방법으로 시키라는 것인지요?
5) 선물은 월물별로 차트가 다른데, 만기로 인하여 월물이 바뀌면 종전에 진입과 청산의 기준으로 삼았던 각종 신호와 주문 자료 중에 앞으로의 주문에 계속 사용하여야 하는 것이 있으면 어떻게 하나요? (예를 들어, 진입가격에서 1푸로 오르면 청산하도록 한 경우, 만기로 인하여 지난월물 청산하고 새월물로 대체하면 컴퓨터는 진입가격을 달리 인식할 것이고, 기준봉에 따라 조건을 주는 경우 봉이 달라져서 연속성이 깨질 건데,어떻게 조치하나요?)
감사합니다.
다음글
이전글