답변완료
수정의뢰 드립니다
안녕하세요!
만들어 주신 지표를 적용해 보앗는데 첨부그림처럼 정체불명의 많은 선들이 생성이 됩니다!
왜 이런 현상이 나타나는지 반복해서 적용해 보아도 지워지지가 않습니다!
그냥 외부변수를 적용해서 선의 색상이나 굵기, 텍스트 크기등을 적용할 수 있게 바꾸어 주세요!
v1, v2, v3 이렇게 3가지 가격선만 나타나게 해주세요!
(data1 현재가+ data2 현재가 / 2)
(data1 현재가+ data3 현재가 / 2)
(data1 현재가+ data4 현재가 / 2)
자꾸 번거롭게 해드리는것 같아서 죄송합니다!
var : cnt(0,Data1);
var : v1(0,Data1),v2(0,Data1),v3(0,Data1),v4(0,Data1);
var : v5(0,Data1),v6(0,Data1),v7(0,Data1),v8(0,Data1);
var : tl1(0,Data1),tl2(0,Data1),tl3(0,Data1),tl4(0,Data1);
var : tl5(0,Data1),tl6(0,Data1),tl7(0,Data1),tl8(0,Data1);
var : tx1(0,Data1),tx2(0,Data1),tx3(0,Data1),tx4(0,Data1);
var : tx5(0,Data1),tx6(0,Data1),tx7(0,Data1),tx8(0,Data1);
#(Data1+Data2)/2;
v1 = (Data1(c)+Data2(c))/2;
#(Data1+Data3)/2;
v2 = (Data1(c)+Data3(c))/2;
#(Data1+Data4)/2;
v3 = (Data1(c)+Data4(c))/2;
#Data1 시가
v4 = Data1(DayOpen);
#Data1 전일고가
v5 = Data1(DayHigh(1));
#Data1 전일저가
v6 = Data1(DayLow(1));
#Data3 당일고가
v7 = Data3(highD(0));
#Data3 당일저가
v8 = Data3(LowD(0));
For cnt = 0 to 20
{
Text_Delete(tx1[cnt]);
Text_Delete(tx2[cnt]);
Text_Delete(tx3[cnt]);
Text_Delete(tx4[cnt]);
Text_Delete(tx5[cnt]);
Text_Delete(tx6[cnt]);
Text_Delete(tx7[cnt]);
Text_Delete(tx8[cnt]);
TL_Delete(tl1[cnt]);
TL_Delete(tl2[cnt]);
TL_Delete(tl3[cnt]);
TL_Delete(tl4[cnt]);
TL_Delete(tl5[cnt]);
TL_Delete(tl6[cnt]);
TL_Delete(tl7[cnt]);
TL_Delete(tl8[cnt]);
}
tx1 = Text_New(NextBarSdate,NextBarStime,v1,NumToStr(v1,2));
tx2 = Text_New(NextBarSdate,NextBarStime,v2,NumToStr(v2,2));
tx3 = Text_New(NextBarSdate,NextBarStime,v3,NumToStr(v3,2));
tx4 = Text_New(NextBarSdate,NextBarStime,v4,NumToStr(v4,2));
tl1 = TL_New(sDate,sTime,v1,NextBarSdate,NextBarStime,v1);
tl2 = TL_New(sDate,sTime,v2,NextBarSdate,NextBarStime,v2);
tl3 = TL_New(sDate,sTime,v3,NextBarSdate,NextBarStime,v3);
tl4 = TL_New(sDate,sTime,v4,NextBarSdate,NextBarStime,v4);
TL_SetColor(tl1,RED);
TL_SetColor(tl2,BLUE);
TL_SetColor(tl3,RED);
TL_SetColor(tl4,MAGENTA);
TL_SetColor(tl5,WHITE);
TL_SetColor(tl6,WHITE);
TL_SetColor(tl7,LGREEN);
TL_SetColor(tl8,LGREEN);
TL_SetExtLeft(TL1,true);
TL_SetExtLeft(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtLeft(TL4,true);
TL_SetExtRight(TL1,true);
TL_SetExtRight(TL2,true);
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
2021-04-23
1245
글번호 148323
지표
답변완료
추가 부탁드려요
답변 감사드립니다
작성해 주신 수식에 아래와 같이 최초에 있던 '청산과 익절 시 매매정지' 조건이 삭제되어버렸어요
if TotalTrades > TotalTrades[1] Then
{
Condition4 = False;
if IsExitName("xl",1) == true or IsExitName("xs",1) == true or IsExitName("stopprofittarget",1) == true then
Condition4 = true;
매매가 정지되는 조건은 1. 3번 연속 손실 2. 청산 시 3. 익절 시 4. 로스컷 일 때 입니다
부탁드립니다.
------------------------
안녕하세요
예스스탁입니다.
1
if sTime > starttime or sTime < Endtime and marketposition == 0 Then
if문에 or와 and가 같이 사용되면 ()로 우선순위를 지정해 주셔야 합니다.
작성하신 식은 marketposition == 0이 stime < Endtime에만 속하게 되어
매매정지가 제대로 동작하지 않습니다.
아래와 같이 시간제한 조건을 ()로 묶어주셔야 신호가 항상 무포지션에만 동작하게 됩니다.
if (sTime > starttime or sTime < Endtime) and marketposition == 0 Then
기존식을 청산후 매매정지 이후에 다시 신호가 발생하게 간단히 수정하면 아래와 같습니다.
input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2);
var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0);
Array : VV[20](0);
var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0),Lss(0),XTM(0);
Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2];
Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2];
if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then
{
var1 = var1+1;
LL = L[2];
CL = C;
VV[0] = 1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
else
{
if L < LL Then
{
var1 = 0;
}
}
if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then
{
var2 = var2+1;
HH = H[2];
CS = C;
VV[0] = -1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
Else
{
if H > HH Then
{
var2 = 0;
}
}
#전봉과 현재봉의 영업일이 다르면 당일청산조건
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
Condition4 = False;
Lss = 0;
XTM = 0;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
}
if TotalTrades > TotalTrades[1] Then
{
if PositionProfit(1) < 0 Then
Lss = Lss+1;
Else
Lss= 0;
XTM = TM[BarsSinceExit(1)];
}
b_vv = vv[4]+vv[3]+vv[2]+vv[1];
최고점 = highest(h,진입);
최저점 = lowest(l,진입);
if (sTime > starttime or sTime < Endtime) and marketposition == 0 and TM >= XTM+매매정지 Then
{
if (b_vv == lb and sum == lp) Then
{
Buy("b");
}
if (b_vv == sb and sum == sp) Then
{
Sell("s");
}
}
if MarketPosition(0) > 0 and C < LL Then
ExitLong("xl");
if MarketPosition(0) < 0 and C > HH Then
ExitShort("xs");
#타겟청산
SetStopProfittarget(익절,pointstop);
SetStopLoss( 손절 ,PointStop);
2
3연속 손실시에만 매매정지후 진입은 아래와 같습니다.
input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2);
var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0);
Array : VV[20](0);
var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0),Lss(0),XTM(0);
Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2];
Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2];
if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then
{
var1 = var1+1;
LL = L[2];
CL = C;
VV[0] = 1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
else
{
if L < LL Then
{
var1 = 0;
}
}
if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then
{
var2 = var2+1;
HH = H[2];
CS = C;
VV[0] = -1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
Else
{
if H > HH Then
{
var2 = 0;
}
}
#전봉과 현재봉의 영업일이 다르면 당일청산조건
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
Condition4 = False;
Lss = 0;
XTM = 0;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
}
if TotalTrades > TotalTrades[1] Then
{
if PositionProfit(1) < 0 Then
Lss = Lss+1;
Else
Lss= 0;
if Lss == 3 Then
{
XTM = TM[BarsSinceExit(1)];
}
}
b_vv = vv[4]+vv[3]+vv[2]+vv[1];
최고점 = highest(h,진입);
최저점 = lowest(l,진입);
if (sTime > starttime or sTime < Endtime) and marketposition == 0 and TM >= XTM+매매정지 Then
{
if (b_vv == lb and sum == lp) Then
{
Buy("b");
}
if (b_vv == sb and sum == sp) Then
{
Sell("s");
}
}
if MarketPosition(0) > 0 and C < LL Then
ExitLong("xl");
if MarketPosition(0) < 0 and C > HH Then
ExitShort("xs");
#타겟청산
SetStopProfittarget(익절,pointstop);
SetStopLoss( 손절 ,PointStop);
즐거운 하루되세요
> 산이보리 님이 쓴 글입니다.
> 제목 : 수식 의뢰 부탁드립니다.
> 안녕하세요
1. 아래 수식에서 3연속 손실이 발생할 경우 N분 매매정지를 할 수 있도록 수정 부탁드립니다
2. 그리고 매매가 끝나면 지정한 시간만큼 매매중지되어야 하는데 위 그림처럼 포지션 청산되자마자 다시 진입과 청산이 이루어집니다
항상 감사합니다
input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2);
var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0);
Array : VV[20](0);
var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0);
Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2];
Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2];
if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then
{
var1 = var1+1;
LL = L[2];
CL = C;
VV[0] = 1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
else
{
if L < LL Then
{
var1 = 0;
}
}
if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then
{
var2 = var2+1;
HH = H[2];
CS = C;
VV[0] = -1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
Else
{
if H > HH Then
{
var2 = 0;
}
}
#전봉과 현재봉의 영업일이 다르면 당일청산조건
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
Condition4 = False;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
}
if TotalTrades > TotalTrades[1] Then
{
Condition4 = False;
if IsExitName("xl",1) == true or IsExitName("xs",1) == true or IsExitName("stopprofittarget",1) == true then
Condition4 = true;
}
b_vv = vv[4]+vv[3]+vv[2]+vv[1];
최고점 = highest(h,진입);
최저점 = lowest(l,진입);
if sTime > starttime or sTime < Endtime and marketposition == 0 Then
{
if (b_vv == lb and sum == lp) Then
{
if condition4 == False Then
Buy("b");
if (condition4 == true and TM >= TM[BarsSinceExit(1)]+매매정지) Then
Buy("b1");
}
if (b_vv == sb and sum == sp) Then
{
if condition4 == False Then
Sell("s");
if (condition4 == true and TM >= TM[BarsSinceExit(1)]+매매정지) Then
Sell("s1");
}
}
if MarketPosition(0) > 0 and C < LL Then
ExitLong("xl");
if MarketPosition(0) < 0 and C > HH Then
ExitShort("xs");
#타겟청산
SetStopProfittarget(익절,pointstop);
SetStopLoss( 손절 ,PointStop);
2021-04-23
1217
글번호 148322
시스템
답변완료
안녕하세요?
안녕 하세요?
수식 작성중 어려움이 있어 질문드립니다.
사진에 노란색부분에 진입을 한 상황으로 가정하고 설명 드리겠습니다.
진입시 HHH,LLL 파동의 고,저를 변수에 저장 했습니다.
if MarketPosition >= 0 then
{
HHH = 고[1,1];
LLL = 저[1,1];
P7 = tx7+((tx9-tx10)*AAA);
}
그이후 녹색상황으로 진행시 고,저가 변경됨니다.
녹색상황으로 진행되더라도 진입시점의 HHH,LLL의 변수가
변경되지 않도록 수식이 가능 할까요?
가능하다면 수식 작성 부탁드립니다.
감사합니다.
------------------------------------------------------------------
input : AAA(0.618);
var : HHH(0),LLL(0),P8(0),P7(0),P6(0),P3(0),P2(0),P1(0);
If Value2 == 1 and tx7 < L and 고[2,1] <고[1,1] Then
{
Buy("tx7",AtLimit,tx7);
ExitLong("p7",AtLimit,P7,"tx7");
if MarketPosition >= 0 then
{
HHH = 고[1,1];
LLL = 저[1,1];
P7 = tx7+((tx9-tx10)*AAA);
}
}
if 저[2,1] >=L Then
{
ExitLong("x");
}
2021-04-23
1146
글번호 148321
시스템
답변완료
수정 의뢰 드립니다!
안녕하세요!
아래는 어제 만들어 주신 지표인데 빠트린 부분이 있어서 제가 직접 한번 만들어 보았는데
데이터가 안불러와지는 걸 확인했습니다.
1. 제가 원하는건 data1 = 콜427 현재가 라고 가정 했을때
data2 = 풋430 현재가 / data3 = 풋427 현재가 / data4 = 풋425 현재가 입니다.
즉, 수식조건은 = (data1 현재가+ data2 현재가 / 2) ,
(data1 현재가+ data3 현재가 / 2) ,
(data1 현재가+ data4 현재가 / 2)
이렇게 3종류선 + 시가 + 전일 고가와 저가, 당일 상대등가격의 고가와 저가를 선으로 나타내고 싶습니다.
2. 그리고 챠트에 어제 날짜의 선들도 계속 화면에 나타나서 복잡한데, 당일의 선들만
화면에 표시 되면 매매에 많은 도움이 될것 같습니다!
수정 좀 부탁드립니다!
var : cnt(0,Data1);
var : v1(0,Data1),v2(0,Data1),v3(0,Data1),v4(0,Data1);
var : tl1(0,Data1),tl2(0,Data1),tl3(0,Data1),tl4(0,Data1);
var : tx1(0,Data1),tx2(0,Data1),tx3(0,Data1),tx4(0,Data1);
#(Data1+Data2)/2;
v1 = (Data1(c)+Data2(c))/2;
#(Data1+Data3)/2;
v2 = (Data1(c)+Data3(c))/2;
#(Data1+Data4)/2;
v3 = (Data1(c)+Data4(c))/2;
#(Data1+Data4)/2;
v4 = (Data1(c)+Data5(c))/2;
For cnt = 0 to 10
{
Text_Delete(tx1[cnt]);
Text_Delete(tx2[cnt]);
Text_Delete(tx3[cnt]);
Text_Delete(tx4[cnt]);
TL_Delete(tl1[cnt]);
TL_Delete(tl2[cnt]);
TL_Delete(tl3[cnt]);
TL_Delete(tl4[cnt]);
}
tx1 = Text_New(NextBarSdate,NextBarStime,v1,NumToStr(v1,2));
tx2 = Text_New(NextBarSdate,NextBarStime,v2,NumToStr(v2,2));
tx3 = Text_New(NextBarSdate,NextBarStime,v3,NumToStr(v3,2));
tx4 = Text_New(NextBarSdate,NextBarStime,v4,NumToStr(v4,2));
tl1 = TL_New(sDate,sTime,v1,NextBarSdate,NextBarStime,v1);
tl2 = TL_New(sDate,sTime,v2,NextBarSdate,NextBarStime,v2);
tl3 = TL_New(sDate,sTime,v3,NextBarSdate,NextBarStime,v3);
tl4 = TL_New(sDate,sTime,v4,NextBarSdate,NextBarStime,v4);
TL_SetColor(tl1,BLACK);#콜427+ 풋430/2
TL_SetColor(tl2,BLUE);#콜427+풋427/2 중심가
TL_SetColor(tl3,BLACK);#콜427+풋425/2
TL_SetColor(tl4,BLACK);##콜427+풋432/2
TL_SetExtLeft(TL1,true);
TL_SetExtLeft(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtLeft(TL4,true);
TL_SetExtRight(TL1,true);
TL_SetExtRight(TL2,true);
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
Plot1(DayOpen);
plot2(data3(highd(1)));//타종목의 전일 고가
plot3(data3(LowD(1)));//타종목의 전일 저가
Plot4((DayHigh+DayLow)/2);
Plot5(DayHigh(1));
Plot6(DayLow(1));
2021-04-23
1116
글번호 148307
지표