답변 감사합니다
그런데 제 의도와는 다르게 실행이 되어서 문의 드립니다.
제 의도는 손절이 되든 익절이 되든 거래 가능 시간 동안 계속 포지션을 갖고 가고 싶습니다.
익절이나 손절 후 진입 조건이 되는데도 바로 진입이 안됩니다.
1. 시작시간 : 09시
2. 종료시간 : 05시 30분
3. 매수를 했다가 익절이 되면 30분봉 5 이평선이 계속 상승이면 추가 진입을 3분봉에서 익절
이 된 봉 이후에 발생하는 최초의 3분봉 5 이평값 이하에서 무조건 재 매수 진입한다.
4. 매수를 했다가 손절이 되면 30분봉 5 이평선이 계속 상승이면 추가 진입을 3분봉에서 손절
이 된 봉 바로 다음 3분봉 시초가에 무조건 재 매수 진입한다.
5 매도를 했다가 익절이 되면 30분봉 5 이평선이 계속 하락이면 추가 진입을 3분봉에서 익절
이 된 봉 이후에 발생하는 최초의 3분봉5 이평값 이상에서 무조건 재 매도 진입한다.
6. 매도를 했다가 손절이 되면 30분봉 5 이평선이 계속 하락이면 추가 진입을 3분봉에서 손절
이 된 봉 바로 다음 3분봉 시초가에 무조건 재 매도 진입한다.
7.손절이나 익절이 안되고 30분봉 5 이평의 방향이 바뀌면 무조건 바로 다음 3분봉 시초가에
스위칭 한다.
부탁 드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템 수식 부탁 드립니다.
> 안녕하세요
예스스탁입니다.
input : 타주기분(30),P(5);
input : 익절틱수(40),손절틱수(20);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),entry(0);
var : sum1(0),mav1(0),sum2(0),mav2(0),sum3(0),mav3(0);
Array : CC[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
entry = 0;
}
if D1 > 0 then
{
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
if CC[P+2] > 0 then
{
sum1 = 0;
sum2 = 0;
sum3 = 0;
for cnt = 0 to P-1
{
sum1 = sum1 + CC[cnt];
sum2 = sum2 + CC[cnt+1];
sum3 = sum3 + CC[cnt+2];
}
mav1 = sum1/P;
mav2 = sum2/P;
mav3 = sum3/P;
if MarketPosition >= 0 and mav1 < mav2 and mav2 > mav3 Then
Sell("s",AtMarket,Def,1);
if MarketPosition <= 0 and mav1 > mav2 and mav2 < mav3 Then
Buy("b",AtMarket,Def,1);
if entry >= 1 and MarketPosition == 0 and IsExitName("StopProfitTarget",1) == true Then
{
if MarketPosition(1) == 1 and
mav1 > mav2 and
CrossDown(C,mav1) Then
Buy("rb",AtMarket);
if MarketPosition(1) == -1 and
mav1 < mav2 and
CrossUp(c,mav1) Then
Sell("rs",AtMarket);
}
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
즐거운 하루되세요
답변 1
예스스탁
예스스탁 답변
2023-01-05 13:26:10
> 동백초보 님이 쓴 글입니다.
> 제목 : 수식이 작동이 잘 안됩니다.
> 답변 감사합니다
그런데 제 의도와는 다르게 실행이 되어서 문의 드립니다.
제 의도는 손절이 되든 익절이 되든 거래 가능 시간 동안 계속 포지션을 갖고 가고 싶습니다.
익절이나 손절 후 진입 조건이 되는데도 바로 진입이 안됩니다.
1. 시작시간 : 09시
2. 종료시간 : 05시 30분
3. 매수를 했다가 익절이 되면 30분봉 5 이평선이 계속 상승이면 추가 진입을 3분봉에서 익절
이 된 봉 이후에 발생하는 최초의 3분봉 5 이평값 이하에서 무조건 재 매수 진입한다.
4. 매수를 했다가 손절이 되면 30분봉 5 이평선이 계속 상승이면 추가 진입을 3분봉에서 손절
이 된 봉 바로 다음 3분봉 시초가에 무조건 재 매수 진입한다.
5 매도를 했다가 익절이 되면 30분봉 5 이평선이 계속 하락이면 추가 진입을 3분봉에서 익절
이 된 봉 이후에 발생하는 최초의 3분봉5 이평값 이상에서 무조건 재 매도 진입한다.
6. 매도를 했다가 손절이 되면 30분봉 5 이평선이 계속 하락이면 추가 진입을 3분봉에서 손절
이 된 봉 바로 다음 3분봉 시초가에 무조건 재 매도 진입한다.
7.손절이나 익절이 안되고 30분봉 5 이평의 방향이 바뀌면 무조건 바로 다음 3분봉 시초가에
스위칭 한다.
부탁 드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템 수식 부탁 드립니다.
> 안녕하세요
예스스탁입니다.
input : 타주기분(30),P(5);
input : 익절틱수(40),손절틱수(20);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),entry(0);
var : sum1(0),mav1(0),sum2(0),mav2(0),sum3(0),mav3(0);
Array : CC[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
entry = 0;
}
if D1 > 0 then
{
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
if CC[P+2] > 0 then
{
sum1 = 0;
sum2 = 0;
sum3 = 0;
for cnt = 0 to P-1
{
sum1 = sum1 + CC[cnt];
sum2 = sum2 + CC[cnt+1];
sum3 = sum3 + CC[cnt+2];
}
mav1 = sum1/P;
mav2 = sum2/P;
mav3 = sum3/P;
if MarketPosition >= 0 and mav1 < mav2 and mav2 > mav3 Then
Sell("s",AtMarket,Def,1);
if MarketPosition <= 0 and mav1 > mav2 and mav2 < mav3 Then
Buy("b",AtMarket,Def,1);
if entry >= 1 and MarketPosition == 0 and IsExitName("StopProfitTarget",1) == true Then
{
if MarketPosition(1) == 1 and
mav1 > mav2 and
CrossDown(C,mav1) Then
Buy("rb",AtMarket);
if MarketPosition(1) == -1 and
mav1 < mav2 and
CrossUp(c,mav1) Then
Sell("rs",AtMarket);
}
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
즐거운 하루되세요