예스스탁
예스스탁 답변
2021-05-11 12:58:33
안녕하세요
예스스탁입니다.
1
수식에서 dd는 미국장시작을 카운트하는 변수입니다.
미국장시작봉이 발생하면 1씩 증가하게 됩니다.
당일수익발생시에 다음 장을 건너뛸때 사용하게 됩니다.
당일지정한 수익이 발생하면
XD에 그날의 dd값을 저장하고, 미국장에서 발생했으면 XT에 1, 아시아장에서 발생하면 XT에 2를 저장합니다.
이후에 다음 미국장시작봉이 발생하면
XD가 dd값 저장없이 0이면 Xcond는 false로 만들어 진입에 들어가게 하고
XD에 0보다 큰값이 저장되어 있고 전일 미국장에서 당일수익이 발생했으면 당일에 Xcond는 false로 만들어 진입에 들어가게 하고
XD에 0보다 큰값이 저장되어 있고 전일 아시아장에서 당일수익이 발생했으면 XD에 저장된 dd값보다 당일 dd값이 최소2이상큰때
Xcond는 false로 만들어 진입에 들어가게 하는 내용입니다.
미국장에서 당일수익발생하면 이후 아사이장은 쉬고 다음 미국장부터 진입하고
아시아장에서 당일수익발생하면 이후 미국장은 쉬고 다음 미국장부터 진입하게 하기 위한 내용입니다.
2
수식에서 N1 = NetProfit;
은 미국장 시작시의 총거래손익입니다.
daypl = NetProfit-N1;
위 내용은 현재총거래손익에서 미국장시작시의 총거래손익을 빼서 당일발생한 손익을 계산하는 식입니다.
3
input : 미국시작(223000),미국종료(060000);
input : 아시아시작(70000),아시아종료(160000);
Input : 당일수익틱수(30);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false),dd(0);
var : Tcond1(false),Tcond2(false),Trade(False),XT(0),XD(0);
if (sdate != sdate[1] and stime >= 미국종료) or //'0시 이후의 봉이 미국 종료 시간보다 같거나 큰 상황'이거나
(sdate == sdate[1] and stime >= 미국종료 and stime[1] < 미국종료) Then //해당 봉과 전 봉의 시작 날짜가 같고 전봉은 미국 종료시간 전에 완성되고 지금 봉은 미국 종료시간 보다 같거나 클 때 완성 될 때,
{
Tcond1 = False; //트레이드 컨디션 = 거짓
}
if (sdate != sdate[1] and stime >= 미국시작) or //위와 비슷
(sdate == sdate[1] and stime >= 미국시작 and stime[1] < 미국시작) Then //위와 비슷
{
dd = dd+1; //미국장시작 카운트
Tcond1 = true; //미국장 시작
N1 = NetProfit; // N1에 미국장시작첫봉의 총손익저장
if XD == 0 or (XD > 0 and XT == 1 and DD >= XD+1) or (XD > 0 and XT == 2 and DD >= XD+2) Then //답변설명 참조
Xcond = false; //Xcond는 False 로 초기화 이변수는 이후 당일손익에 도달하면 true로 변경됨
}
if (sdate != sdate[1] and stime >= 아시아종료) or //위와 비슷
(sdate == sdate[1] and stime >= 아시아종료 and stime[1] < 아시아종료) Then //위와 비슷
{
Tcond2 = False; //거래 컨디션 2번 = 거짓
Trade = False; //거래 컨디션 거짓
}
if (sdate != sdate[1] and stime >= 아시아시작) or //위와 비슷
(sdate == sdate[1] and stime >= 아시아시작 and stime[1] < 아시아시작) Then
{
Tcond2 = true; //거래 컨디션 2번= 참
Trade = False; //거래 컨디션 거짓
}
당일수익 = PriceScale*당일수익틱수; //당일 수익을 틱에 맞춰 환산
daypl = NetProfit-N1; //현재총손익에서 미국장시작시총손익을 빼서 당일손익을 계산
if TotalTrades > TotalTrades[1] then //총거래횟수증가(청산이 발생한것을 의미)
{
//당일수익 달성을 아래 2가지로 체크하는 이유는
//당일수익에 도달하면 청산하는 로직(dsp,dsp)이 있지만
//다른 청산에 의해 먼저 청산이 발생해서 도달할 경우도 발생할수 있으
//2가지로 체크하는 것입니다.
if daypl >= 당일수익 Then //당일발생손익이 당일수익이상이면(당일수익에 도달)
{
Xcond = true; #xcond는 true로 변경
XD = dd; //당일수익달성봉의 날짜수 저장
XT = 0; //XT의 초기값
if Tcond1 == true Then
XT = 1; //미국장에서 발생했으면 1
if Tcond2 == true Then
XT = 2;//아시아장에서 발생했으면 1
}
//당일손익에 도달패허 지정한 이름의 청산이 발생하면
if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true ) then
{
Xcond = true; #xcond는 true로 변경
XD = dd; //당일수익달성봉의 날짜수 저장
XT = 0; //XT의 초기값
if Tcond1 == true Then
XT = 1; //미국장에서 발생했으면 1
if Tcond2 == true Then
XT = 2;//아시아장에서 발생했으면 1
}
}
if Tcond2 == true and X Then
Trade = true;
if (Tcond1 == true or (Tcond2 == true and Trade == true)) and Xcond == False Then
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 도움 부탁드립니다.
> 항상 답변 달아주셔서 감사합니다. 코로나가 극성인 가운데 건강하셨으면 좋겠습니다.
수식에 대해 제가 이해를 잘 못해서 그런데 옆에 제가 나름 설명하게 맞는지 확인 부탁드리겠습니다 (__) 매뉴얼 열심히 읽어보며 최대한 노력했는데도 잘 이해가 가지 않습니다. 제대로 확실히 이해하면 다음부터 질문 빈도가 줄어들 것 같습니다. 부탁드립니다.
input : 미국시작(223000),미국종료(060000);
input : 아시아시작(70000),아시아종료(160000);
Input : 당일수익틱수(30);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false),dd(0);
var : Tcond1(false),Tcond2(false),Trade(False),XT(0),XD(0);
if (sdate != sdate[1] and stime >= 미국종료) or //'0시 이후의 봉이 미국 종료 시간보다 같거나 큰 상황'이거나
(sdate == sdate[1] and stime >= 미국종료 and stime[1] < 미국종료) Then //해당 봉과 전 봉의 시작 날짜가 같고 전봉은 미국 종료시간 전에 완성되고 지금 봉은 미국 종료시간 보다 같거나 클 때 완성 될 때,
{
Tcond1 = False; //트레이드 컨디션 = 거짓
}
if (sdate != sdate[1] and stime >= 미국시작) or //위와 비슷
(sdate == sdate[1] and stime >= 미국시작 and stime[1] < 미국시작) Then //위와 비슷
{
dd = dd+1; // 여기서 부터 이해가 안갑니다. dd가 왜 나왔나요? 왜 트레이딩이 시작되면 dd라는 변수에 1을 더한게 dd가 되게 하신건가요?
Tcond1 = true; //트레이딩 시작
N1 = NetProfit; // N1이란 변수는 청산 완료된 거래의 최종 손익
if XD == 0 or (XD > 0 and XT == 1 and DD >= XD+1) or (XD > 0 and XT == 2 and DD >= XD+2) Then //여기도 이해가 안갑니다..XD는 이미 0인데 이 해당 수식들이 무엇을 의미하나요?
Xcond = false; //멈춤 컨디션 = 거래 중지??
}
if (sdate != sdate[1] and stime >= 아시아종료) or //위와 비슷
(sdate == sdate[1] and stime >= 아시아종료 and stime[1] < 아시아종료) Then //위와 비슷
{
Tcond2 = False; //거래 컨디션 2번 = 거짓
Trade = False; //거래 컨디션 거짓
}
if (sdate != sdate[1] and stime >= 아시아시작) or //위와 비슷
(sdate == sdate[1] and stime >= 아시아시작 and stime[1] < 아시아시작) Then
{
Tcond2 = true; //거래 컨디션 2번= 참
Trade = False; //거래 컨디션 거짓
}
당일수익 = PriceScale*당일수익틱수; //당일 수익을 틱에 맞춰 환산
daypl = NetProfit-N1; //아까 이미 넷프로핏과 N1은 같다고 했는데 왜 여기선 빼나요?
if TotalTrades > TotalTrades[1] then // 종결된 총 거래횟수가 그 전 횟수보다 많다면
{
if daypl >= 당일수익 Then //?
{
Xcond = true;
XD = dd; //??
XT = 0; //??
if Tcond1 == true Then
XT = 1;
if Tcond2 == true Then
XT = 2;
}
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
{
Xcond = true;
XD = dd;
XT = 0;
if Tcond1 == true Then
XT = 1;
if Tcond2 == true Then
XT = 2;
}
}
if Tcond2 == true and X Then
Trade = true;
if (Tcond1 == true or (Tcond2 == true and Trade == true)) and Xcond == False Then
ㅠㅠ 도와주십쇼