커뮤니티
문의드립니다.
2013-09-09 15:29:01
108
글번호 67328
안녕하세요.
청산 exitlong을 쓸 때, 보유수량이 있을 경우에만 주문이 들어갈 수 있게 할 수 있나요?
예를 들면, 매수 신호에서 매수가 실패하여 보유 수량이 없을 경우에는 exitlong 주문이 실행되지 않게끔 하는 것입니다.
그리고, 매수는 한 번이지만, 청산은 3번에 나누어서 할 경우 각각의 청산 주문시에도 수량이 없을 경우에는 주문이 들어가지 않는 식을 어떻게 추가하면 되는지 알려주셨으면 합니다.
그리고, 아래 시스템식에서 count < 2 로 매수 주문 횟수 제한을 걸었는데, 주문이 여러번 들어갑니다. 어떤 오류인지 모르겠습니다.
input : MM(200),N(100),XN1(100),XN2(200);
var : LH(0), count(0);
#당일 저점이 후의 최고가
if L == daylow Then{
LH = H;
var1 = stime;
}
if stime > var1 and H > LH Then
LH = H;
#저점이후의 가격이 저점대비 200%이상상승했을 경우
#저점대비 100% 상승한 가격에서 매수
if 091000 < stime and stime < 150000 and
stime > var1 and count < 2 and
LH >= DayLow*(1+MM/100) Then
buy("B", AtLimit, DayLow*(1+N/100));
if MarketPosition == 1 Then{
#진입이후 첫청산
if CurrentContracts == MaxContracts Then
ExitLong("bx1",AtLimit,EntryPrice*(1+XN1/100),"",int(MaxContracts*0.8),1);
#진입이후 두번째 청산
if CurrentContracts < MaxContracts Then
ExitLong("bx2",AtLimit,EntryPrice*(1+XN2/100),"",int(MaxContracts*0.2),1);
#매수후 10개봉 이후에 직전30개봉의 최저가 대비 -1틱 붕괴시 청산
if MarketPosition == 1 and BarsSinceEntry >= 10 Then
exitlong("bx",AtStop,lowest(L,30)-PriceScale*2);
}
SetStopEndofday(144500);
감사합니다.
답변 1
예스스탁 예스스탁 답변
2013-09-09 16:49:57
안녕하세요
예스스탁입니다.
1.
문의하신 내용 가능하지 않습니다.
시스템의 청산은 신호상의 조건으로만 가능합니다.
체결여부로 제어가능하지 않습니다.
2.
count는 단지 변수일 뿐입니다.
수식에 변수로 count만 있고
당일진입횟수를 세는 내용이 없습니다.
아래와 같이 당일진입횟수를 계산해서 count에 값이
저장되게 작성하시고 사용하셔야 합니다.
input : MM(200),N(100),XN1(100),XN2(200);
var : LH(0),cnt(0), count(0);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
#당일 저점이 후의 최고가
if L == daylow Then{
LH = H;
var1 = stime;
}
if stime > var1 and H > LH Then
LH = H;
#저점이후의 가격이 저점대비 200%이상상승했을 경우
#저점대비 100% 상승한 가격에서 매수
if 091000 < stime and stime < 150000 and
stime > var1 and count < 2 and
LH >= DayLow*(1+MM/100) Then
buy("B", AtLimit, DayLow*(1+N/100));
if MarketPosition == 1 Then{
#진입이후 첫청산
if CurrentContracts == MaxContracts Then
ExitLong("bx1",AtLimit,EntryPrice*(1+XN1/100),"",int(MaxContracts*0.8),1);
#진입이후 두번째 청산
if CurrentContracts < MaxContracts Then
ExitLong("bx2",AtLimit,EntryPrice*(1+XN2/100),"",int(MaxContracts*0.2),1);
#매수후 10개봉 이후에 직전30개봉의 최저가 대비 -1틱 붕괴시 청산
if MarketPosition == 1 and BarsSinceEntry >= 10 Then
exitlong("bx",AtStop,lowest(L,30)-PriceScale*2);
}
SetStopEndofday(144500);
즐거운 하루되세요
> 애널박 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
청산 exitlong을 쓸 때, 보유수량이 있을 경우에만 주문이 들어갈 수 있게 할 수 있나요?
예를 들면, 매수 신호에서 매수가 실패하여 보유 수량이 없을 경우에는 exitlong 주문이 실행되지 않게끔 하는 것입니다.
그리고, 매수는 한 번이지만, 청산은 3번에 나누어서 할 경우 각각의 청산 주문시에도 수량이 없을 경우에는 주문이 들어가지 않는 식을 어떻게 추가하면 되는지 알려주셨으면 합니다.
그리고, 아래 시스템식에서 count < 2 로 매수 주문 횟수 제한을 걸었는데, 주문이 여러번 들어갑니다. 어떤 오류인지 모르겠습니다.
input : MM(200),N(100),XN1(100),XN2(200);
var : LH(0), count(0);
#당일 저점이 후의 최고가
if L == daylow Then{
LH = H;
var1 = stime;
}
if stime > var1 and H > LH Then
LH = H;
#저점이후의 가격이 저점대비 200%이상상승했을 경우
#저점대비 100% 상승한 가격에서 매수
if 091000 < stime and stime < 150000 and
stime > var1 and count < 2 and
LH >= DayLow*(1+MM/100) Then
buy("B", AtLimit, DayLow*(1+N/100));
if MarketPosition == 1 Then{
#진입이후 첫청산
if CurrentContracts == MaxContracts Then
ExitLong("bx1",AtLimit,EntryPrice*(1+XN1/100),"",int(MaxContracts*0.8),1);
#진입이후 두번째 청산
if CurrentContracts < MaxContracts Then
ExitLong("bx2",AtLimit,EntryPrice*(1+XN2/100),"",int(MaxContracts*0.2),1);
#매수후 10개봉 이후에 직전30개봉의 최저가 대비 -1틱 붕괴시 청산
if MarketPosition == 1 and BarsSinceEntry >= 10 Then
exitlong("bx",AtStop,lowest(L,30)-PriceScale*2);
}
SetStopEndofday(144500);
감사합니다.
다음글
이전글