커뮤니티
질문드립니다.
2014-03-04 13:26:24
149
글번호 73169
질문의 요지는 분할매수와 분할청산에 관련된 것입니다.
예를들어 선물매수부분에서 총 4계약을 2계약씩 묶어서 두번의 매수진입과 두번의 매수청산으로 운영하고 싶습니다.
1. 분할매수 관련 질문
일단 간단히 매수진입 수식을 10이평 돌파시 2계약 매수,
후에 5이평 돌파시 2계약 매수라고 할때
if crossup(c, ma(10)) then
{ buy("1", atmarket, def, 2); }
if marketposition(0) == 1 and crossup(c, ma(5)) then
{ buy("2", atmarket, def, 2); }
라고 코딩하면 맞는건가요?
2. 분할청산 관련 질문
만약 4계약이 모두 체결된 상황에서 최대수익 후 수익이 감소할때(예 : 0.2pt or 0.2%) 2계약을 청산하고,
분할청산 후 추가로 수익이 감소할때(예 : 0.3pt or 0.3%) 남은 2계약을 완전히 청산하는 수식을 알고 싶습니다.
3. def와 onclose관련 질문
1의 질문에서 atmarket 주문에서 def가 수행하는 바가 무었인가요?
def가 해당되는 자리에 다른 명령어를 입력할 수 있나요?
잠시 살펴보니 분할청산에는 onclose가 사용되는 것 같던데, onclose의 활용법도 알려주시면 감사하겠습니다.
간단한 예시와 함께 답변 부탁드립니다.
답변 1
예스스탁 예스스탁 답변
2014-03-04 17:10:37
안녕하세요
예스스탁입니다.
1.
첫번째 진입에 무포지션을 나타내는 조건과
두번째 진입에 추가로 한번만 발생할수 있게 현재 진입횟수가 1이라는 조건을 넣어주시면 됩니다.
if MarketPosition == 0 and crossup(c,ma(c,10)) then
{ buy("1", atmarket, def, 2); }
if marketposition(0) == 1 and MaxEntries == 1 and crossup(c, ma(c,5)) then
{ buy("2", atmarket, def, 2); }
2.
var : HH(0);
if MarketPosition == 0 and crossup(c,ma(c,10)) then
{ buy("1", atmarket, def, 2); }
if marketposition(0) == 1 and MaxEntries == 1 and crossup(c, ma(c,5)) then
{ buy("2", atmarket, def, 2); }
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
HH = 0;
}
if H > HH Then
HH = H;
#2번 진입후 아직 한번도 분할로 청산이 안된 상태에서
#진입이후 최고가에서 0.3하락하면 즉시 2계약청산
if MaxEntries == 2 and CurrentContracts == MaxContracts Then
ExitLong("bx1",AtStop,HH-0.3,"",2,2);
#2번 진입후 한번도 분할로 청산이 된 상태에서
#진입이후 최고가에서 0.6하락하면 즉시 2계약청산
if MaxEntries == 2 and CurrentContracts < MaxContracts Then
ExitLong("bx2",AtStop,HH-0.6,"",2,2);
}
3.
주문함수의 3번째 매개변수는 주문타입을 atstop이나 atlimit으로 할때의
신호가격을 지정하는 부분입니다. atmarket이나 onclose타입에서는
지정할 가격이 없으므로 def로 넣으시면 됩니다.
분할청산에서도 모든 주문타입 모두 사용됩니다. onclose타입만 사용되는 것은 아닙니다.
위 식은 지정한 가격을 터치하면 신호가 발생하는데 onclose로 하면 최종 봉 완성시에
청산됩니다.
아래식은 청산식을 onclose로 작성한 식입니다.
var : HH(0);
if MarketPosition == 0 and crossup(c,ma(c,10)) then
{ buy("1", atmarket, def, 2); }
if marketposition(0) == 1 and MaxEntries == 1 and crossup(c, ma(c,5)) then
{ buy("2", atmarket, def, 2); }
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
HH = 0;
}
if H > HH Then
HH = H;
#2번 진입후 아직 한번도 분할로 청산이 안된 상태에서
#진입이후 최고가에서 0.3하락하는 종가 발생하면 2계약청산
if MaxEntries == 2 and CurrentContracts == MaxContracts and CrossDown(c,HH-0.3) Then
ExitLong("bx1",onclose,def,"",2,2);
#2번 진입후 한번도 분할로 청산이 된 상태에서
#진입이후 최고가에서 0.6하락하는 종가 발생하면 2계약청산
if MaxEntries == 2 and CurrentContracts < MaxContracts and CrossDown(c,HH-0.6) Then
ExitLong("bx2",onclose,def,"",2,2);
}
즐거운 하루되세요
> HI_yj**** 님이 쓴 글입니다.
> 제목 : 질문드립니다.
>
질문의 요지는 분할매수와 분할청산에 관련된 것입니다.
예를들어 선물매수부분에서 총 4계약을 2계약씩 묶어서 두번의 매수진입과 두번의 매수청산으로 운영하고 싶습니다.
1. 분할매수 관련 질문
일단 간단히 매수진입 수식을 10이평 돌파시 2계약 매수,
후에 5이평 돌파시 2계약 매수라고 할때
if crossup(c, ma(10)) then
{ buy("1", atmarket, def, 2); }
if marketposition(0) == 1 and crossup(c, ma(5)) then
{ buy("2", atmarket, def, 2); }
라고 코딩하면 맞는건가요?
2. 분할청산 관련 질문
만약 4계약이 모두 체결된 상황에서 최대수익 후 수익이 감소할때(예 : 0.2pt or 0.2%) 2계약을 청산하고,
분할청산 후 추가로 수익이 감소할때(예 : 0.3pt or 0.3%) 남은 2계약을 완전히 청산하는 수식을 알고 싶습니다.
3. def와 onclose관련 질문
1의 질문에서 atmarket 주문에서 def가 수행하는 바가 무었인가요?
def가 해당되는 자리에 다른 명령어를 입력할 수 있나요?
잠시 살펴보니 분할청산에는 onclose가 사용되는 것 같던데, onclose의 활용법도 알려주시면 감사하겠습니다.
간단한 예시와 함께 답변 부탁드립니다.
다음글
이전글