커뮤니티
수식문의
2017-01-21 12:27:58
115
글번호 106159
안녕하세요
추가문의 사항이 있어서 메일드립니다.
죄송하지만 하기 확인 부탁드립니다.
input : P(14),BBP(20),dv(2),MAP(60);
input : short(12),long(26),sig(9);
var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0);
var : MACDV(0),MACDS(0),Bcond(false),Scond(False);;
ADXV = ADX(P);
DP = Diplus(P);
DM = DiMinus(P);
BBup = BollBandUp(BBP,dv);
BBdn = BollBandDown(BBP,dv);
mav = ma(C,MAP);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4);
Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4);
if CrossUp(BBdn,mav) and countif(crossdown(BBdn,mav),5) < 1 and DP < 40 and bcond == true Then
buy("b1");
if CrossDown(BBup,mav) and countif(CrossUp(BBup,mav),5) < 1 and DM <40 and scond == true Then
sell("s1");
if MarketPosition == 0 Then{
if MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and H > BBup Then{
buy("bb",AtStop,C+PriceScale);
}
if MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and L < BBdn Then{
sell("ss",AtStop,C-PriceScale);
}
}
1.
상기 수식 b1,s1은 볼린져 밴드가 60 이평을 둟을때 적용되는 수식입니다.
하기와 같이 수정을 했으면 합니다
볼린져 밴드 상단밴드가 60 이평을 위에서 아래로 crossdown 할 때,
macd 가 macd signal보다 위에 있으면 매수,
macd 가 macd signal보다 아래 있으면 매도로 수식 변경 요청 드립니다.
마찬가지로 볼린져 밴드 하단밴드가 60 이평을 아래서 위로 crossup 할 때,
macd가 macd signal보다 위에 있으면 매수,
macd가 macd signal보다 아래 있으면 매도로 수식 변경 요청 드립니다.
2.
진입신호 bb와 ss의 청산 수식을 추가하고 싶습니다.
bb진입 후, macd가 macd signal보다 아래로 내려가면 청산
ss진입 후, macd가 macd signal보다 위로 올라가면 청산 하는 수식 구현 부탁드립니다.
bb나 ss진입후 연속 3번이상 익절을 내고,
4번째 진입한 bb, ss의 상태가 볼린져 밴드를 상단 혹은 하단을 닿지않는 봉이 3개이상
발생하면,
해당봉에서 청산하는 수식도 같이 부탁드립니다.
3.
연속된 두 봉의 합이 30틱을 넘으면 바로 추격매매 들어가는 수식 부탁드립니다.
가격이 갑자기 올라가든 내려가든, 두 봉의 합이 30틱을 넘어서면
30틱의 가격이 올라가는 봉이면 매수로, 30틱의 가격이 내려가는 봉이면 매도로
수식 부탁드립니다.
상기 수식은 어떠한 수식에 걸려 있더라도 작동 되게 부탁드립니다.
예를 들어 현재 매도 포지션인데,
연속된 두개의 봉의 합가격 30틱위로 올라가면 바로 청산하고,
바로 매수로 진입하게끔 부탁드립니다.
현재 포지션이 매수 포지션인데 30틱위로 올라가는 것도, 추가 진입 수식 부탁드립니다.
현재 포지션이 없어도 30틱이상의 봉이 발생하면 추격매매 진입 부탁드립니다.
감사합니다.
답변 1
예스스탁 예스스탁 답변
2017-01-23 11:34:38
안녕하세요
예스스탁입니다.
input : P(14),BBP(20),dv(2),MAP(60);
input : short(12),long(26),sig(9);
var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0);
var : MACDV(0),MACDS(0),Bcond(false),Scond(False),diff(0),cnt(0),count(0);
ADXV = ADX(P);
DP = Diplus(P);
DM = DiMinus(P);
BBup = BollBandUp(BBP,dv);
BBdn = BollBandDown(BBP,dv);
mav = ma(C,MAP);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
diff = C-O;
Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4);
Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4);
count = 0;
for cnt = 1 to 3{
if (IsExitName("bb",cnt) == true or IsExitName("ss",cnt) == true) and IsExitName("StopProfitTarget",cnt) Then
count = count+1;
}
if CrossUp(BBdn,mav) and bcond == true Then{
if MACDV > MACDS Then
buy("b1");
if MACDV < MACDS Then
sell("s1");
}
if CrossDown(BBup,mav) and scond == true Then{
if MACDV > MACDS Then
buy("b2");
if MACDV < MACDS Then
sell("s2");
}
if MarketPosition == 0 Then{
if MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and H > BBup Then{
buy("bb",AtStop,C+PriceScale);
}
if MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and L < BBdn Then{
sell("ss",AtStop,C-PriceScale);
}
}
if MarketPosition == 1 then{
if IsEntryName("bb") == true and CrossDown(MACDv,MACDs) Then
exitlong("bx1");
if IsEntryName("bb") == true and count == 3 and countif(H<BBup,3) == 3 Then
ExitLong("bx2");
}
if MarketPosition == -1 then{
if IsEntryName("ss") == true and CrossUp(MACDv,MACDs) Then
ExitShort("sx1");
if IsEntryName("ss") == true and count == 3 and countif(L>BBup,3) == 3 Then
ExitShort("sx2");
}
if MarketPosition <= 0 and diff+diff[1] >= PriceScale*30 Then
buy();
if MarketPosition >= 0 and diff+diff[1] <= -PriceScale*30 Then
sell();.
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식문의
> 안녕하세요
추가문의 사항이 있어서 메일드립니다.
죄송하지만 하기 확인 부탁드립니다.
input : P(14),BBP(20),dv(2),MAP(60);
input : short(12),long(26),sig(9);
var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0);
var : MACDV(0),MACDS(0),Bcond(false),Scond(False);;
ADXV = ADX(P);
DP = Diplus(P);
DM = DiMinus(P);
BBup = BollBandUp(BBP,dv);
BBdn = BollBandDown(BBP,dv);
mav = ma(C,MAP);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4);
Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4);
if CrossUp(BBdn,mav) and countif(crossdown(BBdn,mav),5) < 1 and DP < 40 and bcond == true Then
buy("b1");
if CrossDown(BBup,mav) and countif(CrossUp(BBup,mav),5) < 1 and DM <40 and scond == true Then
sell("s1");
if MarketPosition == 0 Then{
if MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and H > BBup Then{
buy("bb",AtStop,C+PriceScale);
}
if MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and L < BBdn Then{
sell("ss",AtStop,C-PriceScale);
}
}
1.
상기 수식 b1,s1은 볼린져 밴드가 60 이평을 둟을때 적용되는 수식입니다.
하기와 같이 수정을 했으면 합니다
볼린져 밴드 상단밴드가 60 이평을 위에서 아래로 crossdown 할 때,
macd 가 macd signal보다 위에 있으면 매수,
macd 가 macd signal보다 아래 있으면 매도로 수식 변경 요청 드립니다.
마찬가지로 볼린져 밴드 하단밴드가 60 이평을 아래서 위로 crossup 할 때,
macd가 macd signal보다 위에 있으면 매수,
macd가 macd signal보다 아래 있으면 매도로 수식 변경 요청 드립니다.
2.
진입신호 bb와 ss의 청산 수식을 추가하고 싶습니다.
bb진입 후, macd가 macd signal보다 아래로 내려가면 청산
ss진입 후, macd가 macd signal보다 위로 올라가면 청산 하는 수식 구현 부탁드립니다.
bb나 ss진입후 연속 3번이상 익절을 내고,
4번째 진입한 bb, ss의 상태가 볼린져 밴드를 상단 혹은 하단을 닿지않는 봉이 3개이상
발생하면,
해당봉에서 청산하는 수식도 같이 부탁드립니다.
3.
연속된 두 봉의 합이 30틱을 넘으면 바로 추격매매 들어가는 수식 부탁드립니다.
가격이 갑자기 올라가든 내려가든, 두 봉의 합이 30틱을 넘어서면
30틱의 가격이 올라가는 봉이면 매수로, 30틱의 가격이 내려가는 봉이면 매도로
수식 부탁드립니다.
상기 수식은 어떠한 수식에 걸려 있더라도 작동 되게 부탁드립니다.
예를 들어 현재 매도 포지션인데,
연속된 두개의 봉의 합가격 30틱위로 올라가면 바로 청산하고,
바로 매수로 진입하게끔 부탁드립니다.
현재 포지션이 매수 포지션인데 30틱위로 올라가는 것도, 추가 진입 수식 부탁드립니다.
현재 포지션이 없어도 30틱이상의 봉이 발생하면 추격매매 진입 부탁드립니다.
감사합니다.
다음글
이전글