커뮤니티
문의드립니다.
2017-11-30 10:33:02
141
글번호 114585
어제보다 더 춥습니다. 건강 잘 챙기시구요.
아래와 같은 수식을 부탁드립니다.
1.매매시간
10시 ~ 04시까지 매매후 종료
2.진입조건(1계약 진입)
매수 : 양봉 종가가 20일선 아래에서 위로 골든크로스 한후 다시 음봉 종가가 20일선 아래로 데드크로스 하고 다음 봉의 종가가 다시 20일선 위로 골든크로스 할때 매수(매도는 반대)
3.청산/손절
-청산: 3가지
20틱수익 도달시 청산
10틱이상 15틱미만 수익시 5틱수익까지 후퇴하면 5틱수익 청산
15틱이상 수익시 10틱수익까지 후퇴하면 10틱수익 청산
-손절: 둘중에 먼저 도달하는 조건을 실행
수익이 10틱 미만일때 -30틱에서 손절 되거나
수익이 10틱 미만일때 매수의 경우 5일선이 20일선을 데드크로스하면 손절(매도는 반대)
4.매매종료
매매시간 이내에(10시 ~ 04시까지) 당일 누적수익을 50틱이상 달성한 순간부터 당일 누적수익에서 60% 손실이 발생하기 전에는 매매시간 종료까지 매매를 계속함.
누적 총수익에서 60% 손실이 발생하면 즉시 당일 매매종료하고 a.wav 파일 실행
5.당일 누적수익 표시
실시간 현재의 캔들 고점+5틱 위에 확정된 당일 실시간 현재의 누적수익을 계속 표시
수고하세요^^
답변 2
예스스탁 예스스탁 답변
2017-11-30 14:50:59
안녕하세요
예스스탁입니다.
Input : 당일수익틱수(50);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false);
var : Tcond(false),mav1(0),mav2(0),Hpl(0),tx(0),t(0),t1(0),t2(0);
당일수익 = PriceScale*당일수익틱수;
if stime == 100000 or (stime > 100000 and stime[1] < 100000) Then{
Tcond = true;
Xcond = false;
N1 = NetProfit;
Hpl = 0;
}
if stime == 40000 or (stime > 40000 and stime[1] < 40000) Then
Tcond = false;
mav1 = ma(C,5);
mav2 = ma(C,20);
daypl = NetProfit-N1;
if crossup(c,mav2) Then{
t = 1;
t1 = t[1];
t2 = t1[1];
if C > O Then
t = 2;
}
if CrossDown(c,mav2) Then{
t = -1;
t1 = t[1];
t2 = t1[1];
if C < O Then
t = -2;
}
if daypl > hpl Then
hpl = daypl;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then{
Xcond = true;
PlaySound("a.wav");
}
if Tcond == true and Xcond == false then{
if T >= 1 and T != T[1] and T[1] != T[2] and
T1 == -2 and T2 == 2 Then
buy("b",OnClose,def,1);
if T <= -1 and T != T[1] and T[1] != T[2] and
T1 == 2 and T2 == -2 Then
sell("s",OnClose,def,1);
if MarketPosition == 1 then{
Text_Delete(tx);
tx = Text_New(sdate,stime,H+PriceScale*5,NumToStr(daypl+PositionProfit,2));
var1 = highest(h,BarsSinceEntry);
ExitLong("bx1",atlimit,EntryPrice+PriceScale*20);
if var1 >= EntryPrice+PriceScale*15 then
ExitLong("bx2",AtStop,EntryPrice+PriceScale*10);
if var1 >= EntryPrice+PriceScale*10 then
ExitLong("bx3",AtStop,EntryPrice+PriceScale*5);
if var1 < EntryPrice+PriceScale*10 then
ExitLong("bx4",AtStop,EntryPrice-PriceScale*30);
if var1 < EntryPrice+PriceScale*10 and CrossDown(mav1,mav2) then
ExitLong("bx5");
}
if MarketPosition == -1 then{
Text_Delete(tx);
tx = Text_New(sdate,stime,H+PriceScale*5,NumToStr(daypl+PositionProfit,2));
var1 = Lowest(L,BarsSinceEntry);
ExitShort("sx1",atlimit,EntryPrice-PriceScale*20);
if var1 <= EntryPrice-PriceScale*15 then
ExitShort("sx2",AtStop,EntryPrice-PriceScale*10);
if var1 <= EntryPrice-PriceScale*10 then
ExitShort("sx3",AtStop,EntryPrice-PriceScale*5);
if var1 > EntryPrice-PriceScale*10 then
ExitShort("sx4",AtStop,EntryPrice+PriceScale*30);
if var1 > EntryPrice-PriceScale*10 and CrossUp(mav1,mav2) then
ExitShort("sx5");
}
if MarketPosition == 1 and hpl >= 당일수익 then{
ExitLong("dbp",AtStop,EntryPrice-((hpl-daypl)*0.6)/CurrentContracts);
}
if MarketPosition == -1 and hpl >= 당일수익 then{
ExitShort("dsp",AtStop,EntryPrice+((hpl-daypl)*0.6)/CurrentContracts);
}
}
즐거운 하루되세요
> 웹피 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 어제보다 더 춥습니다. 건강 잘 챙기시구요.
아래와 같은 수식을 부탁드립니다.
1.매매시간
10시 ~ 04시까지 매매후 종료
2.진입조건(1계약 진입)
매수 : 양봉 종가가 20일선 아래에서 위로 골든크로스 한후 다시 음봉 종가가 20일선 아래로 데드크로스 하고 다음 봉의 종가가 다시 20일선 위로 골든크로스 할때 매수(매도는 반대)
3.청산/손절
-청산: 3가지
20틱수익 도달시 청산
10틱이상 15틱미만 수익시 5틱수익까지 후퇴하면 5틱수익 청산
15틱이상 수익시 10틱수익까지 후퇴하면 10틱수익 청산
-손절: 둘중에 먼저 도달하는 조건을 실행
수익이 10틱 미만일때 -30틱에서 손절 되거나
수익이 10틱 미만일때 매수의 경우 5일선이 20일선을 데드크로스하면 손절(매도는 반대)
4.매매종료
매매시간 이내에(10시 ~ 04시까지) 당일 누적수익을 50틱이상 달성한 순간부터 당일 누적수익에서 60% 손실이 발생하기 전에는 매매시간 종료까지 매매를 계속함.
누적 총수익에서 60% 손실이 발생하면 즉시 당일 매매종료하고 a.wav 파일 실행
5.당일 누적수익 표시
실시간 현재의 캔들 고점+5틱 위에 확정된 당일 실시간 현재의 누적수익을 계속 표시
수고하세요^^
웹피
2017-12-05 15:43:13
항상 도움의 수식에 감사드립니다.
다름 아니오라 55715번 답변으로 올려주신 수식으로 실행하였을때 이해가 잘 안되는 부분이 있어서 질문 드리고 수식 수정도 부탁드립니다.
1.당일누적수익 계산값
당일누적수익의 계산된 시간범위를 정확히 알고 싶습니다.
매매시간제한을 10시 ~ 04시까지로 설정하였는데 당일누적수익을 계산한 시간도 날짜 관계없이 이 시간범위(10시 ~ 04시까지)인지 아니면 10시 ~ 00시 이전 까지만 당일이고 00시 ~ 04시까지는 익일로 넘어가서 누적되는건지 궁금합니다.
왜냐면 10시 ~ 04시까지의 수익을 계산기로 계산해보면 합계는 손실이 없는 것으로 나오는 날도 04시 기준으로 캔들위에 실시간 표시되는 값이 손실이 누적된 것으로 나오고 00시 ~ 23시 59분까지를 계산해봐도 합계가 손실이 없는 날에 손실이 누적된 것으로 캔들 위에 실시간으로 출력이 되고 있어서요.
그리고 00시 ~ 오전중에만 간단히 계산했을때도 몇번 안되는 신호횟수이고 분명히 수익중인데도 캔들위에 실시간 누적수익표시에는 마이너스로 손실틱수가 표시되고 있어서 이해가 되지를 않습니다. 차트는 200틱차트를 사용하고 있습니다.
그리고 아래 수식에서 당초에는 캔들 위에 실시간으로 표시된다음 지나가면 계산값이 삭제되고 실시간으로 매번 캔들마다 표시되던 것을 수정하여 매매종료 시간인 04시에만 또는 당일로 계산된 시간범위의 끝이 자정이라면 자정에만 캔들 위에 당일누적수익 틱수를 출력하고 지나가도 삭제되지 않고 남아있도록 하려면 어떻게 수정되어야 하는지 부탁드립니다.
2.매매종료시간 및 조건수식 수정
-매매종료시간을 10시 ~ 04시까지로 설정하였는데 04시 전에 진입신호가 나온 상태로 10시 이전까지 신호가 정지되었다가 10시 이후에야 04시 이전에 나와있던 신호가 마무리되고 다음 신호가 나오고 있습니다.
이것을 현재 포지션의 익절,손실 유무에 관계없이 04시에는 매매를 무조건 강제종료하여 신호를 끝내고 10시부터는 새롭게 진입신호를 발생시키고 싶습니다.
04 ~ 10시 사이에 급변동이 생기면 안돼서요.
-매매시간 중이라도 현재누적손익이 +100틱에 도달했거나 또는 반대로 손실로 -50틱에 도달하면 당일 매매 강제종료하도록 수식 수정바랍니다.
감사합니다.^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
Input : 당일수익틱수(50);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false);
var : Tcond(false),mav1(0),mav2(0),Hpl(0),tx(0),t(0),t1(0),t2(0);
당일수익 = PriceScale*당일수익틱수;
if stime == 100000 or (stime > 100000 and stime[1] < 100000) Then{
Tcond = true;
Xcond = false;
N1 = NetProfit;
Hpl = 0;
}
if stime == 40000 or (stime > 40000 and stime[1] < 40000) Then
Tcond = false;
mav1 = ma(C,5);
mav2 = ma(C,20);
daypl = NetProfit-N1;
if crossup(c,mav2) Then{
t = 1;
t1 = t[1];
t2 = t1[1];
if C > O Then
t = 2;
}
if CrossDown(c,mav2) Then{
t = -1;
t1 = t[1];
t2 = t1[1];
if C < O Then
t = -2;
}
if daypl > hpl Then
hpl = daypl;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then{
Xcond = true;
PlaySound("a.wav");
}
if Tcond == true and Xcond == false then{
if T >= 1 and T != T[1] and T[1] != T[2] and
T1 == -2 and T2 == 2 Then
buy("b",OnClose,def,1);
if T <= -1 and T != T[1] and T[1] != T[2] and
T1 == 2 and T2 == -2 Then
sell("s",OnClose,def,1);
if MarketPosition == 1 then{
Text_Delete(tx);
tx = Text_New(sdate,stime,H+PriceScale*5,NumToStr(daypl+PositionProfit,2));
var1 = highest(h,BarsSinceEntry);
ExitLong("bx1",atlimit,EntryPrice+PriceScale*20);
if var1 >= EntryPrice+PriceScale*15 then
ExitLong("bx2",AtStop,EntryPrice+PriceScale*10);
if var1 >= EntryPrice+PriceScale*10 then
ExitLong("bx3",AtStop,EntryPrice+PriceScale*5);
if var1 < EntryPrice+PriceScale*10 then
ExitLong("bx4",AtStop,EntryPrice-PriceScale*30);
if var1 < EntryPrice+PriceScale*10 and CrossDown(mav1,mav2) then
ExitLong("bx5");
}
if MarketPosition == -1 then{
Text_Delete(tx);
tx = Text_New(sdate,stime,H+PriceScale*5,NumToStr(daypl+PositionProfit,2));
var1 = Lowest(L,BarsSinceEntry);
ExitShort("sx1",atlimit,EntryPrice-PriceScale*20);
if var1 <= EntryPrice-PriceScale*15 then
ExitShort("sx2",AtStop,EntryPrice-PriceScale*10);
if var1 <= EntryPrice-PriceScale*10 then
ExitShort("sx3",AtStop,EntryPrice-PriceScale*5);
if var1 > EntryPrice-PriceScale*10 then
ExitShort("sx4",AtStop,EntryPrice+PriceScale*30);
if var1 > EntryPrice-PriceScale*10 and CrossUp(mav1,mav2) then
ExitShort("sx5");
}
if MarketPosition == 1 and hpl >= 당일수익 then{
ExitLong("dbp",AtStop,EntryPrice-((hpl-daypl)*0.6)/CurrentContracts);
}
if MarketPosition == -1 and hpl >= 당일수익 then{
ExitShort("dsp",AtStop,EntryPrice+((hpl-daypl)*0.6)/CurrentContracts);
}
}
즐거운 하루되세요
> 웹피 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 어제보다 더 춥습니다. 건강 잘 챙기시구요.
아래와 같은 수식을 부탁드립니다.
1.매매시간
10시 ~ 04시까지 매매후 종료
2.진입조건(1계약 진입)
매수 : 양봉 종가가 20일선 아래에서 위로 골든크로스 한후 다시 음봉 종가가 20일선 아래로 데드크로스 하고 다음 봉의 종가가 다시 20일선 위로 골든크로스 할때 매수(매도는 반대)
3.청산/손절
-청산: 3가지
20틱수익 도달시 청산
10틱이상 15틱미만 수익시 5틱수익까지 후퇴하면 5틱수익 청산
15틱이상 수익시 10틱수익까지 후퇴하면 10틱수익 청산
-손절: 둘중에 먼저 도달하는 조건을 실행
수익이 10틱 미만일때 -30틱에서 손절 되거나
수익이 10틱 미만일때 매수의 경우 5일선이 20일선을 데드크로스하면 손절(매도는 반대)
4.매매종료
매매시간 이내에(10시 ~ 04시까지) 당일 누적수익을 50틱이상 달성한 순간부터 당일 누적수익에서 60% 손실이 발생하기 전에는 매매시간 종료까지 매매를 계속함.
누적 총수익에서 60% 손실이 발생하면 즉시 당일 매매종료하고 a.wav 파일 실행
5.당일 누적수익 표시
실시간 현재의 캔들 고점+5틱 위에 확정된 당일 실시간 현재의 누적수익을 계속 표시
수고하세요^^
다음글
이전글