답변완료
국내주식 수식에 기능 추가 부탁드림니다.
전에 알려주신 수식에 다음 기능을 추가로 반영하고 싶습니다.
현재 매수 청산수식은 MFI 또는 RSI 값이 조건에 의해 일괄 청산하는 수식인데요...
활용하다가 보니 다음 기능을 부여하고 싶습니다.
1. 누적 매수금액이 0원 ~ 500만원 사이일때
1번 조건 : ( MFI(14)> 70 or RSI(14)> 76 )
2번 조건 : 매수 평균가 보다 1.15% 이상시
1.2 번의 교집합일때 청산하는 수식을 추가
2. 누적 매수금액이 500만원 ~ 1000만원 사이일때
1번 조건 : ( MFI(14)> 70 or RSI(14)> 76 )
2번 조건 : 매수 평균가 보다 1.1% 이상시
1.2 번의 교집합일때 청산하는 수식을 추가
3. 누적 매수금액이 1000만원 ~ 1500만원 사이일때
1번 조건 : ( MFI(14)> 70 or RSI(14)> 76 )
2번 조건 : 매수 평균가 보다 1.05% 이상시
1.2 번의 교집합일때 청산하는 수식을 추가
지금 쓰고 있는 수식입니다.
---------------------------------------------------------------
국내 주식 10분봉 셋팅
input : 최대투자금액(1500);
input : MFIPeriod(14);
input : MFI값1(20);
input : MFI값2(30);
input : MFI값3(40);
input : MFI진입금액1(10);
input : MFI진입금액2(20);
input : MFI진입금액3(30);
Input : RSIPeriod(14);
Input : RSI값1(20);
Input : RSI값2(30);
Input : RSI값3(40);
input : RSI진입금액1(10);
input : RSI진입금액2(20);
input : RSI진입금액3(30);
Input : MFI값4(70);
Input : RSI값4(76);
var : cnt(0),sum1(0),sum2(0),MFIv(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),Xcnt(0);
Array : C1[100](0);
sum1 = 0;
sum2 = 0;
for cnt = 0 to MFIPeriod-1{
if (dayhigh(cnt)+daylow(cnt)+DayClose(cnt)) > (dayhigh(cnt+1)+daylow(cnt+1)+DayClose(cnt+1)) Then
sum1 = sum1 + DayVolume(cnt)*(dayhigh(cnt)+daylow(cnt)+DayClose(cnt))/3;
Else
sum1 = sum1+0;
if (dayhigh(cnt)+daylow(cnt)+DayClose(cnt)) < (dayhigh(cnt+1)+daylow(cnt+1)+DayClose(cnt+1)) Then
sum2 = sum2 + DayVolume(cnt)*(dayhigh(cnt)+daylow(cnt)+DayClose(cnt))/3;
Else
sum2 = sum2+0;
}
MFIv = 100 - 100 / (1 + (sum1 / sum2));
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == RSIPeriod+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSIPeriod - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
}
If idx > RSIPeriod+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (preDownAvg * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if MarketPosition == 0 or (MarketPosition == 1 and AvgEntryPrice*CurrentContracts < 최대투자금액*10000 ) Then
{
if (NextBarSdate != sdate[1] and NextBarStime >= 151000) or
(NextBarSdate == sdate[1] and NextBarStime >= 151000 and stime < 151000) Then
{
value1 = 0;
if MFIv < MFI값1 Then
value1 = value1+MFI진입금액1*10000;
if MFIv < MFI값2 Then
value1 = value1+MFI진입금액2*10000;
if MFIv < MFI값3 Then
value1 = value1+MFI진입금액3*10000;
if RSIv < RSI값1 Then
value1 = value1+RSI진입금액1*10000;
if RSIv < RSI값2 Then
value1 = value1+RSI진입금액2*10000;
if RSIv < RSI값3 Then
value1 = value1+RSI진입금액3*10000;
if value1 > 0 and (MarketPosition == 0 or (MarketPosition == 1 and Xcnt == 0)) Then
Buy("b",AtMarket,DEF,Floor(value1/NextBarOpen));
}
}
if MarketPosition == 1 Then
{
if MFIv > MFI값4 or RSIv > RSI값4 Then
ExitLong("bx2",AtMarket);
}
Else
Xcnt = 0;
2020-12-03
587
글번호 144387
시스템
답변완료
일정비율 상승후 하락하면 매수
안녕하세요 고민고민하다 제 능력으론 아직 부족해 이렇게 염치없이 도움요청드립니다.
미국 나스닥 15분봉 기준
08시에 장 시작후 일정비율 이상올라가면 매수조건 A충족
매수조건 A가 된 상태에서 지수가 일정비율로 떨어지면 매수.
청산은 샹들리에 청산법
혹시 가능할까요 ㅠㅠ
예를들어 나스닥 08시 장 시작후 다음날 07시가 될때까지 그 동안 1% 상승 하면
매수할 준비를 하고 1%에서 0.5% 하락하면 매수 하는식으로 부탁드립니다.
Condition1 = highest(H,기간) > dayopen * (1+(X/100));
if Condition1 == true and Close < Highest(h,기간)*((100-Y)/100) Then Buy();
if MarketPosition == 1 Then ExitLong("EL",AtStop,highest(H,BarsSinceEntry)-ATRV*n);
만약 영업일이 바뀌어도 (한국시간기준 썸머타임 미적용 07 -> 08시) 청산이 되지않을경우 그대로 포지션 유지.
X는 상승비율 Y는 하락비율
제가 만들어본건 여기까지 인데 제 한계인가봅니다
이 수식에서 미국장 영업기간을 어떻게 할 지도 모르겠고 허접한 수식이지만 도움 부탁드립니다.
감사하고 행복한 하루 되십시요!
2020-12-03
639
글번호 144379
시스템