답변완료
문의드립니다.
늘 고맙습니다.
1. 시간제한을 여러 구간대로 나눠서 사용하려고 하는데요.
어제 가르쳐주신 것을 가지고 응용을 해보았습니다.
그런데 Tcond1과 4,5는 제대로 색깔이 나오는데요.
그런데 2에는 휜색이 나오지 않고 아무색도 안나오고, 3번구간에 노란색이 아닌 휜색이 나옵니다.
복사해서 그대로 한다고 했는데 뭐가 잘못된 건지 모르겠네요.
도움 부탁드립니다.
input : StartTime1(180000),EndTime1(073000);
input : StartTime2(073000),EndTime2(083000);
input : StartTime3(083000),EndTime3(090000);
input : StartTime4(090000),EndTime4(150000);
input : StartTime5(150000),EndTime5(160000);
var : Tcond1(false),Tcond2(false),Tcond3(false),Tcond4(false),Tcond5(false);
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond1 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
{
Tcond1 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime2) or
(sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then
{
Tcond2 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime2) or
(sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then
{
Tcond2 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime3) or
(sdate == sdate[1] and stime >= StartTime3 and stime[1] < StartTime3) Then
{
Tcond3 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime3) or
(sdate == sdate[1] and stime >= EndTime3 and stime[1] < EndTime3) Then
{
Tcond3 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime4) or
(sdate == sdate[1] and stime >= StartTime4 and stime[1] < StartTime4) Then
{
Tcond4 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime4) or
(sdate == sdate[1] and stime >= EndTime4 and stime[1] < EndTime4) Then
{
Tcond4 = False; #프리장
}
#############################################################################
if (sdate != sdate[1] and stime >= StartTime5) or
(sdate == sdate[1] and stime >= StartTime5 and stime[1] < StartTime5) Then
{
Tcond5 = true; #프리장
}
if (sdate != sdate[1] and stime >= EndTime5) or
(sdate == sdate[1] and stime >= EndTime5 and stime[1] < EndTime5) Then
{
Tcond5 = False; #프리장
}
#############################################################################
if tcond1 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Gray);
TL_SetSize(Value98,1);
}
if tcond2 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,White);
TL_SetSize(Value98,1);
}
if tcond3 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Yellow);
TL_SetSize(Value98,1);
}
if tcond4 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Red);
TL_SetSize(Value98,1);
}
if tcond5 Then
{
value98 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(Value98,Lime);
TL_SetSize(Value98,1);
}
2. 그리고 예를 들어 083100 시간의 캔들만 지정해서 사용하려면 어떻게 해야하나요?
083100봉에서 50포 이상의 양봉이 나왔다면~~~
2024-05-28
724
글번호 180056
시스템
답변완료
수식이 문제가 있는거 같아 재문의 드립니다
이하 작성해주신 수식입니다
input : P1(5),P2(10),P3(20),P4(50),p5(100);
var : cnt(0),mx(0),mn(0),t(0);
Array : mav[10](0);
mav[1] = ma(C,P1);
mav[2] = ma(C,P2);
mav[3] = ma(C,P3);
mav[4] = ma(C,P4);
mav[5] = ma(C,P5);
mx = 0;
mn = 0;
For cnt = 1 to 5
{
if max(C,O) >= mav[cnt] and mav[cnt] >= min(C,O) Then
{
if mx == 0 or (mx > 0 and mav[cnt] > mx) Then
mx = mav[cnt];
if mn == 0 or (mn > 0 and mav[cnt] < mn) Then
mn = mav[cnt];
}
}
if mav[3] > mav[3][1] Then
T = 1;
if mav[3] < mav[3][1] Then
T = -1;
if C > mav[3] and !(T == -1 and (mav[3][1]-mav[3])*1.5 > C-mav[3]) Then
{
if mx > 0 Then
{
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
}
Else
Buy("b3");
if MarketPosition <= 0 Then
value1 = lowest(L,2);
}
if C < mav[3] and !(T == 1 and (mav[3]-mav[3][1])*1.5 > mav[3]-C) Then
{
if mn > 0 Then
{
var2 = Ceiling(mn/PriceScale)*PriceScale;
if NextBarOpen > var2 Then
Sell("s1",AtStop,var2);
Else
Sell("s2",AtLimit,var2);
}
Else
Sell("s3");
if MarketPosition >= 0 Then
value2 = highest(H,2);
}
if value1 > 0 Then
ExitLong("bx",AtStop,value1-PriceScale*1);
if Value2 > 0 Then
ExitShort("sx",AtStop,Value2+PriceScale*1);
여기서부턴 문의사항입니다
첫번째 사진을 보시면 b2 매수신호가 왜 등장한지 모르겠습니다.
원글에
#
3. 20선 위에서 마감한 a봉 이후 다음봉부터, a봉과 a봉 이전1봉의 저가중 더 낮은 저가를 1틱 더 낮은 가격으로 돌파시 그 가격에 매수청산과 매도진입
4. 20선 아래에서 마감한 a봉 이후 다음봉부터, a봉 a봉 이전1봉의 고가중 더 높은 고가를 1틱 더 높은 가격으로 돌파 그 가격에 매도청산과 매수진입
라고 요청을 드렸으니 왼편 b3 매수신호 이후 bx로 b3매수한 계약의 매수청산과 동시에 매도진입을 해야되는데 b2라는 매수진입이 발생하는 상황입니다.
##
그리고 아래는 수정 요청사항입니다.
input : 배수(1.5), 봉수(2), 틱수(1);
var : cnt(0),mx(0),mn(0),t(0);
Array : mav[10](0);
mav[1] = ma(C,5);
mav[2] = ma(C,10);
mav[3] = ma(C,20);
mav[4] = ma(C,50);
mav[5] = ma(C,100);
mx = 0;
mn = 0;
For cnt = 1 to 5
{
if max(C,O) >= mav[cnt] and mav[cnt] >= min(C,O) Then
{
if mx == 0 or (mx > 0 and mav[cnt] > mx) Then
mx = mav[cnt];
if mn == 0 or (mn > 0 and mav[cnt] < mn) Then
mn = mav[cnt];
}
}
if mav[3] > mav[3][1] Then
T = 1;
if mav[3] < mav[3][1] Then
T = -1;
if C > mav[3] and !(T == -1 and (mav[3][1]-mav[3])*배수 > C-mav[3]) Then
{
if mx > 0 Then
{
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
}
Else
Buy("b3");
if MarketPosition <= 0 Then
value1 = lowest(L,봉수);
}
if C < mav[3] and !(T == 1 and (mav[3]-mav[3][1])*배수 > mav[3]-C) Then
{
if mn > 0 Then
{
var2 = Ceiling(mn/PriceScale)*PriceScale;
if NextBarOpen > var2 Then
Sell("s1",AtStop,var2);
Else
Sell("s2",AtLimit,var2);
}
Else
Sell("s3");
if MarketPosition >= 0 Then
value2 = highest(H,봉수);
}
if value1 > 0 Then
ExitLong("bx",AtStop,value1-PriceScale*틱수);
if Value2 > 0 Then
ExitShort("sx",AtStop,Value2+PriceScale*틱수);
이평선을 변수로 두고 싶지 않아 빼버렸고 배수는 맞는거 같고, 봉수, 틱수라고 선언한 부분이 제가 원문에
#
3. 20선 위에서 마감한 a봉 이후 다음봉부터, a봉과 a봉 이전1봉의 저가중 더 낮은 저가를 1틱 더 낮은 가격으로 돌파시 그 가격에 매수청산과 매도진입
#
여기에서 제가 선언한 "봉수"가 a봉과 이전봉까지 봉 두개 카운트하는부분, "틱수"라고 선언한 부분이 "1틱 더 낮은 가격" 이 맞을까요? 검수좀 부탁드립니다.
그리고 첫번째 원하는 수정사안입니다
b3, s3가 봉안에 이평선이 없을경우 매수,매도 하는 식인데
그냥 20선 위, 아래에서 가격이 지속되는 두번째 봉에서 매수, 매도하는 식으로 바꾸면 두번째 봉에서 b2,s2와 충돌을 일으킬까요?
두번째 봉에서 b2,s2가 봉 움직임중에 체결되는 감시형 주문인데 if문과 동 시점에 적용되면 감시가 실패했을경우 후적용되는 방식이라면 그렇게 바꿔주세요.
두번째 수정사안입니다.
저렇게 수정된 b3,s3 는 b3x,s4 s3x,b4 로 청산과 진입이 동시에 이루어지게 다른 조건을 설정하려고 합니다.
b3,s3에 한정해서 진입한 봉과 직전봉 두봉 전체의 고가+저가/2 가격을 하향돌파할경우 b3x로 매수청산과 s4매도진입, 상향돌파할경우는 s3x로 매도청산과 b4매수진입
b4와 s4는 손절과 익절을 틱수로 설정할 수 있게 부탁드립니다.
세번째 수정사안입니다.
bx,sx로 청산과 진입을 동시에 했을때, 항상 손실을 보면서 청산과 반대방향으로 진입하는 조건인데 손실틱수를 계산한 후, 청산 익절틱수를 손실틱수 대비 퍼센티지로 변수 설정 부탁드립니다.
오늘도 좋은하루 되세요. 감사합니다.
2024-05-27
712
글번호 180050
시스템