커뮤니티

국내 주식 수식 보완좀 부탁드릴께요~~

프로필 이미지
이형지
2020-11-29 06:56:57
554
글번호 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;