커뮤니티
60111 재질문드립니다.
2018-11-16 04:27:57
186
글번호 123715
5개의 진입식에 대입시켜 보았는데요.
1. 아래의 식이 맞는지요?
input : y(3),n(5),x(3);
var : cnt(0),sum(0),sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
Var : cnt2(0), cnt3(0), cnt4(0), cnt5(0);
Var : didx(0), didx2(0), didx3(0), didx4(0), didx5(0);
Var : xdate(0), xdate2(0), xdate3(0), xdate4(0), xdate5(0);
Array : count[50](0), counta[50](0), countb[50](0), countc[50](0), countd[50](0);
if bdate != bdate[1] then
{
didx = didx+1;
count[0] = 0;
counta[0] = 0;
countb[0] = 0;
countc[0] = 0;
countd[0] = 0;
for cnt = 1 to 49
{
count[cnt] = count[cnt-1][1];
}
for cnt2 = 1 to 49
{
counta[cnt2] = counta[cnt2-1][1];
}
for cnt3 = 1 to 49
{
countb[cnt3] = countb[cnt3-1][1];
}
for cnt4 = 1 to 49
{
countc[cnt4] = countc[cnt4-1][1];
}
for cnt5 = 1 to 49
{
countd[cnt5] = countd[cnt5-1][1];
}
sum = 0;
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
for cnt = 1 to y
{
sum = sum+count[cnt];
}
for cnt2 = 1 to y
{
sum2 = sum2+counta[cnt2];
}
for cnt3 = 1 to y
{
sum3 = sum3+countb[cnt3];
}
for cnt4 = 1 to y
{
sum4 = sum4+countc[cnt4];
}
for cnt5 = 1 to y
{
sum5 = sum5+countd[cnt5];
}
MessageLog("%.f",sum);
if xdate == 0 and sum >= n Then
Xdate = Didx;
if xdate2 == 0 and sum2 >= n Then
Xdate2 = Didx2;
if xdate3 == 0 and sum3 >= n Then
Xdate3 = Didx3;
if xdate4 == 0 and sum4 >= n Then
Xdate4 = Didx4;
if xdate5 == 0 and sum5 >= n Then
Xdate5 = Didx5;
if Didx == Xdate+x Then
Xdate = 0;
if Didx2 == Xdate2+x Then
Xdate2 = 0;
if Didx3 == Xdate3+x Then
Xdate3 = 0;
if Didx4 == Xdate4+x Then
Xdate4 = 0;
if Didx5 == Xdate5+x Then
Xdate5 = 0;
}
if TotalTrades > TotalTrades[1] and
IsEntryName("A",1) == true and
IsExitName("StopLoss",1) == true Then
count[0] = count[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("B",1) == true and
IsExitName("StopLoss",1) == true Then
counta[0] = counta[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("C",1) == true and
IsExitName("StopLoss",1) == true Then
countb[0] = countb[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("D",1) == true and
IsExitName("StopLoss",1) == true Then
countc[0] = countc[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("E",1) == true and
IsExitName("StopLoss",1) == true Then
countd[0] = countd[0]+1;
if Xdate == 0 and crossup(c,ma(c,5)) Then #A진입식
buy("A");
if Xdate2 == 0 and crossup(c,ma(c,20)) Then #B진입식
buy("B");
if Xdate3 == 0 and crossup(c,ma(c,20)) Then #C진입식
buy("C");
if Xdate4 == 0 and crossup(c,ma(c,20)) Then #D진입식
buy("D");
if Xdate5 == 0 and crossup(c,ma(c,20)) Then #E진입식
buy("E");
2. 위 로직과 같이 for문이 많아지면, 시스템이 느려진다고 알고 있습니다. 본 로직에서 다이어트할 수 있는 방법은 없을까요?
답변 1
예스스탁 예스스탁 답변
2018-11-16 10:29:37
안녕하세요
예스스탁입니다.
1
예 맞습니다.
2
for문을 불필요하게 여러번 사용하실 필요가 없습니다.
하나이 for문에서 처리하시면 됩니다.
input : y(3),n(5),x(3);
var : cnt(0),sum(0),sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
Var : cnt2(0), cnt3(0), cnt4(0), cnt5(0);
Var : didx(0), didx2(0), didx3(0), didx4(0), didx5(0);
Var : xdate(0), xdate2(0), xdate3(0), xdate4(0), xdate5(0);
Array : count[50](0), counta[50](0), countb[50](0), countc[50](0), countd[50](0);
if bdate != bdate[1] then
{
didx = didx+1;
count[0] = 0;
counta[0] = 0;
countb[0] = 0;
countc[0] = 0;
countd[0] = 0;
for cnt = 1 to 49
{
count[cnt] = count[cnt-1][1];
counta[cnt] = counta[cnt-1][1];
countb[cnt] = countb[cnt-1][1];
countc[cnt] = countc[cnt-1][1];
countd[cnt] = countd[cnt-1][1];
}
sum = 0;
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
for cnt = 1 to y
{
sum = sum+count[cnt];
sum = sum+counta[cnt];
sum = sum+countb[cnt];
sum = sum+countc[cnt];
sum = sum+countd[cnt];
}
if xdate == 0 and sum >= n Then
Xdate = Didx;
if xdate2 == 0 and sum2 >= n Then
Xdate2 = Didx2;
if xdate3 == 0 and sum3 >= n Then
Xdate3 = Didx3;
if xdate4 == 0 and sum4 >= n Then
Xdate4 = Didx4;
if xdate5 == 0 and sum5 >= n Then
Xdate5 = Didx5;
if Didx == Xdate+x Then
Xdate = 0;
if Didx2 == Xdate2+x Then
Xdate2 = 0;
if Didx3 == Xdate3+x Then
Xdate3 = 0;
if Didx4 == Xdate4+x Then
Xdate4 = 0;
if Didx5 == Xdate5+x Then
Xdate5 = 0;
}
if TotalTrades > TotalTrades[1] then
{
if IsEntryName("A",1) == true and IsExitName("StopLoss",1) == true Then
count[0] = count[0]+1;
if IsEntryName("B",1) == true and IsExitName("StopLoss",1) == true Then
counta[0] = counta[0]+1;
if IsEntryName("C",1) == true and IsExitName("StopLoss",1) == true Then
countb[0] = countb[0]+1;
if IsEntryName("D",1) == true and IsExitName("StopLoss",1) == true Then
countc[0] = countc[0]+1;
if IsEntryName("E",1) == true and IsExitName("StopLoss",1) == true Then
countd[0] = countd[0]+1;
}
if Xdate == 0 and crossup(c,ma(c,5)) Then #A진입식
buy("A");
if Xdate2 == 0 and crossup(c,ma(c,20)) Then #B진입식
buy("B");
if Xdate3 == 0 and crossup(c,ma(c,20)) Then #C진입식
buy("C");
if Xdate4 == 0 and crossup(c,ma(c,20)) Then #D진입식
buy("D");
if Xdate5 == 0 and crossup(c,ma(c,20)) Then #E진입식
buy("E");
즐거운 하루되세요
> stockric 님이 쓴 글입니다.
> 제목 : 60111 재질문드립니다.
> 5개의 진입식에 대입시켜 보았는데요.
1. 아래의 식이 맞는지요?
input : y(3),n(5),x(3);
var : cnt(0),sum(0),sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
Var : cnt2(0), cnt3(0), cnt4(0), cnt5(0);
Var : didx(0), didx2(0), didx3(0), didx4(0), didx5(0);
Var : xdate(0), xdate2(0), xdate3(0), xdate4(0), xdate5(0);
Array : count[50](0), counta[50](0), countb[50](0), countc[50](0), countd[50](0);
if bdate != bdate[1] then
{
didx = didx+1;
count[0] = 0;
counta[0] = 0;
countb[0] = 0;
countc[0] = 0;
countd[0] = 0;
for cnt = 1 to 49
{
count[cnt] = count[cnt-1][1];
}
for cnt2 = 1 to 49
{
counta[cnt2] = counta[cnt2-1][1];
}
for cnt3 = 1 to 49
{
countb[cnt3] = countb[cnt3-1][1];
}
for cnt4 = 1 to 49
{
countc[cnt4] = countc[cnt4-1][1];
}
for cnt5 = 1 to 49
{
countd[cnt5] = countd[cnt5-1][1];
}
sum = 0;
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
for cnt = 1 to y
{
sum = sum+count[cnt];
}
for cnt2 = 1 to y
{
sum2 = sum2+counta[cnt2];
}
for cnt3 = 1 to y
{
sum3 = sum3+countb[cnt3];
}
for cnt4 = 1 to y
{
sum4 = sum4+countc[cnt4];
}
for cnt5 = 1 to y
{
sum5 = sum5+countd[cnt5];
}
MessageLog("%.f",sum);
if xdate == 0 and sum >= n Then
Xdate = Didx;
if xdate2 == 0 and sum2 >= n Then
Xdate2 = Didx2;
if xdate3 == 0 and sum3 >= n Then
Xdate3 = Didx3;
if xdate4 == 0 and sum4 >= n Then
Xdate4 = Didx4;
if xdate5 == 0 and sum5 >= n Then
Xdate5 = Didx5;
if Didx == Xdate+x Then
Xdate = 0;
if Didx2 == Xdate2+x Then
Xdate2 = 0;
if Didx3 == Xdate3+x Then
Xdate3 = 0;
if Didx4 == Xdate4+x Then
Xdate4 = 0;
if Didx5 == Xdate5+x Then
Xdate5 = 0;
}
if TotalTrades > TotalTrades[1] and
IsEntryName("A",1) == true and
IsExitName("StopLoss",1) == true Then
count[0] = count[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("B",1) == true and
IsExitName("StopLoss",1) == true Then
counta[0] = counta[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("C",1) == true and
IsExitName("StopLoss",1) == true Then
countb[0] = countb[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("D",1) == true and
IsExitName("StopLoss",1) == true Then
countc[0] = countc[0]+1;
if TotalTrades > TotalTrades[1] and
IsEntryName("E",1) == true and
IsExitName("StopLoss",1) == true Then
countd[0] = countd[0]+1;
if Xdate == 0 and crossup(c,ma(c,5)) Then #A진입식
buy("A");
if Xdate2 == 0 and crossup(c,ma(c,20)) Then #B진입식
buy("B");
if Xdate3 == 0 and crossup(c,ma(c,20)) Then #C진입식
buy("C");
if Xdate4 == 0 and crossup(c,ma(c,20)) Then #D진입식
buy("D");
if Xdate5 == 0 and crossup(c,ma(c,20)) Then #E진입식
buy("E");
2. 위 로직과 같이 for문이 많아지면, 시스템이 느려진다고 알고 있습니다. 본 로직에서 다이어트할 수 있는 방법은 없을까요?
다음글
이전글