예스스탁
예스스탁 답변
2021-05-24 10:06:06
안녕하세요
예스스탁입니다.
input: k변수 (0.7),손절선(10),TS수익률(30) ,TS감소율(20);
input : 총액(1000000000), 타겟변동성(2),가상화폐수(1) ;
input : 시작시간(000000),청산시각(120000);
input : shortPeriod(3), midPeriod(5), longPeriod(10), long2Period(20),Vperiod(12),n1(1),n2(12),노이즈Period(20), 횡보비(1);
var: 전일range(0),노이즈(0);
var :일일변동성(0),변동성(0),투입금액(0);
var : Short(0), 삼이평위(false), 오이평위(false), 십이평위(false),이십이평위(false),이평스코어(0);
var : Tcond(false),cnt(0);
var : sum1(0),sum2(0),sum3(0),sum4(0),sum5(0),sum6(0),sum7(0),sum8(0);
var : mav4(0),mav5(0),mav6(0),mav7(0),mav8(0);
Array : OO[50](0),HH[50](0),LL[50](0),CC[50](0),vv[50](0);
if (sdate != sdate[1] and stime >= 청산시각) or
(sdate == sdate[1] and stime >= 청산시각 and stime[1] < 청산시각) Then
{
Tcond = False;
if MarketPosition == 1 Then
exitlong("익일시가청산",AtMarket);
}
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then
{
Tcond = true;
OO[0] = O;
HH[0] = H;
LL[0] = L;
VV[0] = 0;
For cnt = 1 to 49
{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
VV[cnt] = VV[cnt-1][1];
}
}
if Tcond ==true Then
{
if HH[0] > 0 and H > HH[0] Then
HH[0] = H;
if LL[0] > 0 and L < LL[0] Then
Ll[0] = L;
CC[0] = C;
VV[0 ] = VV[0]+V;
if OO[max(shortperiod,midPeriod,longPeriod,long2Period,VPeriod+n1,VPeriod+n2,노이즈Period)] > 0 Then
{
sum1 = 0;
sum2 = 0;
For cnt = 0 to Vperiod-1
{
sum1 = sum1 + VV[cnt+n1];
sum2 = sum2 + VV[cnt+n2];
}
value1 = sum1/Vperiod;
Value2 = sum2/Vperiod;
value90 = CC[1];
value91 = CC[11];
일일변동성 = (HH[1]-LL[1])/OO[0]*100;
sum3 = 0;
For cnt = 0 to 4
{
sum3 = sum3 + (HH[cnt]-LL[cnt]);
}
변동성 = sum3/5;
투입금액= (타겟변동성*0.01/ 변동성)*총액/가상화폐수;
전일range= (HH[1]-LL[1])* k변수 ; //전일range 돌파(오전으로 수정할것)
노이즈 = 1-abs(OO[0]-CC[0])/(HH[0]-LL[0]); //노이즈 0.5 이하
sum4 = 0;
sum5 = 0;
sum6 = 0;
sum7 = 0;
For cnt = 0 to max(shortperiod,midPeriod,longPeriod,long2Period)
{
if cnt < shortPeriod Then
sum4 = sum4 + CC[cnt];
if cnt < midPeriod Then
sum5 = sum5 + CC[cnt];
if cnt < longPeriod Then
sum6 = sum6 + CC[cnt];
if cnt < long2Period Then
sum7 = sum7+ CC[cnt];
}
mav4 = sum4/shortPeriod;
mav5 = sum5/midPeriod;
mav6 = sum6/longPeriod;
mav7 = sum7/long2Period;
삼이평위 = (CC[1] - mav4 ) > 0 ;
오이평위 = (CC[1] - mav5 ) > 0 ;
십이평위 = (CC[1] - mav6) > 0 ;
이십이평위 = (CC[1] - mav7) > 0 ;
이평스코어= (iff(삼이평위,1,0)+iff(오이평위,1,0)+iff(십이평위,1,0)+iff(이십이평위,1,0))/ 4 ;
sum8 = 0;
For cnt = 0 to 노이즈Period-1
{
sum8 = sum8 + (1-abs(OO[cnt]-CC[cnt])/(HH[cnt]-LL[cnt]));
}
mav8 = sum8/노이즈Period;
#매수
If (OO[0] +(HH[1]-LL[1])*mav8) <= C && sdate != exitdate(1) //range( 변동성 돌파)
Then
buy("b",OnClose,def,Floor((투입금액*이평스코어)/c)); // 4점이며 100% 1점이면 25%
}
}
SetStopLoss(손절선 , PercentStop);
SetStopTrailing(TS감소율 ,TS수익률 ,PercentStop,0);
즐거운 하루되세요
> 하운드독 님이 쓴 글입니다.
> 제목 : 수식문의
> 24시간 가동되는 코인시스템에 아래와같은 시스템 수식을 작성하고자 하는데
day(00시~24시) 기준이 아닌, 오전(00시~12시) 기준
'이평선스코어','노이즈','변동성' 를 표현하고자 하는데, 어려움이 있습니다.
예스스탁에서 작성에 도움을 받고자 합니다.
로직:
1.매수: 실시간종가> 당일시가 +전일 오전range *20일 평균 노이즈
-이평선 스코어 [오전기준으로 수정요]***
3,5,10,20일 이평선위 에 있으면 각각 1점씩 ,총 4점 만점
-변동성:[오전기준으로 수정요]***
일일변동성 = (전일고가(1) -전일저가)/ 금일시가*100;
변동성 = ma(일일변동성,5);
-노이즈: [오전기준으로 수정요]***
노이즈 = 1-abs(dayopen-dayclose)/(dayhigh-daylow);
투자비중: 타겟변동성/전일 오전 변동성
매도 :정오
-----작성한 수식[수정요]----
input: k변수 (0.7),손절선(10),TS수익률(30) ,TS감소율(20);
var: 전일range(0),노이즈(0);
var :일일변동성(0),변동성(0),투입금액(0);
input: 총액(1000000000), 타겟변동성(2),가상화폐수(1) ;
input : shortPeriod(3), midPeriod(5), longPeriod(10), long2Period(20),횡보비(1),청산시각(120000);
var : Short(0), 삼이평위(false), 오이평위(false), 십이평위(false),이십이평위(false),이평스코어(0);
#전일 오전 변동성****오전기준으로 수정
if stime >= 230000 then
value1 = ma(volume,12)[1]; //전일23시봉의 거래량 12봉이평
value90 = Close[1];
if stime >= 230000 then
value2 = ma(volume,12)[12]; ////전일12시봉의 거래량 12봉이평
value91 = Close [11];
#변동성타켓 (오전으로 수정할것)
일일변동성 = (dayhigh(1) -daylow(1))/ dayopen*100;
변동성 = ma(일일변동성,5);
투입금액= (타겟변동성*0.01/ 변동성)*총액/가상화폐수;
전일range= (DayHigh(1)-DayLow(1))* k변수 ; //전일range 돌파(오전으로 수정할것)
노이즈 = 1-abs(dayopen-dayclose)/(dayhigh-daylow); //노이즈 0.5 이하
#이평선 모멘텀스코어 ****오전기준으로 수정
삼이평위 = ( dayclose(1) - ma(dayclose(1), shortPeriod) ) > 0 ;
오이평위 = ( dayclose(1)-ma(dayclose(1), midPeriod) ) > 0 ;
십이평위 = ( dayclose(1) - ma(dayclose(1), longPeriod) ) > 0 ;
이십이평위 = ( dayclose(1) - ma(dayclose(1), long2Period) ) > 0 ;
이평스코어= (iff(삼이평위,1,0)+iff(오이평위,1,0)+iff(십이평위,1,0)+iff(이십이평위,1,0))/ 4 ;
#매수
If (dayopen +전일range*ma(노이즈,20)) <= C && sdate != exitdate(1) //range( 변동성 돌파)
Then
buy("b",OnClose,def,Floor((투입금액*이평스코어)/c)); // 4점이며 100% 1점이면 25%
#매도
if stime == 청산시각 Then
exitlong("익일시가청산",AtMarket);
SetStopLoss(손절선 , PercentStop);
SetStopTrailing(TS감소율 ,TS수익률 ,PercentStop,0);