답변완료
수식작성
var : entry(0);
if bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition <= 0 and entry < 1 Then
buy("b",atlimit,dayhigh-PriceScale*100);
if MarketPosition == 1 Then
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*100);
if MarketPosition >= 0 and entry < 1 Then
sell("s",atlimit,daylow+PriceScale*100);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*100);
if sdate != sdate[1] Then
SetStopEndofday(55000);
if bdate != bdate[1] Then
SetStopEndofday(0);
---------------------------
input : StartTime1(070000),EndTime1(220000),진입횟수1(1);
input : StartTime2(220000),EndTime2(055000),진입횟수2(2);
input : Xtime(055000),당일수익틱수(150);
var : entry(0),Tcond1(false),Tcond2(False);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false);
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
Tcond1 = False;
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond1 = true;
entry = 0;
Xcond = false;
N1 = NetProfit;
}
if (sdate != sdate[1] and stime >= EndTime2) or
(sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then
Tcond2 = False;
if (sdate != sdate[1] and stime >= StartTime2) or
(sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then
{
Tcond2 = true;
entry = 0;
}
당일수익 = PriceScale*당일수익틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then
Xcond = true;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition <= 0 and Xcond == False and ((Tcond1 == true and entry < 진입횟수1) or (Tcond2 == true and entry < 진입횟수2)) Then
buy("b",atlimit,dayhigh-PriceScale*160);
if MarketPosition == 1 Then
{
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*100);
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
}
if MarketPosition >= 0 and Xcond == False and ((Tcond1 == true and entry < 진입횟수1) or (Tcond2 == true and entry < 진입횟수2)) Then
sell("s",atlimit,daylow+PriceScale*200);
if MarketPosition == -1 Then
{
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*150);
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
}
if sdate != sdate[1] Then
SetStopEndofday(Xtime);
if bdate != bdate[1] Then
SetStopEndofday(0);
---------------------------------------------------------
2가지 수식어의 추가 입니다.
조건만족후
buy 진입은 2분 10분 2회 골든크로스
buy 청산은 2분 10분 1회 데드크로스
진입의 손절은 1번째 골든크로스 전 캔들5봉 후 캔들5봉 의 저점의 이탈 입니다.
반대포지션도 동일 내용이며
당일 목표수익은 200틱의 수식어도 부탁드립니다.
2021-05-20
1420
글번호 149188
시스템
답변완료
수식 완성 좀 요청 드립니다.
* 파라 볼릭 인데 수식이 안됨니다.
* 완성좀 요청 드립니다
Input : Af(0.02), MaxAf(0.2);
Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0);
if count == 0 then //변수들의 초기화
{
highval = High;
lowval = Low;
direction = 0;
sar1 = 0;
afval = 0;
ep = 0;
count = 1;
}
if(ep != 0 ) then // 추세가 진행중
{
if(direction == 1) then // 상승추세이면
{
ep = highval;
sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산
if(high > highval) then // 신고가 발생
{
highval = high;
afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if( low < sar1) then // 추세변경(상승->하락)
{ // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의
direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
lowval = low;
}
}
else // 하락 추세
{
ep = lowval; // 하락추세에서는 EP로 저가 사용
sar1 = sar1 + afval*(ep-sar1);
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af;
if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if(high > sar1) then // 추세 변경(하락->상승)
{ // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의
direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
highval = high;
}
}
}
else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산
{
if(direction == 1) then // 상승 추세
{
ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);
if ( high > highval) then // 신고가가 발생
{
Highval = high;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
else // 하락추세
{
ep = lowval;
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
}
else // SAR 첨 시작
{
if direction == 0 then // 추세가 없으므로
{
if(c > c[1]) then // 상승추세로 시작
direction = 1;
else if( c < c[1]) then // 하락추세로 시작
direction = -1;
}
else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작
{
direction = -1;
sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로
}
}
else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작
{
direction = 1;
sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로
}
}
lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로
highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장
}
//처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid
if(sar1 != 0) then
User_Func_Sar = sar1;
고맙습니다. 수고 하셨습니다.
2021-05-20
1817
글번호 149183
지표
답변완료
수식 문의
안녕하세요?
첨부한 수식을 data2 와 data3 용으로 수정해 주시기 바랍니다.
메인에는 5분봉
data2: 4시간봉
data3: 일봉
을 넣어서 필터로 사용하려 합니다.
뭐 약간 부정확한 건 상관 없습니다.
이런 시도의 한계나 문제점들도 좀 가르쳐 주시면 좋겠습니다.
그냥 5분봉에서 일봉용으로 200 이평 등을 계산하려면, 예컨데, 5분봉 5000봉을 잡았다 해도,
그 안에 포함되는 일봉은 몇 개 안 될 것 같아서 data3에 넣고 처리하려고 하는데,
지금 제 생각이 맞는 거지요?
설마 data2, 3 없이 그냥 5분봉에서 일봉용이나 4H용 200 이평 등이 계산되는거 가능하지는 않겠지요?
data2용과 data3용은 비슷해 보이니까 data2 용 하나만 작성해 주시고, data3용을 쓸 때, 뭔가 data2용과 차이가 있다면 그 부분만 알려주시면 되겠습니다.
ps: 원하는 것은 그러니까 예컨데, 일봉에서 어제까지 상방이었다가 오늘 종가부터 하방으로 바뀌었다면,
오늘 5분봉 메인차트에서도 일봉신호는 어제까지 상방이었으니까 계속 상방이 나오고,
내일 아침부터는 일봉신호가 하방으로 나오면 좋겠습니다.
감사합니다.
2021-05-20
1839
글번호 149179
지표