예스스탁
예스스탁 답변
2020-11-16 14:30:18
안녕하세요
예스스탁입니다.
1번 10%수익청산을 어떤 방법으로 분할 청산하고자 하시는지 알수 없습니다.
기존 2번에 수익률 달성조건을 추가해 드립니다.
input : 시작일(19000101);
input : 일봉RSI기간(30);
input : 일봉RSI값1(52),일봉RSI값2(36),일봉RSI값3(30);
input : 최대투자금액(1500);
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 : 분할매도횟수(25);
input : 분할매도퍼센트(10);
input: 청산수익률(1.09);
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));
}
}
}
}
if MarketPosition == 1 Then
{
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 or h >= AvgEntryPrice*청산수익률 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) 전체 진입 매수 평균가에 10% 수익시 일괄 청산
2) 기타 보조지수 를 충족시 분할 청산
거기에서
2번의 경우는 분할매도로 청산되는데
1번의 조건을 만족시에도 분할 매도 되게 수식 부탁드림니다.~~
input : 시작일(19000101);
input : 일봉RSI기간(30);
input : 일봉RSI값1(52),일봉RSI값2(36),일봉RSI값3(30);
input : 최대투자금액(1500);
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 : 분할매도횟수(25);
input : 분할매도퍼센트(10);
input: 청산수익률(1.09);
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));
}
}
}
}
if MarketPosition == 1 Then
{
ExitLong("bx",AtLimit,AvgEntryPrice*청산수익률);
}
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;