예스스탁
예스스탁 답변
2022-05-19 15:49:58
안녕하세요
예스스탁입니다.
atlimit은 봉완성시 가격세팅하고 다음봉의 현재가와 셋팅된 가격을 비교해 신호가 발생합니다. 매도진입에서는 셋팅된값과 같거나 큰 시세 발생하면 즉시신호발생입니다.
s04매도진입신호는 봉완성시 지정한 if조건이 만족하면 가격을 셋팅하고
다음봉에서 셋팅된 가격 이상의 시세만 발생하면 신호가 발생합니다.
원하시는 자리에 신호가 발생하지 않으면
원하시는 신호봉의 전봉에서 해당 if문 조건이 만족하지 않았기 때문입니다.
아래와 같이 메세지 추가하셔서 내용을 확인하고 수정하셔야 할 것 같습니다.
해당 부분은 저희가 수정을 해드리기 어렵습니다.
MessageLog("s04 %s ",MarketPosition == 0 && SC1[i] == true && SC2[i] == true);
if MarketPosition == 0 && SC1[i] == true && SC2[i] == true Then Sell("s04", AtLimit, LL[i]);
즐거운 하루되세요
> jshwang2 님이 쓴 글입니다.
> 제목 : 수식문의드립니다
> 안녕하세요~
만든 시스템에서 이해 안되는 진입이 나와 문의드립니다
수식은 아래와 같은데
사진에 보시면 표시해논 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]);
}
}
}
-----------------