예스스탁
예스스탁 답변
2022-12-22 16:16:49
안녕하세요
예스스탁입니다.
1
기존 진입청산을 유지한 상태에서
5-10 데드나 골드가 나면 첫진입만 청산하는 내용이므로
첫진입의 이름을 이용해서 청산하게 작성하시면 됩니다.
청산함수에 진입명을 지정하면 해당 진입만 청산이 됩니다.
아래는 5-20골드나 데드로 발생하는
매수첫진입의 이름을 b1,매도 첫진입의 이름을 s1으로 보고 작성해 드립니다.
기존식에 아래 청산내용을 진입명만 변경해서 추가하시면 됩니다.
var : mav1(0),mav2(0),mav3(0);
mav1 = ma(C,5);
mav2 = ma(C,10);
mav3 = ma(C,20);
if MarketPosition == 1 Then
{
if CrossDown(mav1,mav2) Then
ExitLong("bx",OnClose,Def,"b1");
}
if MarketPosition == -1 Then
{
if CrossUp(mav1,mav2) Then
ExitShort("sx",OnClose,Def,"s1");
}
2
절반으로 청산하면 아래와 같이 작성하시면 됩니다.
진입 후 5-20 첫데드나 첫골드일때만 청산이 발생하고 현재 보유한 절반을 청산합니다.
절반이 1.5와 같이 소숫점이 있을 경우 올림하거난 내림을 해야 하는데
해당 부분은 선택하시면 됩니다.
청산은 기본적으로 청산함수에 진입명을 지정해 특정 진입을 청산하게 하지 않으면
신호순서상 앞쪽 진입부터 수량을 차감해서 청산하게 됩니다.
남은 수량은 기존의 청산조건 만족시 청산되거나 스위칭시 청산됩니다.
var : mav1(0),mav2(0),mav3(0);
mav1 = ma(C,5);
mav2 = ma(C,10);
mav3 = ma(C,20);
if MarketPosition == 1 Then
{
if Condition1 == False and CrossDown(mav1,mav2) Then
{
Condition1 = true;
ExitLong("bx",OnClose,Def,"",Ceiling(CurrentContracts/2),1);#내림 Floor(CurrentContracts/2)
}
}
Else
Condition1 = False;
if MarketPosition == -1 Then
{
if Condition2 == False and CrossUp(mav1,mav2) Then
{
Condition2 = true;
ExitShort("sx",OnClose,Def,"",Ceiling(CurrentContracts/2),1);#내림 Floor(CurrentContracts/2)
}
}
Else
Condition2 = False;
즐거운 하루되세요
> 카르마다 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 노고에 늘 감사드립니다.
5, 20선 골든/데드클로스 국내선물 매매에서 2계약을 첫 진입한 후 위로 2틱, 5틱 오를때 마다 1계약씩 추가로 매수하고, 아래로 2틱, 5틱 내릴때 마다 1계약씩 추가로 매수하는 시스템식이 있습니다. 즉 최소 4계약에서 최대 6계약이 진입됩니다.
그런데 청산은 트레이딩스탑이나 특정조건이 만족하면 청산됩니다.
원하는 것은 이럴 경우 분할해서 일부는 청산하고 싶습니다.
첫 2계약은 확실하지만 나머지 계약은 확실하지 않으니 5, 10선이 데드클로스나면 첫 진입 2계약은 무조건 청산되고 나머지 진입분은 원래대로 스테리딩스탑, 청산 특정조건 만족, 다른방향 신호가 나올시 전량 청산하고 싶습니다.
구현이 가능하다면 진입분의 절반이 청산되게 하고 싶으나 3, 5계약은 절반 규정이 힘들듯해 첫진입 2계약 별도 청산으로 요청드립니다. 이 시스템의 경우 분할 청산하는데 다른 방법이 있은지도 궁금합니다.
미리 감사드립니다~