커뮤니티
부탁 드립니다.
2013-11-05 08:40:07
146
글번호 69166
수고 많으십니다.
아래의 조건을 세가지 식으로 부탁 드립니다.
수식에 코멘트 부탁 드립니다. 이해를 해야 반복 질문을 안 드릴 것 같네요.
1.
macd골드와 데드에 매수, 매도 진입.
2계약 진입.
손절은 10틱
손절하면 반대 포지션으로 2계약 자동스위칭.
익절은 분할로 한계약은 15틱, 남은 한개는 25틱.
남은 한개가 청산 안되고 손절되면 한개만 스위칭
(여기가 좀 복잡한데요. 스위칭 했는데 또 손절되면 다시 한개만 스위칭 입니다. 도저히 수식을 모르겠네요.)
두개 다 익절이 나오면 처음 조건부터 다시.
한개씩 스위칭 하다 익절이 나오면 처음 조건부터 다시.
2. 위 조건에서 5번 연속으로 5번 손절되면 거래를 멈추는 수식으로 부탁 드립니다.
3. 손절 횟수와 상관없이 두 계약 모두 익절되면 거래를 멈추는데, 한번 익절됐을 때, 두 번 익절 됐을 때 거래를 멈추는 수식으로 한개 더 부탁 드립니다.(횟수를 정하기 쉽게 변수로 처리해주셔도 좋구요.)
코멘트 꼭 부탁합니다.
좋은하루 되세요.
답변 1
예스스탁 예스스탁 답변
2013-11-05 09:57:43
안녕하세요
예스스탁입니다.
1.
Input : shortPeriod(25), longPeriod(26), Period(9);
var : MACDV(0),MACDS(0);
MACDV = MACD(shortPeriod, longPeriod);#MACD
MACDS = ema(MACDV, Period);#MACD시그널
#골든크로스이면 매수
If MarketPosition == 0 and CrossUP(MACDV, MACDS) Then
Buy("b",OnClose,def,2);
#데드크로스이면 매도
If MarketPosition == 0 and CrossDown(MACDV, MACDS) Then
Sell("s",OnClose,def,2);
#매수포지션 진입 후
if MarketPosition == 1 Then{
#15틱 수익이면 1계약 청산
ExitLong("BP1",Atlimit,EntryPrice+PriceScale*15,"",1,1);
#25틱 수익이면 2계약 청산
ExitLong("BP2",Atlimit,EntryPrice+PriceScale*25,"",1,1);
#현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2
if CurrentContracts == 2 Then
sell("bs2",AtStop,EntryPrice-PriceScale*10,2);
#현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1
if CurrentContracts == 1 Then
sell("bs1",AtStop,EntryPrice-PriceScale*10,1);
}
#매도포지션 진입 후
if MarketPosition == -1 Then{
#15틱 수익이면 1계약 청산
ExitShort("SP1",Atlimit,EntryPrice-PriceScale*15,"",1,1);
#25틱 수익이면 2계약 청산
ExitShort("SP2",Atlimit,EntryPrice-PriceScale*25,"",1,1);
#현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2
if CurrentContracts == 2 Then
Buy("sb2",AtStop,EntryPrice+PriceScale*10,2);
#현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1
if CurrentContracts == 1 Then
Buy("sb1",AtStop,EntryPrice+PriceScale*10,1);
}
2.
Input : shortPeriod(25), longPeriod(26), Period(9);
var : MACDV(0),MACDS(0),cnt(0),count(0),xcond(false);
MACDV = MACD(shortPeriod, longPeriod);#MACD
MACDS = ema(MACDV, Period);#MACD시그널
#당일 최근4번 거래의 진입이 sb1,sb2,bs1,bs2인 횟수
count = 0;
for cnt = 0 to 3{
if sdate == EntryDate(cnt) And
(IsExitName("sb1") == true Or
IsExitName("sb2") == true Or
IsExitName("bs1") == true Or
IsExitName("bs2") == true) Then
count = count+1;
}
#bx나 sx청산이 나오면 true아니면 false
xcond = ExitDate(1) == sdate and (IsExitName("bx",1) ==true or IsExitName("sx",1) == true);
#무포지션
If MarketPosition == 0 and
#청산이 발생한 봉에서 동시에 진입을 하지 못하게하는내용
(ExitDate(1) != sdate or (ExitDate(1) == sdate and BarsSinceExit(1) != 0)) and
#5연속 손절시 진입을 막는 내용
Xcond == false then{
#골든크로스이면 매수
if CrossUP(MACDV, MACDS) Then
Buy("b",OnClose,def,2);
#데드크로스이면 매도
If CrossDown(MACDV, MACDS) Then
Sell("s",OnClose,def,2);
}
#매수포지션 진입 후
if MarketPosition == 1 Then{
#15틱 수익이면 1계약 청산
ExitLong("BP1",Atlimit,EntryPrice+PriceScale*15,"",1,1);
#25틱 수익이면 2계약 청산
ExitLong("BP2",Atlimit,EntryPrice+PriceScale*25,"",1,1);
#손절 후 스위칭이 연속 4번미만일때
if count < 4 Then{
#현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2
if CurrentContracts == 2 and count < 4 Then
sell("bs2",AtStop,EntryPrice-PriceScale*10,2);
#스위칭4번미만일때 현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1
if CurrentContracts == 1 and count < 4 Then
sell("bs1",AtStop,EntryPrice-PriceScale*10,1);
}
#스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속5번째손절만)
if count == 4 Then
ExitLong("bx",AtStop,EntryPrice-PriceScale*10);
}
#매도포지션 진입 후
if MarketPosition == -1 Then{
#15틱 수익이면 1계약 청산
ExitShort("SP1",Atlimit,EntryPrice-PriceScale*15,"",1,1);
#25틱 수익이면 2계약 청산
ExitShort("SP2",Atlimit,EntryPrice-PriceScale*25,"",1,1);
#손절 후 연속스위칭4번미만일때
if count < 4 Then{
#현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2
if CurrentContracts == 2 Then
Buy("sb2",AtStop,EntryPrice+PriceScale*10,2);
#현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1
if CurrentContracts == 1 Then
Buy("sb1",AtStop,EntryPrice+PriceScale*10,1);
}
#스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속 5번째 손절만)
if count == 4 Then
ExitShort("sx",AtStop,EntryPrice+PriceScale*10);
}
3.
Input : shortPeriod(25), longPeriod(26), Period(9),Profit(2);
var : MACDV(0),MACDS(0),cnt(0),count(0),xcond(false);
var : Pcnt(0);
if date != date[1] Then
Pcnt = 0;
MACDV = MACD(shortPeriod, longPeriod);#MACD
MACDS = ema(MACDV, Period);#MACD시그널
#당일 최근4번 거래의 진입이 sb1,sb2,bs1,bs2인 횟수
count = 0;
for cnt = 0 to 3{
if sdate == EntryDate(cnt) And
(IsExitName("sb1") == true Or
IsExitName("sb2") == true Or
IsExitName("bs1") == true Or
IsExitName("bs2") == true) Then
count = count+1;
}
#bx나 sx청산이 나오면 true아니면 false
xcond = ExitDate(1) == sdate and (IsExitName("bx",1) ==true or IsExitName("sx",1) == true);
#익절청산횟수
if ExitDate(1) == sdate and MarketPosition == 0 and MarketPosition[1] != 0 Then
Pcnt = Pcnt+1;
#무포지션
If MarketPosition == 0 and
#청산이 발생한 봉에서 동시에 진입을 하지 못하게하는내용
(ExitDate(1) != sdate or (ExitDate(1) == sdate and BarsSinceExit(1) != 0)) and
#수익청산 횟수 제어
Pcnt < Profit and
#5번연속 손절발생시 더이상 추가진입을 하지 못하게 함
Xcond == false Then{
#골든크로스이면 매수
if CrossUP(MACDV, MACDS) Then
Buy("b",OnClose,def,2);
#데드크로스이면 매도
if CrossDown(MACDV, MACDS) and Xcond == false Then
Sell("s",OnClose,def,2);
}
#매수포지션 진입 후
if MarketPosition == 1 Then{
#15틱 수익이면 1계약 청산
ExitLong("BP1",Atlimit,EntryPrice+PriceScale*15,"",1,1);
#25틱 수익이면 2계약 청산
ExitLong("BP2",Atlimit,EntryPrice+PriceScale*25,"",1,1);
#손절 후 스위칭이 연속 4번미만일때
if count < 4 Then{
#현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2
if CurrentContracts == 2 and count < 4 Then
sell("bs2",AtStop,EntryPrice-PriceScale*10,2);
#스위칭4번미만일때 현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1
if CurrentContracts == 1 and count < 4 Then
sell("bs1",AtStop,EntryPrice-PriceScale*10,1);
}
#스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속5번째손절만)
if count == 4 Then
ExitLong("bx",AtStop,EntryPrice-PriceScale*10);
}
#매도포지션 진입 후
if MarketPosition == -1 Then{
#15틱 수익이면 1계약 청산
ExitShort("SP1",Atlimit,EntryPrice-PriceScale*15,"",1,1);
#25틱 수익이면 2계약 청산
ExitShort("SP2",Atlimit,EntryPrice-PriceScale*25,"",1,1);
#손절 후 연속스위칭4번미만일때
if count < 4 Then{
#현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2
if CurrentContracts == 2 Then
Buy("sb2",AtStop,EntryPrice+PriceScale*10,2);
#현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1
if CurrentContracts == 1 Then
Buy("sb1",AtStop,EntryPrice+PriceScale*10,1);
}
#스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속 5번째 손절만)
if count == 4 Then
ExitShort("sx",AtStop,EntryPrice+PriceScale*10);
}
즐거운 하루되세요
> 고운무지개 님이 쓴 글입니다.
> 제목 : 부탁 드립니다.
> 수고 많으십니다.
아래의 조건을 세가지 식으로 부탁 드립니다.
수식에 코멘트 부탁 드립니다. 이해를 해야 반복 질문을 안 드릴 것 같네요.
1.
macd골드와 데드에 매수, 매도 진입.
2계약 진입.
손절은 10틱
손절하면 반대 포지션으로 2계약 자동스위칭.
익절은 분할로 한계약은 15틱, 남은 한개는 25틱.
남은 한개가 청산 안되고 손절되면 한개만 스위칭
(여기가 좀 복잡한데요. 스위칭 했는데 또 손절되면 다시 한개만 스위칭 입니다. 도저히 수식을 모르겠네요.)
두개 다 익절이 나오면 처음 조건부터 다시.
한개씩 스위칭 하다 익절이 나오면 처음 조건부터 다시.
2. 위 조건에서 5번 연속으로 5번 손절되면 거래를 멈추는 수식으로 부탁 드립니다.
3. 손절 횟수와 상관없이 두 계약 모두 익절되면 거래를 멈추는데, 한번 익절됐을 때, 두 번 익절 됐을 때 거래를 멈추는 수식으로 한개 더 부탁 드립니다.(횟수를 정하기 쉽게 변수로 처리해주셔도 좋구요.)
코멘트 꼭 부탁합니다.
좋은하루 되세요.