커뮤니티
스토캐스틱 매매 수식 수정 부탁드립니다.
2018-10-01 07:10:34
196
글번호 122298
1번 수식.
아래의 수식에서 당일청산 규정을 삭제하여 오버나잇 할수 있도록 수정 부탁드립니다.
그리고 시그널이 최초발생하는 시작일(날짜20180901와 시간090000)과 모든 시그널을 청산하는 종료일(날짜20180930와 시간153000) 삽입 부탁드려요 ~~~
2번 수식.
1번 수식(당일청산 수식 삭제, 시작일 종료일 삽입)에 추가로
매수진입조건(4가지 경우의 수 모두 수렴)
= MACD 기준선 상향돌파 + 스토캐스틱 골든크로스
= MACD 기준선 상향돌파 + 스토캐스틱 정배열
= MACD 기준선 위 + 스토캐스틱 골든크로스
= MACD 기준선 위 + 스토캐스틱 정배열
매도진입조건(4가지 경우의 수 모두 수렴)
= MACD 기준선 하향이탈 + 스토캐스틱 데드크로스
= MACD 기준선 하향이탈 + 스토캐스틱 역배열
= MACD 기준선 아래 + 스토캐스틱 데드크로스
= MACD 기준선 아래 + 스토캐스틱 역배열
스위칭 조건은 동일합니다.
- 아 래 -
Input : 당일누적수익틱수(20),당일누적손실틱수(20),P(120);
input : starttime(090000),endtime(153000);
input : sto1(20),sto2(12),sto3(12);
VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0);
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Xcond = false;
N1 = NetProfit;
Tcond = true;
}
당일누적수익 = PriceScale*당일누적수익틱수;
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
if Tcond == true and Xcond == false then
{
if crossup(stok,stod) Then
buy();
if CrossDown(stok,stod) Then
sell();
}
if MarketPosition == 1 then{
ExitLong("dbp",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsp",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
답변 1
예스스탁 예스스탁 답변
2018-10-01 10:49:25
안녕하세요
예스스탁입니다.
날짜는 영업일에 맞게 정확히 지정해 주셔야 합니다.
1.
Input : 당일누적수익틱수(20),당일누적손실틱수(20),P(120);
input : startdate(20180903),starttime(090000),enddate(20180928),endtime(153000);
input : sto1(20),sto2(12),sto3(12);
VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0);
if (sdate == enddate and sdate != sdate[1] and stime >= endtime) or
(sdate == enddate and sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if (sdate == startdate and sdate != sdate[1] and stime >= starttime) or
(sdate == startdate and sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Xcond = false;
N1 = NetProfit;
Tcond = true;
}
당일누적수익 = PriceScale*당일누적수익틱수;
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
if Tcond == true and Xcond == false then
{
if crossup(stok,stod) Then
buy();
if CrossDown(stok,stod) Then
sell();
}
if MarketPosition == 1 then{
ExitLong("dbp",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsp",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
2
Input : 당일누적수익틱수(20),당일누적손실틱수(20),P(120);
input : startdate(20180903),starttime(090000),enddate(20180928),endtime(153000);
input : sto1(20),sto2(12),sto3(12),short(12),long(26);
VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0);
var : MACDV(0);
if (sdate == enddate and sdate != sdate[1] and stime >= endtime) or
(sdate == enddate and sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if (sdate == startdate and sdate != sdate[1] and stime >= starttime) or
(sdate == startdate and sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Xcond = false;
N1 = NetProfit;
Tcond = true;
}
당일누적수익 = PriceScale*당일누적수익틱수;
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
MACDv = MACD(short,long);
Condition1 = stok > stod and MACDv > 0;
Condition2 = stok < stod and MACDv < 0;
if Tcond == true and Xcond == false then
{
if Condition1 == true and Condition1[1] == false Then
buy();
if Condition2 == true and Condition2[1] == false Then
sell();
}
if MarketPosition == 1 then{
ExitLong("dbp",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsp",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
즐거운 하루되세요
> 승부사1 님이 쓴 글입니다.
> 제목 : 스토캐스틱 매매 수식 수정 부탁드립니다.
> 1번 수식.
아래의 수식에서 당일청산 규정을 삭제하여 오버나잇 할수 있도록 수정 부탁드립니다.
그리고 시그널이 최초발생하는 시작일(날짜20180901와 시간090000)과 모든 시그널을 청산하는 종료일(날짜20180930와 시간153000) 삽입 부탁드려요 ~~~
2번 수식.
1번 수식(당일청산 수식 삭제, 시작일 종료일 삽입)에 추가로
매수진입조건(4가지 경우의 수 모두 수렴)
= MACD 기준선 상향돌파 + 스토캐스틱 골든크로스
= MACD 기준선 상향돌파 + 스토캐스틱 정배열
= MACD 기준선 위 + 스토캐스틱 골든크로스
= MACD 기준선 위 + 스토캐스틱 정배열
매도진입조건(4가지 경우의 수 모두 수렴)
= MACD 기준선 하향이탈 + 스토캐스틱 데드크로스
= MACD 기준선 하향이탈 + 스토캐스틱 역배열
= MACD 기준선 아래 + 스토캐스틱 데드크로스
= MACD 기준선 아래 + 스토캐스틱 역배열
스위칭 조건은 동일합니다.
- 아 래 -
Input : 당일누적수익틱수(20),당일누적손실틱수(20),P(120);
input : starttime(090000),endtime(153000);
input : sto1(20),sto2(12),sto3(12);
VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0);
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Xcond = false;
N1 = NetProfit;
Tcond = true;
}
당일누적수익 = PriceScale*당일누적수익틱수;
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
if Tcond == true and Xcond == false then
{
if crossup(stok,stod) Then
buy();
if CrossDown(stok,stod) Then
sell();
}
if MarketPosition == 1 then{
ExitLong("dbp",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("dsp",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
다음글
이전글