예스스탁
예스스탁 답변
2019-12-23 11:10:57
안녕하세요
예스스탁입니다.
아래시 참고하시기 바랍니다.
매수시간이 되면 Xcond는 false로 초기화되고
이후 1차매수손절이 되면 true가 됩니다.
1차매수는 Xcond가 false일때
2차매수는 Xcond가 true일때 진입하게 하시면 됩니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
var : Xcond(false);
if (sdate != sdate[1] and stime >= 매수시간) or
(sdate == sdate[1] and stime >= 매수시간 and stime[1] < 매수시간) then
{
Xcond = false;
}
if TotalTrades > TotalTrades[1] and IsExitName("1차매수손절",1) == true Then
Xcond = true;
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and Xcond == false
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and Xcond == true
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식변경 부탁드립니다
> 항상도움을 주셔서 감사를 드립니다.^^
해외선물거래(은)를 하고 있는데 아래의 수식에서 2차매수를 할려고 합니다.
즉 당일 1차매수를 하고 1차매수 손절이 발생하면 그다음 부터는 1차매수는 안하고,
즉 5일이평통과매수 조건이 발생해도 매수를 안하고, 2차매수가 실행되도록
하고 싶습니다.(2차매수 = 10일이평선 통과)
제가 아무리해봐도 될 것 같으면서도 한계가 있습니다.
제가 수식을 작성했을 때 문제는....
1차매수 -> 1차매수 손절이 발생하고 나서 2차매수까지 연결은 시킬 수 있는데.....
문제는 당일 '1차매수 손절'이 발생하고 2차매수가 발생하지 않고 마감하였을경우
다음날 첫번째 매수(9시이후)가 무조건 2차매수로 시작한다는 것입니다.
수식의 변경이 필요했던 부분은 2차매수는 1차매수가 일어난 당일에만 발생해야 하고,
만약 2차매수가 발생하지 않고, '매수청산','1차매수 손절',로 끝나면
다음날 부터는 다시 1차매수부터(9시이후) 시작하는 것입니다.
즉 1차매수 -> 1차매수 손절 -> 2차매수 라는 연결고리를 만들었더니,
당일 '1차매수 손절'로 끝난경우 다음날 첫번재 매수가 2차매수부터 시작되는 문제점이
발생하였습니다.
아래는 2차매수 연결을 안시킨 기본식입니다. 여기에서 수식변경을 부탁드립니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);
시스템에 적용에 보니 다음과 관은 문제점이 있습니다.
1차매수 -> 1차분손절 -> 2차매수 -> 매수청산 되었는데,
다음에 다시 2차매수가 발생합니다. 일단 1차매수건 2차매수건 '매수청산'이 발생되면
1차매수부터 시작해야 되는데요....(물론 같은날 발생된 사건입니다)
부탁드립니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식변경 부탁드립니다
> 안녕하세요
예스스탁입니다.
아래시 참고하시기 바랍니다.
매수시간이 되면 Xcond는 false로 초기화되고
이후 1차매수손절이 되면 true가 됩니다.
1차매수는 Xcond가 false일때
2차매수는 Xcond가 true일때 진입하게 하시면 됩니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
var : Xcond(false);
if (sdate != sdate[1] and stime >= 매수시간) or
(sdate == sdate[1] and stime >= 매수시간 and stime[1] < 매수시간) then
{
Xcond = false;
}
if TotalTrades > TotalTrades[1] and IsExitName("1차매수손절",1) == true Then
Xcond = true;
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and Xcond == false
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and Xcond == true
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식변경 부탁드립니다
> 항상도움을 주셔서 감사를 드립니다.^^
해외선물거래(은)를 하고 있는데 아래의 수식에서 2차매수를 할려고 합니다.
즉 당일 1차매수를 하고 1차매수 손절이 발생하면 그다음 부터는 1차매수는 안하고,
즉 5일이평통과매수 조건이 발생해도 매수를 안하고, 2차매수가 실행되도록
하고 싶습니다.(2차매수 = 10일이평선 통과)
제가 아무리해봐도 될 것 같으면서도 한계가 있습니다.
제가 수식을 작성했을 때 문제는....
1차매수 -> 1차매수 손절이 발생하고 나서 2차매수까지 연결은 시킬 수 있는데.....
문제는 당일 '1차매수 손절'이 발생하고 2차매수가 발생하지 않고 마감하였을경우
다음날 첫번째 매수(9시이후)가 무조건 2차매수로 시작한다는 것입니다.
수식의 변경이 필요했던 부분은 2차매수는 1차매수가 일어난 당일에만 발생해야 하고,
만약 2차매수가 발생하지 않고, '매수청산','1차매수 손절',로 끝나면
다음날 부터는 다시 1차매수부터(9시이후) 시작하는 것입니다.
즉 1차매수 -> 1차매수 손절 -> 2차매수 라는 연결고리를 만들었더니,
당일 '1차매수 손절'로 끝난경우 다음날 첫번재 매수가 2차매수부터 시작되는 문제점이
발생하였습니다.
아래는 2차매수 연결을 안시킨 기본식입니다. 여기에서 수식변경을 부탁드립니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);
예스스탁
예스스탁 답변
2019-12-23 15:53:29
안녕하세요
예스스탁입니다.
2차매수손절이 발생하면 Xcond를 false로 다시 변경하면 됩니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
var : Xcond(false);
if (sdate != sdate[1] and stime >= 매수시간) or
(sdate == sdate[1] and stime >= 매수시간 and stime[1] < 매수시간) then
{
Xcond = false;
}
if TotalTrades > TotalTrades[1] and IsExitName("1차매수손절",1) == true Then
Xcond = true;
if TotalTrades > TotalTrades[1] and IsExitName("2차매수손절",1) == true Then
Xcond = false;
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and Xcond == false
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and Xcond == true
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : Re : Re : 수식변경 부탁드립니다
> 시스템에 적용에 보니 다음과 관은 문제점이 있습니다.
1차매수 -> 1차분손절 -> 2차매수 -> 매수청산 되었는데,
다음에 다시 2차매수가 발생합니다. 일단 1차매수건 2차매수건 '매수청산'이 발생되면
1차매수부터 시작해야 되는데요....(물론 같은날 발생된 사건입니다)
부탁드립니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식변경 부탁드립니다
> 안녕하세요
예스스탁입니다.
아래시 참고하시기 바랍니다.
매수시간이 되면 Xcond는 false로 초기화되고
이후 1차매수손절이 되면 true가 됩니다.
1차매수는 Xcond가 false일때
2차매수는 Xcond가 true일때 진입하게 하시면 됩니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
var : Xcond(false);
if (sdate != sdate[1] and stime >= 매수시간) or
(sdate == sdate[1] and stime >= 매수시간 and stime[1] < 매수시간) then
{
Xcond = false;
}
if TotalTrades > TotalTrades[1] and IsExitName("1차매수손절",1) == true Then
Xcond = true;
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and Xcond == false
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and Xcond == true
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식변경 부탁드립니다
> 항상도움을 주셔서 감사를 드립니다.^^
해외선물거래(은)를 하고 있는데 아래의 수식에서 2차매수를 할려고 합니다.
즉 당일 1차매수를 하고 1차매수 손절이 발생하면 그다음 부터는 1차매수는 안하고,
즉 5일이평통과매수 조건이 발생해도 매수를 안하고, 2차매수가 실행되도록
하고 싶습니다.(2차매수 = 10일이평선 통과)
제가 아무리해봐도 될 것 같으면서도 한계가 있습니다.
제가 수식을 작성했을 때 문제는....
1차매수 -> 1차매수 손절이 발생하고 나서 2차매수까지 연결은 시킬 수 있는데.....
문제는 당일 '1차매수 손절'이 발생하고 2차매수가 발생하지 않고 마감하였을경우
다음날 첫번째 매수(9시이후)가 무조건 2차매수로 시작한다는 것입니다.
수식의 변경이 필요했던 부분은 2차매수는 1차매수가 일어난 당일에만 발생해야 하고,
만약 2차매수가 발생하지 않고, '매수청산','1차매수 손절',로 끝나면
다음날 부터는 다시 1차매수부터(9시이후) 시작하는 것입니다.
즉 1차매수 -> 1차매수 손절 -> 2차매수 라는 연결고리를 만들었더니,
당일 '1차매수 손절'로 끝난경우 다음날 첫번재 매수가 2차매수부터 시작되는 문제점이
발생하였습니다.
아래는 2차매수 연결을 안시킨 기본식입니다. 여기에서 수식변경을 부탁드립니다.
Input : P(20),dv(2),shortPeriod(5),longPeriod(10),진입수량(1),추가수량(1),최초분손절(0.10),추가분손절(0.15),상단밴드청산수준(0.015),
매수시간(090000),종료시간(220000);
var : BBup(0),BBMid(0),BBdn(0),MA1(0),MA2(0);
# 이동평균선
MA1 = ma(C, shortPeriod);
MA2 = ma(C, longPeriod);
#볼랜져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 1차매수진입
if MarketPosition == 0
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA1)
Then Buy("1차매수",OnClose,def,진입수량);
# 매수 청산
if MarketPosition == 1
Then ExitLong("매수청산", AtLimit, BBup-상단밴드청산수준);
# 1차매수 손절
if MarketPosition == 1 then
ExitLong("1차매수손절",AtStop,EntryPrice-최초분손절);
# 2차매수
if MarketPosition == 0
and sTime>매수시간 and sTime<종료시간
and CrossUp(C,MA2)
Then Buy("2차매수",OnClose,def,추가수량);
# 2차매수 손절
if MarketPosition == 1 then
ExitLong("2차매수손절",AtStop,EntryPrice-추가분손절);