예스스탁
예스스탁 답변
2024-03-05 09:15:09
안녕하세요
예스스탁입니다.
1
시스템은 기본적으로 진입-청산이 반복되므로
매수신호가 발생하면 청산전에 매수조건이 만족해도 진입신호가 발생하지 않습니다.
이부분이 감안되게 수정해 드립니다.
2
아시는 내용이겠지만 수식에 지수이평 관련 내용이 있으므로
종목검색시 검색에 필요한 최소기간에 500봉 지정하시고
차트도 500봉 조회해 비교해 보시면 됩니다.
3
Input : B_A_Period1(9), B_A_Period2(26), B_A_Period3(52);
Input : B_B_Period1(12), B_B_Period2(26), B_B_Period3(9);
Input : B_C_Period1(10);
Input : B_D_Period1(9), B_D_Period2(26), B_D_Period3(52);
Input : B_E_Period1(9), B_E_Period2(26), B_E_Period3(52);
Input : S_A_Period1(12), S_A_Period2(26), S_A_Period3(9);
Var : B_A_Value1(0), B_A_Value2(0), B_A_Value3(0), B_A_Value4(0), B_A_Value5(0), B_A_Value6(0), B_A_Value7(0);
Var : B_A_CondResult(FALSE), B_A_TempResult(FALSE), B_A_Condition1(FALSE);
Var : B_B_value1(0), B_B_value2(0);
Var : B_B_CondResult(FALSE), B_B_TempResult(FALSE), B_B_Condition2(FALSE);
Var : B_C_value1(0);
Var : B_C_CondResult(FALSE), B_C_TempResult(FALSE), B_C_Condition1(FALSE);
Var : B_D_Value1(0), B_D_Value2(0), B_D_Value3(0), B_D_Value4(0), B_D_Value5(0), B_D_Value6(0), B_D_Value7(0);
Var : B_D_CondResult(FALSE), B_D_TempResult(FALSE), B_D_Condition3(FALSE);
Var : B_E_Value1(0), B_E_Value2(0), B_E_Value3(0), B_E_Value4(0), B_E_Value5(0), B_E_Value6(0), B_E_Value7(0);
Var : B_E_CondResult(FALSE), B_E_TempResult(FALSE), B_E_Condition1(FALSE);
Var : S_A_value1(0), S_A_value2(0);
Var : S_A_CondResult(FALSE), S_A_TempResult(FALSE), S_A_Condition3(FALSE);
B_A_Value1 = (highest(H,B_A_Period1)+lowest(L,B_A_Period1))/2;
B_A_Value2 = (highest(H,B_A_Period2)+lowest(L,B_A_Period2))/2;
B_A_Value3 = C;
B_A_Value4 = (B_A_Value1+B_A_Value2)/2;
B_A_Value5 = (highest(H,B_A_Period3)+lowest(L,B_A_Period3))/2;
B_A_Value6 = B_A_Value4[25];
B_A_Value7 = B_A_Value5[25];
B_B_value1 = EMA(Close,B_B_Period1)-EMA(Close,B_B_Period2);
B_B_value2 = EMA(B_B_value1,B_B_Period3);
B_C_value1 = MA(Close,B_C_Period1);
B_D_Value1 = (highest(H,B_D_Period1)+lowest(L,B_D_Period1))/2;
B_D_Value2 = (highest(H,B_D_Period2)+lowest(L,B_D_Period2))/2;
B_D_Value3 = C;
B_D_Value4 = (B_D_Value1+B_D_Value2)/2;
B_D_Value5 = (highest(H,B_D_Period3)+lowest(L,B_D_Period3))/2;
B_D_Value6 = B_D_Value4[25];
B_D_Value7 = B_D_Value5[25];
B_E_Value1 = (highest(H,B_E_Period1)+lowest(L,B_E_Period1))/2;
B_E_Value2 = (highest(H,B_E_Period2)+lowest(L,B_E_Period2))/2;
B_E_Value3 = C;
B_E_Value4 = (B_E_Value1+B_E_Value2)/2;
B_E_Value5 = (highest(H,B_E_Period3)+lowest(L,B_E_Period3))/2;
B_E_Value6 = B_E_Value4[25];
B_E_Value7 = B_E_Value5[25];
B_A_Condition1 = B_A_Value1 > B_A_Value1[1];
B_A_TempResult = B_A_Condition1;
B_A_CondResult = B_A_TempResult;
B_B_Condition2 = B_B_value1 > B_B_value2;
B_B_TempResult = B_B_Condition2;
B_B_CondResult = B_B_TempResult;
B_C_Condition1 = B_C_value1 < C;
B_C_TempResult = B_C_Condition1;
B_C_CondResult = B_C_TempResult;
B_D_Condition3 = B_D_Value1[0] >= B_D_Value2[0];
B_D_TempResult = B_D_Condition3;
B_D_CondResult = B_D_TempResult;
B_E_Condition1 = B_E_Value2 > B_E_Value2[1];
B_E_TempResult = B_E_Condition1;
B_E_CondResult = B_E_TempResult;
var : T(0);
If T <= 0 and B_A_CondResult and B_B_CondResult and B_C_CondResult and B_D_CondResult and B_E_CondResult Then
{
T = 1;
Find(1);
}
S_A_value1 = EMA(Close,S_A_Period1)-EMA(Close,S_A_Period2);
S_A_value2 = EMA(S_A_value1,S_A_Period3);
S_A_Condition3 = CrossDown(S_A_value1, S_A_value2);
S_A_TempResult = S_A_Condition3;
S_A_CondResult = S_A_TempResult;
If T == 1 and S_A_CondResult Then
{
T = -1;
}
즐거운 하루되세요
> 하늘구름 님이 쓴 글입니다.
> 제목 : 다시 한번 더 부탁드립니다.
> 안녕하세요
수식을 작성해 주셔서 감사합니다
그런데 원하는 검색이 잘안되네요
종목검색을 하면 조건이 맞으면 당일에 Onclose가 표시가 되는 것도 있고 며칠전에 (2월13일에 매수신호가 나오고 이후매도신호가 안나오면(2번사진처럼) Onclose가 표시가 안되는 것이 섞여서 검색이 됩니다.
그래서 저는 검색했을 때 당 일에 Onclose만 나온 종목만 검색이 되었으면 합니다.(1번사진처럼)그리고 2번사진은 검색이 안되었으면 합니다
따로 검색식이 있으면 좋겠습니다..(다른 전략에도 적용할 수 있게)
부탁드립니다.
파일을 첨부하오니 다시 한번 검토해주시기 바랍니다.
아래는 작성해 주신 수식입니다
Input : B_A_Period1(9), B_A_Period2(26), B_A_Period3(52);
Input : B_B_Period1(12), B_B_Period2(26), B_B_Period3(9);
Input : B_C_Period1(10);
Input : B_D_Period1(9), B_D_Period2(26), B_D_Period3(52);
Input : B_E_Period1(9), B_E_Period2(26), B_E_Period3(52);
Input : S_A_Period1(12), S_A_Period2(26), S_A_Period3(9);
Var : B_A_Value1(0), B_A_Value2(0), B_A_Value3(0), B_A_Value4(0), B_A_Value5(0), B_A_Value6(0), B_A_Value7(0);
Var : B_A_CondResult(FALSE), B_A_TempResult(FALSE), B_A_Condition1(FALSE);
Var : B_B_value1(0), B_B_value2(0);
Var : B_B_CondResult(FALSE), B_B_TempResult(FALSE), B_B_Condition2(FALSE);
Var : B_C_value1(0);
Var : B_C_CondResult(FALSE), B_C_TempResult(FALSE), B_C_Condition1(FALSE);
Var : B_D_Value1(0), B_D_Value2(0), B_D_Value3(0), B_D_Value4(0), B_D_Value5(0), B_D_Value6(0), B_D_Value7(0);
Var : B_D_CondResult(FALSE), B_D_TempResult(FALSE), B_D_Condition3(FALSE);
Var : B_E_Value1(0), B_E_Value2(0), B_E_Value3(0), B_E_Value4(0), B_E_Value5(0), B_E_Value6(0), B_E_Value7(0);
Var : B_E_CondResult(FALSE), B_E_TempResult(FALSE), B_E_Condition1(FALSE);
Var : S_A_value1(0), S_A_value2(0);
Var : S_A_CondResult(FALSE), S_A_TempResult(FALSE), S_A_Condition3(FALSE);
B_A_Value1 = (highest(H,B_A_Period1)+lowest(L,B_A_Period1))/2;
B_A_Value2 = (highest(H,B_A_Period2)+lowest(L,B_A_Period2))/2;
B_A_Value3 = C;
B_A_Value4 = (B_A_Value1+B_A_Value2)/2;
B_A_Value5 = (highest(H,B_A_Period3)+lowest(L,B_A_Period3))/2;
B_A_Value6 = B_A_Value4[25];
B_A_Value7 = B_A_Value5[25];
B_B_value1 = EMA(Close,B_B_Period1)-EMA(Close,B_B_Period2);
B_B_value2 = EMA(B_B_value1,B_B_Period3);
B_C_value1 = MA(Close,B_C_Period1);
B_D_Value1 = (highest(H,B_D_Period1)+lowest(L,B_D_Period1))/2;
B_D_Value2 = (highest(H,B_D_Period2)+lowest(L,B_D_Period2))/2;
B_D_Value3 = C;
B_D_Value4 = (B_D_Value1+B_D_Value2)/2;
B_D_Value5 = (highest(H,B_D_Period3)+lowest(L,B_D_Period3))/2;
B_D_Value6 = B_D_Value4[25];
B_D_Value7 = B_D_Value5[25];
B_E_Value1 = (highest(H,B_E_Period1)+lowest(L,B_E_Period1))/2;
B_E_Value2 = (highest(H,B_E_Period2)+lowest(L,B_E_Period2))/2;
B_E_Value3 = C;
B_E_Value4 = (B_E_Value1+B_E_Value2)/2;
B_E_Value5 = (highest(H,B_E_Period3)+lowest(L,B_E_Period3))/2;
B_E_Value6 = B_E_Value4[25];
B_E_Value7 = B_E_Value5[25];
B_A_Condition1 = B_A_Value1 > B_A_Value1[1];
B_A_TempResult = B_A_Condition1;
B_A_CondResult = B_A_TempResult;
B_B_Condition2 = B_B_value1 > B_B_value2;
B_B_TempResult = B_B_Condition2;
B_B_CondResult = B_B_TempResult;
B_C_Condition1 = B_C_value1 < C;
B_C_TempResult = B_C_Condition1;
B_C_CondResult = B_C_TempResult;
B_D_Condition3 = B_D_Value1[0] >= B_D_Value2[0];
B_D_TempResult = B_D_Condition3;
B_D_CondResult = B_D_TempResult;
B_E_Condition1 = B_E_Value2 > B_E_Value2[1];
B_E_TempResult = B_E_Condition1;
B_E_CondResult = B_E_TempResult;
Condition1 = B_A_CondResult and B_B_CondResult and B_C_CondResult and B_D_CondResult and B_E_CondResult;
if Condition1 == true and Condition1[1] == False Then
Find(1);