답변완료
수식문의드립니다
안녕하세요~
오전에 답변주신것 바탕으로 array 사용해 수식을 줄였는데
줄인건 진입이 일어나지 않는데 원인을 못찾겠습니다...
1. 원래수식
input : ML(20), L01(12083), L02(12043), L03(12003), L04(11963), L05(11923), L06(11883), L07(11843), L08(11803), L09(11763), L10(11723);
var : Bsystem(true), Ssystem(true);
// 매수진입 조건
if Bsystem == true Then
{
if MarketPosition == 0 && condition11 == true Then buy("b01", AtLimit, L01);
if MarketPosition == 0 && condition12 == true Then buy("b02", AtLimit, L02);
if MarketPosition == 0 && condition13 == true Then buy("b03", AtLimit, L03);
if MarketPosition == 0 && condition14 == true Then buy("b04", AtLimit, L04);
if MarketPosition == 0 && condition15 == true Then buy("b05", AtLimit, L05);
if MarketPosition == 0 && condition16 == true Then buy("b06", AtLimit, L06);
if MarketPosition == 0 && condition17 == true Then buy("b07", AtLimit, L07);
if MarketPosition == 0 && condition18 == true Then buy("b08", AtLimit, L08);
if MarketPosition == 0 && condition19 == true Then buy("b09", AtLimit, L09);
if MarketPosition == 0 && condition10 == true Then buy("b10", AtLimit, L10);
if MarketPosition == 0 && CrossDown(C, L01+ML) Then condition11 = true;
if MarketPosition == 0 && CrossDown(C, L02+ML) Then condition12 = true;
if MarketPosition == 0 && CrossDown(C, L03+ML) Then condition13 = true;
if MarketPosition == 0 && CrossDown(C, L04+ML) Then condition14 = true;
if MarketPosition == 0 && CrossDown(C, L05+ML) Then condition15 = true;
if MarketPosition == 0 && CrossDown(C, L06+ML) Then condition16 = true;
if MarketPosition == 0 && CrossDown(C, L07+ML) Then condition17 = true;
if MarketPosition == 0 && CrossDown(C, L08+ML) Then condition18 = true;
if MarketPosition == 0 && CrossDown(C, L09+ML) Then condition19 = true;
if MarketPosition == 0 && CrossDown(C, L10+ML) Then condition10 = true;
if CrossDown(L, L01) Then condition11 = False;
if CrossDown(L, L02) Then condition12 = False;
if CrossDown(L, L03) Then condition13 = False;
if CrossDown(L, L04) Then condition14 = False;
if CrossDown(L, L05) Then condition15 = False;
if CrossDown(L, L06) Then condition16 = False;
if CrossDown(L, L07) Then condition17 = False;
if CrossDown(L, L08) Then condition18 = False;
if CrossDown(L, L09) Then condition19 = False;
if CrossDown(L, L10) Then condition10 = False;
}
//매도진입 조건
if Ssystem == true Then
{
if MarketPosition == 0 && Condition21 == true Then Sell("s01",AtLimit,L01);
if MarketPosition == 0 && Condition22 == true Then Sell("s02",AtLimit,L02);
if MarketPosition == 0 && Condition23 == true Then Sell("s03",AtLimit,L03);
if MarketPosition == 0 && Condition24 == true Then Sell("s04",AtLimit,L04);
if MarketPosition == 0 && Condition25 == true Then Sell("s05",AtLimit,L05);
if MarketPosition == 0 && Condition26 == true Then Sell("s06",AtLimit,L06);
if MarketPosition == 0 && Condition27 == true Then Sell("s07",AtLimit,L07);
if MarketPosition == 0 && Condition28 == true Then Sell("s08",AtLimit,L08);
if MarketPosition == 0 && Condition29 == true Then Sell("s09",AtLimit,L09);
if MarketPosition == 0 && Condition20 == true Then Sell("s10",AtLimit,L10);
if MarketPosition == 0 && CrossUp(C, L01-ML) Then condition21 = true;
if MarketPosition == 0 && CrossUp(C, L02-ML) Then condition22 = true;
if MarketPosition == 0 && CrossUp(C, L03-ML) Then condition23 = true;
if MarketPosition == 0 && CrossUp(C, L04-ML) Then condition24 = true;
if MarketPosition == 0 && CrossUp(C, L05-ML) Then condition25 = true;
if MarketPosition == 0 && CrossUp(C, L06-ML) Then condition26 = true;
if MarketPosition == 0 && CrossUp(C, L07-ML) Then condition27 = true;
if MarketPosition == 0 && CrossUp(C, L08-ML) Then condition28 = true;
if MarketPosition == 0 && CrossUp(C, L09-ML) Then condition29 = true;
if MarketPosition == 0 && CrossUp(C, L10-ML) Then condition20 = true;
if CrossUp(H, L01) Then Condition21 = False;
if CrossUp(H, L02) Then Condition22 = False;
if CrossUp(H, L03) Then Condition23 = False;
if CrossUp(H, L04) Then Condition24 = False;
if CrossUp(H, L05) Then Condition25 = False;
if CrossUp(H, L06) Then Condition26 = False;
if CrossUp(H, L07) Then Condition27 = False;
if CrossUp(H, L08) Then Condition28 = False;
if CrossUp(H, L09) Then Condition29 = False;
if CrossUp(H, L10) Then Condition20 = False;
}
// 청산
if marketposition == 1 Then
{
ExitLong("exitL1",AtLimit,EntryPrice+ML);
ExitLong("exitL2",AtStop,EntryPrice-ML);
}
if marketposition == -1 Then
{
ExitShort("exitS1",AtLimit,EntryPrice-ML);
ExitShort("exitS2",AtStop,EntryPrice+ML);
}
2. array 사용한 수식
input : ML(20);
var : Bsystem(true), Ssystem(true), i(0);
array : LL[9](0), BC[9](False), SC[99](False);
LL[5] = 11923;
For i = 0 to 4 {LL[4-i] = LL[5-i] + 2*ML;}
For i = 5 to 9 {LL[i+1] = LL[i] - 2*ML;}
MessageLog("L1 %.2f, L2 %.2f, L3 %.2f, L4 %.2f, L5 %.2f", LL[2] , LL[4], LL[5], LL[6], LL[7]);
// 매수진입 조건
if Bsystem == true Then
{
For i = 0 to 9
{
if MarketPosition == 0 && BC[i] == true Then buy("b", AtLimit, LL[i]);
if MarketPosition == 0 && CrossDown(C,LL[i]+ML) Then BC[i] = true;
if CrossDown(L, LL[i])then BC[i] = False;
}
}
//매도진입 조건
if Ssystem == true Then
{
For i = 0 to 9
{
if MarketPosition == 0 && SC[i] == true Then Sell("s", AtLimit, LL[i]);
if MarketPosition == 0 && CrossUp(C,LL[i]-ML) Then SC[i] = true;
if Crossup(H, LL[i])then SC[i] = False;
}
}
// 청산
if marketposition == 1 Then
{
ExitLong("exitL1",AtLimit,EntryPrice+ML);
ExitLong("exitL2",AtStop,EntryPrice-ML);
}
if marketposition == -1 Then
{
ExitShort("exitS1",AtLimit,EntryPrice-ML);
ExitShort("exitS2",AtStop,EntryPrice+ML);
}
-----------------------------------------------------
확인해보면 1.은 진입이 정상적으로 일어나는데
줄이기만한 2.는 진입이 아얘 일어나지 않는데 원인을 못찾겠습니다ㅠ
확인해주시면 감사하겠습니다!
2022-05-13
1064
글번호 158838
시스템