커뮤니티
국내 주식 수식 보완좀 부탁드릴께요~~
2020-11-29 06:56:57
593
글번호 144153
국내주식입니다. (삼성전자)
문의:차트설정을 data1로 일봉으로 설정하면 되나요? 아니면 분봉으로 설정해야되나요?
아니면 같은 종목을 data1(10분봉) 과 data2(일봉) 로 구분해야할까요?
알려주시면 감사하겠습니다.
매수 조건 ( 누적 매수 )
* 오후 3시 10분에 아래조건에 해당하는 상황에 맞는 조건에 매수 진입
1. MFI(14) < 30 일때 10만원 진입
2. MFI(14) < 20 일때 20만원 진입
4. MFI(14) < 10 일때 30만원 진입
5. RSI(14) < 30 일때 10만원 진입
6. RSI(14) < 20 일때 20만원 진입
7. RSI(14) < 10 일때 30만원 진입
예를들어 오후 3시 10분에 MFI(14)< 15 이면서 RSI(14)< 25 이라면 20만원+10만원 총 30만원 매수 진행 입니다.
매수 청산 조건
* 오전 9시 10분에 아래조건에 해당하는 조건시 분할매도( 동일금액 25%씩 4일에 걸쳐 청산)
1. MFI(14) > 80 또는 RSI(14) > 70 일때
================================================================================
아래수식으로 잘 활용하고 있습니다.
그런데 개선점을 발견했습니다.
매도 조건 발생시 보유분의 일정분량만큼 분할매도로 청산하는 수식인데요...
분할매도되는 조건에서는 신규 매수가 않되게 수식 보정 부탁드리겠습니다
아래수식입니다.
==============================================================================
input : 시작일(19001107);
input : 일봉RSI기간(30);
input : 일봉RSI값1(52),일봉RSI값2(36),일봉RSI값3(30);
input : 최대투자금액(500);
input : 진입금액1(5);
input : 진입금액2(15);
input : 진입금액3(20);
input : 진입금액4(25);
input : 진입금액5(30);
input : 진입금액6(35);
input : 진입금액7(40);
input : 진입금액8(50);
input : 진입금액9(60);
input : 진입금액10(70);
input : 이차진입금액(100);
input : 삼차진입금액(200);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
input : 분할매도횟수(50);
input : 분할매도퍼센트(2);
input : 청산수익률(4);
var : mav(0,data2),MM(0,Data3),SS(0,Data3);
var : MMM(0,Data2),SSS(0,Data2),Xcnt(0,Data2),Xvol(0,data1);
MM = Data3(mfi(MFI기간));
SS = Data3(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
var : vol(0);
var : RSI2(0,Data2);
RSI2 = Data2(RSI(일봉RSI기간));
if Data1(sDate) >= 시작일 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and AvgEntryPrice*CurrentContracts < 최대투자금액*10000 ) Then
{
if data1(sTime == 93000 or sTime == 120000 ) Then # or sTime == 123000
{
if Data2(RSI2 > 일봉RSI값1) Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C >= AvgEntryPrice*0.98) Then
vol = Floor(진입금액1*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.98 and C >= AvgEntryPrice*0.96 Then
vol = Floor(진입금액2*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.96 and C >= AvgEntryPrice*0.94 Then
vol = Floor(진입금액3*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.94 and C >= AvgEntryPrice*0.92 Then
vol = Floor(진입금액4*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.92 and C >= AvgEntryPrice*0.90 Then
vol = Floor(진입금액5*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.90 and C >= AvgEntryPrice*0.88 Then
vol = Floor(진입금액6*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.88 and C >= AvgEntryPrice*0.86 Then
vol = Floor(진입금액7*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.86 and C >= AvgEntryPrice*0.84 Then
vol = Floor(진입금액8*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.84 and C >= AvgEntryPrice*0.82 Then
vol = Floor(진입금액9*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.82 and C >= AvgEntryPrice*0.80 Then
vol = Floor(진입금액10*10000/c);
Buy("불타기매매1",OnClose,DEf,vol);
}
if Data2(RSI2 < 일봉RSI값2 and RSI2 > 일봉RSI값3 ) Then
{
Buy("하락과도매매1",OnClose,DEf,Floor(이차진입금액*10000/c));
}
if Data2(RSI2 < 일봉RSI값3) Then
{
Buy("폭락과도매매1",OnClose,DEf,Floor(삼차진입금액*10000/c));
}
}
}
}
SetStopProfittarget(청산수익률,PercentStop);
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
{
xcnt = xcnt+1;
if Xcnt <= (분할매도횟수-1) Then
Xvol = Floor(MaxContracts*분할매도퍼센트/100);
else
Xvol = CurrentContracts;
if Xcnt <= 분할매도횟수 Then
exitlong("청산",atlimit,C,"",Xvol,2);
}
Else
xcnt = 0;
답변 1
예스스탁 예스스탁 답변
2020-11-24 14:09:58
안녕하세요
예스스탁입니다.
포지션 진행중 청산이 1회이상 발생하면
더이상 추가진입을 하지 못하게 수정해 드립니다.
input : 시작일(19001107);
input : 일봉RSI기간(30);
input : 일봉RSI값1(52),일봉RSI값2(36),일봉RSI값3(30);
input : 최대투자금액(500);
input : 진입금액1(5);
input : 진입금액2(15);
input : 진입금액3(20);
input : 진입금액4(25);
input : 진입금액5(30);
input : 진입금액6(35);
input : 진입금액7(40);
input : 진입금액8(50);
input : 진입금액9(60);
input : 진입금액10(70);
input : 이차진입금액(100);
input : 삼차진입금액(200);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
input : 분할매도횟수(50);
input : 분할매도퍼센트(2);
input : 청산수익률(4);
var : mav(0,data2),MM(0,Data3),SS(0,Data3);
var : MMM(0,Data2),SSS(0,Data2),Xcnt(0,Data2),Xvol(0,data1);
MM = Data3(mfi(MFI기간));
SS = Data3(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
var : vol(0);
var : RSI2(0,Data2);
RSI2 = Data2(RSI(일봉RSI기간));
if Data1(sDate) >= 시작일 Then
{
if MarketPosition == 0 or
(MarketPosition == 1 and AvgEntryPrice*CurrentContracts < 최대투자금액*10000 and
CountIf(CurrentContracts < CurrentContracts[1],BarsSinceEntry) == 0 ) Then
{
if data1(sTime == 93000 or sTime == 120000 ) Then # or sTime == 123000
{
if Data2(RSI2 > 일봉RSI값1) Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C >= AvgEntryPrice*0.98) Then
vol = Floor(진입금액1*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.98 and C >= AvgEntryPrice*0.96 Then
vol = Floor(진입금액2*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.96 and C >= AvgEntryPrice*0.94 Then
vol = Floor(진입금액3*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.94 and C >= AvgEntryPrice*0.92 Then
vol = Floor(진입금액4*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.92 and C >= AvgEntryPrice*0.90 Then
vol = Floor(진입금액5*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.90 and C >= AvgEntryPrice*0.88 Then
vol = Floor(진입금액6*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.88 and C >= AvgEntryPrice*0.86 Then
vol = Floor(진입금액7*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.86 and C >= AvgEntryPrice*0.84 Then
vol = Floor(진입금액8*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.84 and C >= AvgEntryPrice*0.82 Then
vol = Floor(진입금액9*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.82 and C >= AvgEntryPrice*0.80 Then
vol = Floor(진입금액10*10000/c);
Buy("불타기매매1",OnClose,DEf,vol);
}
if Data2(RSI2 < 일봉RSI값2 and RSI2 > 일봉RSI값3 ) Then
{
Buy("하락과도매매1",OnClose,DEf,Floor(이차진입금액*10000/c));
}
if Data2(RSI2 < 일봉RSI값3) Then
{
Buy("폭락과도매매1",OnClose,DEf,Floor(삼차진입금액*10000/c));
}
}
}
}
SetStopProfittarget(청산수익률,PercentStop);
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
{
xcnt = xcnt+1;
if Xcnt <= (분할매도횟수-1) Then
Xvol = Floor(MaxContracts*분할매도퍼센트/100);
else
Xvol = CurrentContracts;
if Xcnt <= 분할매도횟수 Then
exitlong("청산",atlimit,C,"",Xvol,2);
}
Else
xcnt = 0;
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 국내 주식 수식 보완좀 부탁드릴께요~~
> 아래수식으로 잘 활용하고 있습니다.
그런데 개선점을 발견했습니다.
매도 조건 발생시 보유분의 일정분량만큼 분할매도로 청산하는 수식인데요...
분할매도되는 조건에서는 신규 매수가 않되게 수식 보정 부탁드리겠습니다
아래수식입니다.
==============================================================================
input : 시작일(19001107);
input : 일봉RSI기간(30);
input : 일봉RSI값1(52),일봉RSI값2(36),일봉RSI값3(30);
input : 최대투자금액(500);
input : 진입금액1(5);
input : 진입금액2(15);
input : 진입금액3(20);
input : 진입금액4(25);
input : 진입금액5(30);
input : 진입금액6(35);
input : 진입금액7(40);
input : 진입금액8(50);
input : 진입금액9(60);
input : 진입금액10(70);
input : 이차진입금액(100);
input : 삼차진입금액(200);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
input : 분할매도횟수(50);
input : 분할매도퍼센트(2);
input : 청산수익률(4);
var : mav(0,data2),MM(0,Data3),SS(0,Data3);
var : MMM(0,Data2),SSS(0,Data2),Xcnt(0,Data2),Xvol(0,data1);
MM = Data3(mfi(MFI기간));
SS = Data3(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
var : vol(0);
var : RSI2(0,Data2);
RSI2 = Data2(RSI(일봉RSI기간));
if Data1(sDate) >= 시작일 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and AvgEntryPrice*CurrentContracts < 최대투자금액*10000 ) Then
{
if data1(sTime == 93000 or sTime == 120000 ) Then # or sTime == 123000
{
if Data2(RSI2 > 일봉RSI값1) Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C >= AvgEntryPrice*0.98) Then
vol = Floor(진입금액1*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.98 and C >= AvgEntryPrice*0.96 Then
vol = Floor(진입금액2*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.96 and C >= AvgEntryPrice*0.94 Then
vol = Floor(진입금액3*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.94 and C >= AvgEntryPrice*0.92 Then
vol = Floor(진입금액4*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.92 and C >= AvgEntryPrice*0.90 Then
vol = Floor(진입금액5*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.90 and C >= AvgEntryPrice*0.88 Then
vol = Floor(진입금액6*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.88 and C >= AvgEntryPrice*0.86 Then
vol = Floor(진입금액7*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.86 and C >= AvgEntryPrice*0.84 Then
vol = Floor(진입금액8*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.84 and C >= AvgEntryPrice*0.82 Then
vol = Floor(진입금액9*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.82 and C >= AvgEntryPrice*0.80 Then
vol = Floor(진입금액10*10000/c);
Buy("불타기매매1",OnClose,DEf,vol);
}
if Data2(RSI2 < 일봉RSI값2 and RSI2 > 일봉RSI값3 ) Then
{
Buy("하락과도매매1",OnClose,DEf,Floor(이차진입금액*10000/c));
}
if Data2(RSI2 < 일봉RSI값3) Then
{
Buy("폭락과도매매1",OnClose,DEf,Floor(삼차진입금액*10000/c));
}
}
}
}
SetStopProfittarget(청산수익률,PercentStop);
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
{
xcnt = xcnt+1;
if Xcnt <= (분할매도횟수-1) Then
Xvol = Floor(MaxContracts*분할매도퍼센트/100);
else
Xvol = CurrentContracts;
if Xcnt <= 분할매도횟수 Then
exitlong("청산",atlimit,C,"",Xvol,2);
}
Else
xcnt = 0;
다음글
이전글