커뮤니티
수식 문의드립니다.
2015-11-27 14:10:22
160
글번호 92845
안녕하세요..
늘 친절한 답변에 감사드립니다.
전에 한 번 질문 드려서 답변을 받았는데
적용을 해보려고 하니 잘 되지가 않아서
다시 한 번 질문 드려 봅니다.
cme 통화선물로 자동주문을 하고 자동청산을 하려고 합니다.
장 시작시간은 08:00이고 장 종료시간은 07:00입니다.
차트는 10분봉입니다.
07:00에 장이 시작하자마자
시가보다 30핍, 31핍, 32핍 위로 지정가 매도 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 동시에
시가보다 30핍, 31핍, 32핍 아래로 지정가 매수 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 함께 07:00에 장이 시작하자마자
시가보다 100핍, 101핍, 102핍 위로 스탑매수 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 동시에
시가보다 100핍, 101핍, 102핍 아래로 스탑매도 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고
오전 12시10분에 10분 봉이 완성 되었을 때
12시 10분 봉의 종가보다 30핍, 31핍, 32핍 위로 지정가 매도 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 동시에
12시 10분 봉의 종가보다 30핍, 31핍, 32핍 아래로 지정가 매수 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그러면 08시00분 시가 기준으로 12개의 주문이 조건 가격이 되면 자동으로 주문이 나가고
12시10분 종가 기준으로 6개의 주문이 조건가격이 되면 자동으로 주문이 나가고
체결된 주문은 자동으로 청산되었으면 합니다.
그리고 조건 가격에 도달하지 않아
주문이 나가지 않은 주문들은 장 종료 10분 전인 06시50분 이후로는
주문이 나가지 않았으면 합니다.
그래서 거래일 1일을 기준으로 포지션은 매도 포지션과 매수 포지션을 합해서 최대 18개까지만 보유하고 싶습니다.
그리고 다음 거래일로 넘어갔을 때 전일 체결된 주문들만 시스템상 자동 청산 대상이 되었으면 합니다.
그리고 다시 다음거래일 08:00과 12:10에 다음 거래일의 가격을 기준으로
다시 08시00분 봉 시가 기준으로 12개의 주문이조건가격이 되면 나가고
12시10분 종가 기준으로 6개의 주문이 조걱나격이 되면 나갔으면 합니다.
이렇게 1 거래일 단위로만 주문이 나가고 체결된 주문들은 시스템상 자동 청산 대상이 되고
그 거래일에 주문이 나가지 않은 주문들은 다음 거래일에 주문이 나가지 않고
다시 다음 거래일로 갔을 때 그 거래일 기준으로 주문이 나갔으면 합니다.
시스템이 매수포지션과 매도포지션을 동시에 보유할 수는 없으니까..
매수 주문과 매도 주문을 분리해서 별도로 시스템을 작성해야 하는지요?
전에 답변해주신 수식대로
다음과 같이 수식을 작성해보았습니다.
아래와 같이 수식을 작성하고 나서 적용을 해보면 제가 계획한 것과는 전혀 다른 결과가 나와버립니다. 전 거래일에는 조건 가격이 되지 않아 주문이 나가지 않은 주문들이 다음 거래일에 조건 가격이 되면서 주문이 나갑니다.
제가 해결해보려고 여러 모로 머리를 굴려도 잘 풀리지가 않습니다.
답변 부탁드리겠습니다. 감사합니다.
var : var1(0)
if bdate != Bdate[1] Then
var1 = O;
( 같은 날짜 오전 07:00에 장이 종료하고 1시간 후인 08:00에 장이 시작할 때 시가로 주문을 넣으려면 이 수식은 안 맞는 건가요?)
#시초가에서 30핍, 31핍, 32핍 상승하면 매도
if MarketPosition >= 0 and var1 > 0 Then
sell("30위매도",AtLimit,var1+PriceScale*30);
(여기서 MarketPosition >= 0 라는 건 매도 포지션이 없는 상태여야 한다는 걸로 이해를 하겠는데요. 매도포지션이 있는 상태에서도 추가로 매도포지션을 보유하려면 어떻게 수식을 작성해야 할까요? 시스템 트레이딩 설정창에서 피라미딩 설정을 모든 진입신호 허용으로 해 놓으면 되는지요? 거기에 더해서 진입설정(동일포지션의 누적허용)에서 주문수량을 1로 하고 진입횟수를 제가 원하는 포지션 보유 개수만큼 입력하면 되나요? 매수포지션도 이미 매수포지션을 보유한 상태에서도 추가로 진입하고 싶습니다.)
if MarketPosition >= 0 and var1 > 0 Then
sell("31위매도",AtLimit,var1+PriceScale*31);
if MarketPosition >= 0 and var1 > 0 Then
sell("32위매도",AtLimit,var1+PriceScale*32);
#시초가에서 30핍, 31핍, 32핍 하락하면 매수
if MarketPosition <= 0 and var1 > 0 Then
Buy("30아래매수",AtLimit,var1-PriceScale*30);
if MarketPosition <= 0 and var1 > 0 Then
Buy("31아래매수",AtLimit,var1-PriceScale*31);
if MarketPosition <= 0 and var1 > 0 Then
Buy("32아래매수",AtLimit,var1-PriceScale*32);
#시초가에서 100핍, 101핍, 102핍 위로 상승하면 매수
if MarketPosition <= 0 and var1 > 0 Then
Buy("100위매수",AtStop,var1+PriceScale*100);
if MarketPosition <= 0 and var1 > 0 Then
Buy("101위매수",AtStop,var1+PriceScale*101);
if MarketPosition <= 0 and var1 > 0 Then
Buy("102위매수",AtStop,var1+PriceScale*102);
#시초가에서 100핍, 101핍, 102핍 아래로 하락하면 매도
if MarketPosition >= 0 and var1 > 0 Then
Sell("100위매도",AtStop,var1-PriceScale*100);
if MarketPosition >= 0 and var1 > 0 Then
Sell("101위매도",AtStop,var1-PriceScale*101);
if MarketPosition >= 0 and var1 > 0 Then
Sell("102위매도",AtStop,var1-PriceScale*102);
#익절 50틱
SetStopProfittarget(PriceScale*50,PointStop);
#손절 50틱
SetStopLoss(PriceScale*50,PointStop);
if stime == 121000 Then
var1 = C;
#12시10분 봉 종가에서 30핍, 31핍, 32핍 상승하면 매도
if MarketPosition >= 0 and var1 > 0 Then
sell("30위매도1",AtLimit,var1+PriceScale*30);
if MarketPosition >= 0 and var1 > 0 Then
sell("31위매도2",AtLimit,var1+PriceScale*31);
if MarketPosition >= 0 and var1 > 0 Then
sell("32위매도3",AtLimit,var1+PriceScale*32);
#12시10분 봉 종가에서 30핍, 31핍, 32핍 하락하면 매수
if MarketPosition <= 0 and var1 > 0 Then
Buyl("30아래매수1",AtLimit,var1-PriceScale*30);
if MarketPosition <= 0 and var1 > 0 Then
Buy("31아래매수2",AtLimit,var1-PriceScale*31);
if MarketPosition <= 0 and var1 > 0 Then
Buy("32아래매수3",AtLimit,var1-PriceScale*32);
#익절 50틱
SetStopProfittarget(PriceScale*50,PointStop);
#손절 50틱
SetStopLoss(PriceScale*50,PointStop);
답변 1
예스스탁 예스스탁 답변
2015-11-27 17:46:05
안녕하세요
예스스탁입니다.
1. 매수-매수포지션청산
var : Price1(0),Price2(0),cond1(false),cond2(false);
if stime == 065000 or (stime > 065000 and stime[1] < 065000) Then{
cond1 = false;
cond2 = false;
}
if Bdate != Bdate[1] Then{
var1 = O;
cond1 = true;
}
if stime == 121000 or (stime > 121000 and stime[1] < 121000) Then{
var2 = C;
cond2 = true;
}
if Cond1 == true and MarketPosition >= 0 Then{
if daylow > Price1-PriceScale*30 Then
buy("B11",atlimit,Price1-PriceScale*30);
if daylow > Price1-PriceScale*31 Then
buy("B12",AtLimit,Price1-PriceScale*31);
if daylow > Price1-PriceScale*32 Then
buy("B13",AtLimit,Price1-PriceScale*32);
if DayHigh < Price1+PriceScale*100 Then
buy("B21",AtStop,Price1+PriceScale*100);
if DayHigh < Price1+PriceScale*101 Then
buy("B22",AtStop,Price1+PriceScale*101);
if DayHigh < Price1+PriceScale*102 Then
buy("B23",AtStop,Price1+PriceScale*102);
}
if Cond2 == true and MarketPosition >= 0 Then{
if daylow > Price2-PriceScale*30 Then
buy("B31",atlimit,Price1-PriceScale*30);
if daylow > Price2-PriceScale*31 Then
buy("B32",AtLimit,Price1-PriceScale*31);
if daylow > Price2-PriceScale*32 Then
buy("B33",AtLimit,Price1-PriceScale*32);
}
SetStopProfittarget(PriceScale*50,PointStop);
SetStopLoss(PriceScale*50,PointStop);
2. 매도-매도포지션청산
var : Price1(0),Price2(0),cond1(false),cond2(false);
if stime == 065000 or (stime > 065000 and stime[1] < 065000) Then{
cond1 = false;
cond2 = false;
}
if Bdate != Bdate[1] Then{
var1 = O;
cond1 = true;
}
if stime == 121000 or (stime > 121000 and stime[1] < 121000) Then{
var2 = C;
cond2 = true;
}
if Cond1 == true and MarketPosition <= 0 Then{
if DayHigh < Price1+PriceScale*30 Then
Sell("S11",atlimit,Price1+PriceScale*30);
if DayHigh < Price1+PriceScale*31 Then
Sell("S12",AtLimit,Price1+PriceScale*31);
if DayHigh < Price1+PriceScale*32 Then
Sell("S13",AtLimit,Price1+PriceScale*32);
if DayLow > Price1-PriceScale*100 Then
Sell("S21",AtStop,Price1-PriceScale*100);
if Daylow > Price1-PriceScale*101 Then
Sell("S22",AtStop,Price1-PriceScale*101);
if DayLow > Price1-PriceScale*102 Then
Sell("S23",AtStop,Price1-PriceScale*102);
}
if Cond2 == true and MarketPosition <= 0 Then{
if DayHigh < Price2+PriceScale*30 Then
Sell("S31",atlimit,Price1+PriceScale*30);
if DayHigh < Price2+PriceScale*31 Then
Sell("S32",AtLimit,Price1+PriceScale*31);
if daylow < Price2+PriceScale*32 Then
Sell("S33",AtLimit,Price1+PriceScale*32);
}
SetStopProfittarget(PriceScale*50,PointStop);
SetStopLoss(PriceScale*50,PointStop);
즐거운 하루되세요
> 만법귀일 님이 쓴 글입니다.
> 제목 : 수식 문의드립니다.
> 안녕하세요..
늘 친절한 답변에 감사드립니다.
전에 한 번 질문 드려서 답변을 받았는데
적용을 해보려고 하니 잘 되지가 않아서
다시 한 번 질문 드려 봅니다.
cme 통화선물로 자동주문을 하고 자동청산을 하려고 합니다.
장 시작시간은 08:00이고 장 종료시간은 07:00입니다.
차트는 10분봉입니다.
07:00에 장이 시작하자마자
시가보다 30핍, 31핍, 32핍 위로 지정가 매도 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 동시에
시가보다 30핍, 31핍, 32핍 아래로 지정가 매수 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 함께 07:00에 장이 시작하자마자
시가보다 100핍, 101핍, 102핍 위로 스탑매수 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 동시에
시가보다 100핍, 101핍, 102핍 아래로 스탑매도 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고
오전 12시10분에 10분 봉이 완성 되었을 때
12시 10분 봉의 종가보다 30핍, 31핍, 32핍 위로 지정가 매도 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그리고 동시에
12시 10분 봉의 종가보다 30핍, 31핍, 32핍 아래로 지정가 매수 주문을 내고
익절을 50핍 손절을 50핍 목표로 하려고 합니다.
그러면 08시00분 시가 기준으로 12개의 주문이 조건 가격이 되면 자동으로 주문이 나가고
12시10분 종가 기준으로 6개의 주문이 조건가격이 되면 자동으로 주문이 나가고
체결된 주문은 자동으로 청산되었으면 합니다.
그리고 조건 가격에 도달하지 않아
주문이 나가지 않은 주문들은 장 종료 10분 전인 06시50분 이후로는
주문이 나가지 않았으면 합니다.
그래서 거래일 1일을 기준으로 포지션은 매도 포지션과 매수 포지션을 합해서 최대 18개까지만 보유하고 싶습니다.
그리고 다음 거래일로 넘어갔을 때 전일 체결된 주문들만 시스템상 자동 청산 대상이 되었으면 합니다.
그리고 다시 다음거래일 08:00과 12:10에 다음 거래일의 가격을 기준으로
다시 08시00분 봉 시가 기준으로 12개의 주문이조건가격이 되면 나가고
12시10분 종가 기준으로 6개의 주문이 조걱나격이 되면 나갔으면 합니다.
이렇게 1 거래일 단위로만 주문이 나가고 체결된 주문들은 시스템상 자동 청산 대상이 되고
그 거래일에 주문이 나가지 않은 주문들은 다음 거래일에 주문이 나가지 않고
다시 다음 거래일로 갔을 때 그 거래일 기준으로 주문이 나갔으면 합니다.
시스템이 매수포지션과 매도포지션을 동시에 보유할 수는 없으니까..
매수 주문과 매도 주문을 분리해서 별도로 시스템을 작성해야 하는지요?
전에 답변해주신 수식대로
다음과 같이 수식을 작성해보았습니다.
아래와 같이 수식을 작성하고 나서 적용을 해보면 제가 계획한 것과는 전혀 다른 결과가 나와버립니다. 전 거래일에는 조건 가격이 되지 않아 주문이 나가지 않은 주문들이 다음 거래일에 조건 가격이 되면서 주문이 나갑니다.
제가 해결해보려고 여러 모로 머리를 굴려도 잘 풀리지가 않습니다.
답변 부탁드리겠습니다. 감사합니다.
var : var1(0)
if bdate != Bdate[1] Then
var1 = O;
( 같은 날짜 오전 07:00에 장이 종료하고 1시간 후인 08:00에 장이 시작할 때 시가로 주문을 넣으려면 이 수식은 안 맞는 건가요?)
#시초가에서 30핍, 31핍, 32핍 상승하면 매도
if MarketPosition >= 0 and var1 > 0 Then
sell("30위매도",AtLimit,var1+PriceScale*30);
(여기서 MarketPosition >= 0 라는 건 매도 포지션이 없는 상태여야 한다는 걸로 이해를 하겠는데요. 매도포지션이 있는 상태에서도 추가로 매도포지션을 보유하려면 어떻게 수식을 작성해야 할까요? 시스템 트레이딩 설정창에서 피라미딩 설정을 모든 진입신호 허용으로 해 놓으면 되는지요? 거기에 더해서 진입설정(동일포지션의 누적허용)에서 주문수량을 1로 하고 진입횟수를 제가 원하는 포지션 보유 개수만큼 입력하면 되나요? 매수포지션도 이미 매수포지션을 보유한 상태에서도 추가로 진입하고 싶습니다.)
if MarketPosition >= 0 and var1 > 0 Then
sell("31위매도",AtLimit,var1+PriceScale*31);
if MarketPosition >= 0 and var1 > 0 Then
sell("32위매도",AtLimit,var1+PriceScale*32);
#시초가에서 30핍, 31핍, 32핍 하락하면 매수
if MarketPosition <= 0 and var1 > 0 Then
Buy("30아래매수",AtLimit,var1-PriceScale*30);
if MarketPosition <= 0 and var1 > 0 Then
Buy("31아래매수",AtLimit,var1-PriceScale*31);
if MarketPosition <= 0 and var1 > 0 Then
Buy("32아래매수",AtLimit,var1-PriceScale*32);
#시초가에서 100핍, 101핍, 102핍 위로 상승하면 매수
if MarketPosition <= 0 and var1 > 0 Then
Buy("100위매수",AtStop,var1+PriceScale*100);
if MarketPosition <= 0 and var1 > 0 Then
Buy("101위매수",AtStop,var1+PriceScale*101);
if MarketPosition <= 0 and var1 > 0 Then
Buy("102위매수",AtStop,var1+PriceScale*102);
#시초가에서 100핍, 101핍, 102핍 아래로 하락하면 매도
if MarketPosition >= 0 and var1 > 0 Then
Sell("100위매도",AtStop,var1-PriceScale*100);
if MarketPosition >= 0 and var1 > 0 Then
Sell("101위매도",AtStop,var1-PriceScale*101);
if MarketPosition >= 0 and var1 > 0 Then
Sell("102위매도",AtStop,var1-PriceScale*102);
#익절 50틱
SetStopProfittarget(PriceScale*50,PointStop);
#손절 50틱
SetStopLoss(PriceScale*50,PointStop);
if stime == 121000 Then
var1 = C;
#12시10분 봉 종가에서 30핍, 31핍, 32핍 상승하면 매도
if MarketPosition >= 0 and var1 > 0 Then
sell("30위매도1",AtLimit,var1+PriceScale*30);
if MarketPosition >= 0 and var1 > 0 Then
sell("31위매도2",AtLimit,var1+PriceScale*31);
if MarketPosition >= 0 and var1 > 0 Then
sell("32위매도3",AtLimit,var1+PriceScale*32);
#12시10분 봉 종가에서 30핍, 31핍, 32핍 하락하면 매수
if MarketPosition <= 0 and var1 > 0 Then
Buyl("30아래매수1",AtLimit,var1-PriceScale*30);
if MarketPosition <= 0 and var1 > 0 Then
Buy("31아래매수2",AtLimit,var1-PriceScale*31);
if MarketPosition <= 0 and var1 > 0 Then
Buy("32아래매수3",AtLimit,var1-PriceScale*32);
#익절 50틱
SetStopProfittarget(PriceScale*50,PointStop);
#손절 50틱
SetStopLoss(PriceScale*50,PointStop);
다음글
이전글