답변완료
수식문의드립니다
안녕하세요~
만든 시스템에서 이해 안되는 진입이 나와 문의드립니다
수식은 아래와 같은데
사진에 보시면 표시해논 S04와 관련된진입에서만 이상한 진입이 발생합니다
1 ; 그보다 앞 봉에서 s04 진입조건에 도달했으나 진입 안했고, 1번의 시가에서 진입
2 ; 이전 봉에서 청산이 이루어진 직후 2번봉 시가에서 s04 진입. s04가 진입하는 자리 자체가 아니어서 s03의 청산조건으로 청산
3 ; 이전 봉에서 청산이 이루어진 직후, 3번봉 시가에서 s04 진입
4 ; 이전 봉에서 청산이 이루어진 직후, 3번봉 시가에서 s04 진입
s04와 관련된 수식만 잘못 입력했는지를 확인했을때도 이것만 잘못 입력한 부분은 없고
s04 이외엔 모두 정상적으로 작동합니다
원인이 뭔지 가능하다면 찾아주시면 감사하겠습니다!
수식은 아래와 같습니다
-----------------
input : Distance(10), TT(70000);
var : i(0);
array : LL[9](11884), BC1[9](False), BC2[9](false), SC1[9](False), SC2[9](False);
For i = 0 to 4 {LL[4-i] = LL[5-i] + distance;}
For i = 5 to 9 {LL[i+1] = LL[i] - distance;}
MessageLog("L3 %.2f, L4 %.2f, L5 %.2f, L6 %.2f, L7 %.2f", LL[3] , LL[4], LL[5], LL[6], LL[7]);
if sTime > TT Then
{
For i = 1 to 1
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b01", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL01-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL01-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s01", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS1-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS1-2", AtStop, LL[i-1]);
}
}
For i = 2 to 2
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b02", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL2-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL2-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s02", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS2-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS2-2", AtStop, LL[i-1]);
}
}
For i = 3 to 3
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b03", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL3-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL3-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s03", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS3-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS3-2", AtStop, LL[i-1]);
}
}
For i = 4 to 4
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b04", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL4-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL4-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s04", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS4-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS4-2", AtStop, LL[i-1]);
}
}
For i = 5 to 5
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b05", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL05-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL05-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s05", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS5-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS5-2", AtStop, LL[i-1]);
}
}
For i = 6 to 6
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b06", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL06-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL06-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s06", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS6-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS6-2", AtStop, LL[i-1]);
}
}
For i = 7 to 7
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b07", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL07-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL07-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s07", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS7-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS7-2", AtStop, LL[i-1]);
}
}
For i = 8 to 8
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b08", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL08-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL08-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s08", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS8-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS8-2", AtStop, LL[i-1]);
}
}
For i = 9 to 9
{
if MarketPosition == 0 && BC1[i] == true && BC2[i] == true Then Buy("b09", AtLimit, LL[i]);
if CrossUp(H, LL[i+1]) Then BC1[i] = true;
if BC1[i] == true && CrossUp(H, LL[i-1]) Then BC2[i] = true;
if (CrossDown(L, LL[i])&& BC1[i] == true && BC2[i] == true) or CrossUp(H, LL[i-2]) Then
{
BC1[i] = False;
BC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitLong("exitL09-1", AtLimit, (LL[i]+LL[i-1])/2);
ExitLong("exitL09-2", AtStop, LL[i+1]);
}
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s09", AtLimit, LL[i]);
if CrossDown(L, LL[i-1]) Then SC1[i] = true;
if SC1[i] == true && CrossDown(L, LL[i+1]) Then SC2[i] = true;
if (CrossUp(H, LL[i])&& SC1[i] == true && SC2[i] == true) or CrossDown(L, LL[i+2]) Then
{
SC1[i] = False;
SC2[i] = False;
}
if EntryPrice <= (LL[i]+LL[i-1])/2 && EntryPrice >= (LL[i]+LL[i+1])/2 Then
{
ExitShort("exitS9-1", AtLimit, (LL[i]+LL[i+1])/2);
ExitShort("exitS9-2", AtStop, LL[i-1]);
}
}
}
-----------------
2022-05-19
915
글번호 159044
시스템