답변완료
수식수정요청2
RSI매수매도 식입니다.
매수는 그대로 하되, 매도식을
RSI 55이상이고, 이평선이 정배열일때 (5일>25일>100일), 매도 파라볼릭sar이 생기자 마자 전체 매도 하는식으로 바꾸고 싶습니다. 매도후 다시 처음부터 매수 시작하구요.
Input : 투자금액(10000000),Period(14), N(1), LPercent(30), S7Percent(70), S8Percent(80), S9Percent(90),시작일(20210410),시작시간(073000);
var : value(0), e(0),x(0),count(0),Vma(0), Tcond(false);
var : HH(0),Bxcond1(false),Bxcond2(false),Bxcond3(false);
var : LL(0),Sxcond1(false),Sxcond2(false),Sxcond3(false);
Array : VV[5](0),XX[5](0);
value = RSI(Period);
vv[0] = floor((투자금액*0.12)/NextBarOpen);
vv[1] = floor((투자금액*0.15)/NextBarOpen);
vv[2] = floor((투자금액*0.20)/NextBarOpen);
vv[3] = floor((투자금액*0.23)/NextBarOpen);
vv[4] = floor((투자금액*0.30)/NextBarOpen);
if NextBarSdate >= 시작일 and NextBarStime >= 시작시간 Then
Tcond = true;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
if sdate >= 시작일 and stime >= 시작시간 Then
Tcond = true;
if Tcond == true then
{
#첫번째 매수
if (TotalTrades == 0 or MarketPosition == 0) then
{
if MarketPosition <= 0 and CrossDown(value, LPercent) Then
{
buy("b1",onclose,def,vv[MaxEntries]);
}
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
e = e +1;
if e == 0 then
XX[e] = CurrentContracts;
Else
XX[e] = CurrentContracts-CurrentContracts[1];
}
#두번째 매수
If MarketPosition == 1 and e == 1 and CrossDown(value, LPercent) and NextBarSdate == sdate Then
{
buy("b2",atlimit,LatestEntryPrice(0)*0.98,vv[MaxEntries]);
}
#세번재매수
If MarketPosition == 1 and e == 2 and CrossDown(value, LPercent) and NextBarSdate == sdate Then
{
buy("b3",atlimit,LatestEntryPrice(0)*0.98,vv[MaxEntries]);
}
#네번재매수
If MarketPosition == 1 and e == 3 and CrossDown(value, LPercent) and NextBarSdate == sdate Then
{
buy("b4",atlimit,LatestEntryPrice(0)*0.99,vv[MaxEntries]);
}
#다섯번재매수
If MarketPosition == 1 and e == 4 and CrossDown(value, LPercent) and NextBarSdate == sdate Then
{
buy("b5",atlimit,LatestEntryPrice(0)*0.99,vv[MaxEntries]);
}
if condition1 == false and crossup(value,S7Percent) then
{
condition1 = true;
exitlong("bx1",onclose,def,"",floor(maxcontracts*0.7),1);
}
if condition2 == true and crossup(value,S8Percent) then
{
condition2 = true;
exitlong("bx2",onclose,def,"",floor(maxcontracts*0.2),1);
}
if condition3 == true and crossup(value,S9Percent) then
{
condition3 = true;
exitlong("bx3");
}
if crossdown(value,S7Percent) then
exitlong("bx");
}
else
{
e = 0;
condition1 = false;
condition2 = false;
condition3 = false;
condition4 = false;
}
}
2021-04-10
920
글번호 147874
시스템
답변완료
수식수정요청
총 투자금에서 투자금액 비율을 0.1, 0.1, 0.2, 0.2, 0.4 로 총 5번으로 하고 싶은데
지금식과 같이 범위별로 지정하지 않고
하나씩 나눠서 각각 지정하고 싶습니다.
또한 buy도 각각 나눠서 지정하고 첫번째 매수는 그대로 진행하고
이전가격보다 떨어진 가격에 사는 식
두번째 매수는 LatestEntryPrice(0)*0.98,
세번째 매수는 LatestEntryPrice(0)*0.98,
네번째 매수는 LatestEntryPrice(0)*0.99
다섯번째 매수는 LatestEntryPrice(0)*0.99 로 각각 지정하고 싶습니다.
원래대로 청산신호가 나오면 이전에 두번이나 세번 매수만 나왓어도 다시 첫번째 매수로
돌아가도록 했으면 좋겠구요.
마지막으로 매수 파라볼릭sar이 생기면 매도 파라볼릭sar이 생기기 전까지 딱 한번만 매수 되도록 하고 싶습니다. Bentry로 하는거 같아서 수식에 적용해 보긴 했는데 제대로 안되는거 같기도 하고..
Input : 투자금액(10000000),RSIP(14), P1(5), P2(25), P3(100), 시작일(20210407),시작시간(073000);
var : value(0),e(0),x(0),count(0),Vma(0), Tcond(false);
var : Rsiv(0),vv(0), BEntry(false), mav1(0);
var1 = ma(C,p1);
var2 = ma(C,p2);
var3 = ma(C,p3);
var4 = sar(0.02,0.2);
mav1 = ma(C,30);
Rsiv = RSI(RSIP);
if NextBarSdate >= 시작일 and NextBarStime >= 시작시간 Then
Tcond = true;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
if sdate >= 시작일 and stime >= 시작시간 Then
Tcond = true;
if Tcond == true then
{
if crossup(c,var4) Then
BEntry = true;
if MarketPosition >= 0 and BEntry == true and var1 > var2 and Rsiv < 60 and C > var4 Then
{ if MarketPosition == 1 Then
Bentry = false;
if MarketPosition == 0 or (MarketPosition == 1 and MaxEntries < 3) Then
vv = Floor((투자금액*0.1)/C);
if MarketPosition == 1 and MaxEntries >= 3 and MaxEntries <= 4 Then
vv = Floor((투자금액*0.15)/C);
if MarketPosition == 1 and MaxEntries >= 5 and MaxEntries <= 6 Then
vv = Floor((투자금액*0.20)/C);
buy("b",atlimit,LatestEntryPrice(0)*0.98,VV);
}
if MarketPosition == 1 and Rsiv > 55 and var1 > var2 and var2 > var3 and C < var4 Then
exitlong("s");
}
2021-04-10
891
글번호 147873
시스템
답변완료
수식 수정 부탁드립니다.
저는 국내선물 데이트레이딩(오버나이트를 하지 않음)을 하고자 하는데요,
지난번에 아래와 같이 수식 만들어주셨었습니다.
지난번 수식을 적용해보니,
기준시각 근처의 마지막 신호가 매수진입 또는 매도진입인 경우 당일 청산신호가 발생될때까지 포지션을 갖고가는 문제가 있었습니다.
기준시각의 승률, 손익비가 기준에 미달하는 경우 마지막 신호가 매수청산 또는 매도청산으로 끝나서 기준시각 전에 당일 포지션을 청산할 수 있도록 하는 수식을 부탁드립니다.
항상 감사드립니다.
-------------------------------------------------------------------
안녕하세요
예스스탁입니다.
1
input : 기준시각(100000),승률(45);
var : Wcount(0),Count(0),Trade(False);
if Bdate != Bdate[1] Then
{
WCount = 0;
Count = 0;
Trade = true;
}
if TotalTrades > TotalTrades[1] Then
{
count = count+1;
if PositionProfit(1) > 0 Then
{
WCount = WCount + 1;
}
}
if (sDate != sDate[1] and sTime >= 기준시각) or
(sDate == sDate[1] and sTime >= 기준시각 and sTime[1] < 기준시각) Then
{
if WCount/Count*100 < 승률 Then
Trade = False;
}
if Trade == true Then
{
진입청산수식
}
2
input : 기준시각(100000),손익비(1.5);
var : WP(0),Wcount(0),LP(0),LCount(0),Trade(False);
if Bdate != Bdate[1] Then
{
WP = 0;
WCount = 0;
LP = 0;
LCount = 0;
Trade = true;
}
if TotalTrades > TotalTrades[1] Then
{
if PositionProfit(1) > 0 Then
{
WP = WP + PositionProfit(1);
WCount = WCount+1;
}
if PositionProfit(1) < 0 Then
{
LP = LP + abs(PositionProfit(1));
LCount = LCount+1;
}
}
if (sDate != sDate[1] and sTime >= 기준시각) or
(sDate == sDate[1] and sTime >= 기준시각 and sTime[1] < 기준시각) Then
{
if (WP/WCount)/(LP/LCount) < 손익비 Then
Trade = False;
}
if Trade == true Then
{
진입청산수식
}
3
input : 기준시각(100000),승률(45),손익비(1.5);
var : WP(0),Wcount(0),LP(0),LCount(0),Count(0),Trade(False);
if Bdate != Bdate[1] Then
{
WP = 0;
WCount = 0;
LP = 0;
LCount = 0;
Count = 0;
Trade = true;
}
if TotalTrades > TotalTrades[1] Then
{
count = count+1;
if PositionProfit(1) > 0 Then
{
WP = WP + PositionProfit(1);
WCount = WCount+1;
}
if PositionProfit(1) < 0 Then
{
LP = LP + abs(PositionProfit(1));
LCount = LCount+1;
}
}
if (sDate != sDate[1] and sTime >= 기준시각) or
(sDate == sDate[1] and sTime >= 기준시각 and sTime[1] < 기준시각) Then
{
if WCount/Count*100 < 승률 Then
Trade = False;
if (WP/WCount)/(LP/LCount) < 손익비 Then
Trade = False;
}
if Trade == true Then
{
진입청산수식
}
즐거운 하루되세요
> 트레이더365 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다.
> 국내선물 거래하려고 하는데요.
1. 당일 오전 10시까지 승률이 45% 미만이면 당일 거래를 종료하고, 45% 이상이면 기존 수식대로 거래를 하도록 하는 수식을 부탁드립니다.
2. 당일 오전 10시까지 거래의 손익비가 1.5 미만이면 당일 거래를 종료하고, 1.5이상이면 기존 수식대로 거래를 하도록 하는 수식을 부탁드립니다.
3. 오전 10시까지 승률이 45% 미만 또는 손익비가 1.5 미만이면 당일거래를 종료하고, 그렇지 않으면 기존 수식대로 거래를 하도록 하는 수식을 부탁드립니다.
기준시각, 승률, 손익비는 외부변수로 처리 부탁드립니다.
항상 감사드립니다.
2021-04-10
1029
글번호 147872
시스템
답변완료
수정 의뢰 드립니다!
안녕하세요!
아래식을 지수이평을 이용한 엔벨로프로 변경해서 만들고 싶어서 도움을 부탁드립니다!
그리고 EnvelopeDown선 밖으로 봉이 나갔다가 다시 선을 위로 돌파하면 매수신호,
nvelopeUp선 밖으로 났갔다가 다시 선을 아래로 돌파하면 매도신호가 나오도록
수정 부탁 드립니다!
감사합니다!
Input : Period(20), Percent(2);
var : center(0),UPline(0),DNline(0);
center = ma(C, Period);
UPline = EnvelopeUp(Period, Percent);
Dnline = EnvelopeDown(Period, Percent);
Plot1(center, "중앙선");
Plot2(UPline, "EnvelopeUp");
Plot3(Dnline, "EnvelopeDown");
2021-04-09
1042
글번호 147867
지표