커뮤니티
문의드립니다
2016-12-08 11:10:29
97
글번호 104751
항상 수고가 많으십니다.
아래와 같이 수식을 만들고자 합니다.
(1) 오전(08시~12시) 중에 당일시가를 기준으로 캔들이 기준선 위로 or 아래로 돌파할때 매수,매도 조건은 아래와 같다.
1.매수
캔들이 당일시가를 상방으로 돌파할때
MACD 와 시그널이 이미 골든크로스 했고 and 30분봉 차트의 직전 완성봉이 양봉 이라면 매수진입하고 a.wmv 를 실행.
2.매도
캔들이 당일시가를 하방으로 돌파할때
MACD 와 시그널이 이미 데드크로스 했고 and 30분봉 차트의 직전 완성봉이 음봉 이라면 매도진입하고 b.wmv 를 실행.
3.청산 외
청산 : 20틱 수익시 청산
(오전중에 청산가에 도달하지 못하였을 경우 12시이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산, 만일 20틱 수익 청산하였다면 오전중에 또다시 첫번째와 동일방향으로 진입신호 발생시에만 재진입한다.)
손절 : 12틱
반절 : 진입후 +10틱 수익내면서 전고점을 돌파하면 손절을 6틱으로 변경
본절 : 진입후 +15틱 수익내면서 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정
청산가에 도달하기전에 본절로 청산된 경우 첫번째 진입가를 돌파하면 재진입
슬리피지 : 2틱
(2) 오후(12시~19시) 중에 당일저가를 기준으로 상방으로 50틱이상 오르고 MACD 가 기준선 위에 있을때
MACD 와 시그널이 골든크로스 하자마자 매수진입 하고 c.wmv 를 실행시킨다.
손절: 15틱 (손절되면 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 매수진입)
반절 : 진입후 +10틱 상승한후 전고점을 돌파하면 손절을 10틱으로 변경
본절: 진입후 +20틱 상승한후 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정.
청산가에 도달하기전에 본절로 청산된 경우 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 재매수진입, 1차 재매수진입 후에도 청산가 도달전에 또다시 본절 or 손절되면 동일한 방법으로 2차 재매수진입까지 한다.)
슬리피지: 2틱
청산: 100틱 도달시 청산 (익일 새벽 4시까지 청산가에 도달하지 못하였을 경우 04시 이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산하고 d.wmv 를 실행시킨다.
오늘도 행복한 하루 되세요 ^^
답변 1
예스스탁 예스스탁 답변
2016-12-08 13:27:25
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
playsound의 wav파일의 경로와 파일명은 직접 지정하셔야 합니다.
input : short(12),long(26),sig(9);
var : MACDV(0),MACDS(0),N1(0),entry(0);
MACDV = MACD(short,long);
MACDS = ema(MACDv,sig);
if (stime == 080000 or (stime > 080000 and stime[1] < 080000)) or
(stime == 120000 or (stime > 120000 and stime[1] < 120000)) then
N1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-N1;
Else
entry = (TotalTrades-N1)+1;
if stime >= 080000 and stime < 120000 then{
if crossup(c,dayopen) and MACDV > MACDS and C > O Then{
if entry == 0 or
(entry >= 1 and MarketPosition == -1) or
(entry >= 1 and MarketPosition == 0 and IsExitName("매도익절1",1) == false) Then{
buy("b1");
PlaySound("a.wav경로와파일명");
}
}
if CrossDown(c,dayopen) and MACDV < MACDS and C < O Then{
if entry == 0 or
(entry >= 1 and MarketPosition == -1) or
(entry >= 1 and MarketPosition == 0 and IsExitName("매수익절1",1) == false) Then{
sell("s1");
PlaySound("b.wav경로와파일명");
}
}
if MarketPosition == 1 Then{
ExitLong("매수익절1",atlimit,EntryPrice+PriceScale*20);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*10 Then
ExitLong("매수손절1",AtStop,EntryPrice-PriceScale*12);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*10 and highest(H,BarsSinceEntry) < EntryPrice+PriceScale*15 Then
ExitLong("매수반절1",AtStop,EntryPrice-PriceScale*6);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*15 Then
ExitLong("매수본절1",AtStop,EntryPrice);
}
if MarketPosition == -1 Then{
ExitShort("매도익절1",atlimit,EntryPrice-PriceScale*20);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*10 Then
ExitShort("매도손절1",AtStop,EntryPrice+PriceScale*20);
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*10 and Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*15 Then
ExitShort("매도반절1",AtStop,EntryPrice+PriceScale*6);
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*15 Then
ExitShort("매도본절1",AtStop,EntryPrice);
}
}
if stime >= 120000 and stime < 190000 then{
if entry == 0 and c > daylow+PriceScale*50 and crossup(MACDV,MACDS) and C > O Then{
buy("b2");
PlaySound("c.wav경로와파일명");
}
if entry == 1 and MarketPosition == 0 and IsExitName("매수본절2",1) == true and crossup(MACDv,MACDS) Then
buy("b3");
if entry == 2 and MarketPosition == 0 and (IsExitName("매수손절2",1) == true or IsExitName("매수본절2",1) == true) and crossup(MACDv,MACDS) Then
buy("b4");
}
if stime >= 120000 or stime < 040000 then{
if MarketPosition == 1 and IsEntryName("b1") == true and
MACDV < MACDV[1] and MACDV[1] > 0 and MACDV[1] == highest(MACDV,BarsSinceEntry) Then
ExitLong("bx1");
if MarketPosition == -1 and IsEntryName("s1") == true and
MACDV > MACDV[1] and MACDV[1] < 0 and MACDV[1] == Lowest(MACDV,BarsSinceEntry) Then
ExitShort("sx1");
if MarketPosition == 1 and (IsEntryName("b2") == true or IsEntryName("b3") == true) Then{
ExitLong("매수익절2",Atlimit,EntryPrice+PriceScale*100);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*11 Then
ExitLong("매수손절2",AtStop,EntryPrice-PriceScale*15);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*10 and highest(H,BarsSinceEntry) < EntryPrice+PriceScale*20 Then
ExitLong("매수반절2",AtStop,EntryPrice-PriceScale*10);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*20 Then
ExitLong("매수본절2",AtStop,EntryPrice);
}
}
if stime >= 040000 and stime < 080000 Then{
if MarketPosition == 1 and (IsEntryName("b2") or IsEntryName("b3") or IsEntryName("b4")) and
MACDV < MACDV[1] and MACDV[1] > 0 and MACDV[1] == highest(MACDV,BarsSinceEntry) Then{
ExitLong("bx2");
PlaySound("d.wav경로와파일명");
}
}
즐거운 하루되세요
> 웹피 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 항상 수고가 많으십니다.
아래와 같이 수식을 만들고자 합니다.
(1) 오전(08시~12시) 중에 당일시가를 기준으로 캔들이 기준선 위로 or 아래로 돌파할때 매수,매도 조건은 아래와 같다.
1.매수
캔들이 당일시가를 상방으로 돌파할때
MACD 와 시그널이 이미 골든크로스 했고 and 30분봉 차트의 직전 완성봉이 양봉 이라면 매수진입하고 a.wmv 를 실행.
2.매도
캔들이 당일시가를 하방으로 돌파할때
MACD 와 시그널이 이미 데드크로스 했고 and 30분봉 차트의 직전 완성봉이 음봉 이라면 매도진입하고 b.wmv 를 실행.
3.청산 외
청산 : 20틱 수익시 청산
(오전중에 청산가에 도달하지 못하였을 경우 12시이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산, 만일 20틱 수익 청산하였다면 오전중에 또다시 첫번째와 동일방향으로 진입신호 발생시에만 재진입한다.)
손절 : 12틱
반절 : 진입후 +10틱 수익내면서 전고점을 돌파하면 손절을 6틱으로 변경
본절 : 진입후 +15틱 수익내면서 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정
청산가에 도달하기전에 본절로 청산된 경우 첫번째 진입가를 돌파하면 재진입
슬리피지 : 2틱
(2) 오후(12시~19시) 중에 당일저가를 기준으로 상방으로 50틱이상 오르고 MACD 가 기준선 위에 있을때
MACD 와 시그널이 골든크로스 하자마자 매수진입 하고 c.wmv 를 실행시킨다.
손절: 15틱 (손절되면 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 매수진입)
반절 : 진입후 +10틱 상승한후 전고점을 돌파하면 손절을 10틱으로 변경
본절: 진입후 +20틱 상승한후 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정.
청산가에 도달하기전에 본절로 청산된 경우 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 재매수진입, 1차 재매수진입 후에도 청산가 도달전에 또다시 본절 or 손절되면 동일한 방법으로 2차 재매수진입까지 한다.)
슬리피지: 2틱
청산: 100틱 도달시 청산 (익일 새벽 4시까지 청산가에 도달하지 못하였을 경우 04시 이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산하고 d.wmv 를 실행시킨다.
오늘도 행복한 하루 되세요 ^^