답변완료
알려주신 수식대로 했는데 잘 안됩니다 ^^;; 번거롭게 해드려서 대단히 죄소합니다
1분봉으로 바꿀경우 매수신호는 나오는데요, 2000년도부터 현재까지 데이터를 보려고 하니 1분봉으로 바꿀경우 데이터가 너무 커서 예스트레이더가 자꾸 멈춥니다 ^^;;
그래서 5분봉 상태에서 수식을 넣고 백테스팅을 해보고 싶은데 잘 안되네요 ^^;;
알려주신 수식 그대로 적용을 해봤는데요, 가장 최근 6월 3일 매수가 안잡힙니다
필요하시다면 ,,,메일을 알려주시면 제 수식을 전부 드리도록 하겠습니다/!
atr = DAYHIGH(1) - DAYLOW(1);
LTR = MAX(1,NOISE * ATR);
STR = MAX(1,(1-NOISE) * ATR);
VL = cap / (dayclose(1) * MUL * rt);
LUNIT = INT((CAP * RISK) / (LTR * MUL));
SUNIT = INT((CAP * RISK) / (STR * MUL));
IF LUNIT >= VL Then LUNIT1 = VL; ELSE LUNIT1 = LUNIT;
IF LUNIT * 3 <= VL THEN LUNIT2 = LUNIT1; ELSE LUNIT2 = (VL - LUNIT)/2;
IF SUNIT >= VL THEN SUNIT1 = VL; ELSE SUNIT1 = SUNIT;
IF SUNIT * 3 <= VL THEN SUNIT2 = SUNIT1 ; ELSE SUNIT2 = (VL - SUNIT)/2;
# ENTRY
L1 = DAYOPEN + LTR ;
L2 = L1 + (LTR * 0.5);
L3 = L1 + LTR;
S1 = DAYOPEN - STR;
S2 = S1 - (STR * 0.5);
S3 = S1 - STR;
NL1 = LatestExitPrice(1)+LTR;
NL2 = NL1 + LTR * 0.5;
NL3 = NL1 + LTR;
NS1 = LatestExitPrice(1)-STR;
NS2 = NS1 - STR * 0.5;
NS3 = NS1 - Str;
IF MarketPosition == 0 AND NextBarSdate != sdate Then
{
BUY("L11",ATSTOP,NextBarOpen+LTR,LUNIT1);
SELL("S11",ATSTOP,NExtBarOpen-STR,SUNIT1);
}
IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then {
IF H <= L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1,LUNIT1);
IF L >= S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1,SUNIT1);
}
# 매수 피라미딩
IF MarketPosition == 1 AND STIME <153000 and (IsEntryName("L1")==True or IsEntryName("L11") == True) THEN {
if highest(h,BarsSinceEntry) <= L2 Then
buy("L2",ATSTOP,L2,LUNIT2);
if highest(h,BarsSinceEntry) <= L1 + LTR Then
buy("L3",ATSTOP, L3,LUNIT2);
}
# 매수청산
IF MarketPosition == 1 then {
if NextBarSdate == SDATE Then
ExitLong("LS",AtStop,LatestEntryPrice - LTR);
IF NextBarSdate != SDATE Then
ExitLong("EL",ATMARKET);
}
# 매도 피라미딩
IF MarketPosition == -1 AND STIME < 153000 AND (IsEntryName("S1") == True or IsEntryName("S11") == True) THEN {
IF Lowest(L,BarsSinceEntry) >= S2 Then
SELL("S2",AtStop,S2,SUNIT2);
IF Lowest(L,BarsSinceEntry) >= S1 - STR Then
SELL("S3",AtStop,S3,SUNIT2);
}
# 매도청산
IF MarketPosition == -1 then {
IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR);
SetStopEndofday();
}
ELSE SetStopEndofday(0); #해제
# 재진입
IF MarketPosition == 0 AND BDATE == EXITDATE(1) Then {
IF MarketPosition(1) == 1 AND H <= NL1 AND NextBarSdate == sDate AND IsExitName("LS",1) == TRUE THEN BUY("NL1",ATSTOP,NL1,LUNIT1);
IF MarketPosition(1) == -1 AND L >= NS1 AND NextBarSdate == SDATE THEN SELL("NS1",ATSTOP,NS1,SUNIT1);
}
IF BDATE == EXITDATE(1) AND MarketPosition == 1 AND IsEntryName("NL1") == TRUE THEN {
IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) <= NL2 THEN BUY("NL2",ATSTOP,NL2,LUNIT2);
IF LatestEntryName == "NL2" AND HIGHEST(H,BarsSinceEntry) <= NL3 THEN BUY("NL3",ATSTOP,NL3,LUNIT2);
}
IF BDATE == ExitDate(1) AND MarketPosition == -1 AND IsEntryName("NS1") == TRUE Then {
IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) >= NS2 THEN SELL("NS2",ATSTOP,NS2,SUNIT2);
IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) >= NS3 THEN SELL("NS3",ATSTOP,NS2,SUNIT2);
}
2020-06-09
2137
글번호 139676
시스템
답변완료
어제 수식 수정부탁드려요
제가 원하는 곳에서 신호가 않나와서요
---------------------------------
그림 1에서 네모 봉을 확인후(봉의 몸통으로 이평선을 돌파한경우에만) + 아래 화살표처럼 CCI 우상향일시 동그라미 봉에서 매수가 진입이 되게 하고싶습니다 동그라미가 음봉으로 시작하면 안되고 네모봉 종가와 같거나 양봉으로 시작해야 됩니다
매도일때는 반대의경우 입니다
1번그림처럼 네모봉이 5 10 20 분봉이 돌파 해도 되지만 바로아래그림처럼 5, 10 20 60 120 모두 돌파해도 상관없습니다 5 10만 돌파하거나 5.20만 돌파 하면 안됩니다 네모 봉 몸통으로 3개이상만 순서상관없이 돌파하면 됩니다
------------------------------------
그림 4처럼 이전 봉들이 연속적으로 3개이상 돌파봉이 되었다면 진입 금지 입니다
이전 최근 5봉의 몸통으로 응봉이든 양봉이든 5 10 20분봉(순서는 상관없음) 돌파한봉이 3개이하 일경우 위와같이 봉몸통으로 돌파한봉이 최근 5개봉중 3개 이하 여야되고 5,10 20 60 120 중 순서는 상관없이 3개 봉 이하일때만 진입입니다
----------------------------------------
그림 2처럼 만든어주신 시스템 적용했는데 원하지 않는 곳에서 매매가 시작 됩니다
-----------------------------------
그림 3처럼 만약 네모 봉에서 매도 신호가 발생을했으면 동그라미 봉이 양봉으로 끝났을때 청산 원하는데 그렇게 안되는거 같아서 수정부탁드려요
---------------------------
1번시스템은 위와 같이 수정 부탁드리오 2번시스템은 위내용과 동일하고 5 10 20 60 120분봉 2개이상 몸통돌파봉을 확인하고 경우 매수일경우 매도일경우 청산도 위와 같이 해주시면됩니다
혹시 가능하다면 초보라서 시스템에 자세한 주석 부탁드립니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템식 부탁드려요
> 안녕하세요
예스스탁입니다.
1
input : StartTime(91000),EndTime(130000);
input : P1(5),P2(10),P3(20),CCIP(9);
input : 진폭봉수(5),진폭틱수(50),N(5),돌파봉수(3);
input : 익절틱수(100),손절틱수(100);
var : Tcond(false),mav1(0),mav2(0),mav3(0),CCIv(0);
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
CCIv = CCI(CCIP);
var1 = 0;
if max(C,O) > mav1 and mav1 > min(C,O) Then
var1 = var1+1;
if max(C,O) > mav2 and mav2 > min(C,O) Then
var1 = var1+1;
if max(C,O) > mav3 and mav3 > min(C,O) Then
var1 = var1+1;
if Tcond == true then
{
if MarketPosition <= 0 and
C > max(mav1,mav2,mav3) and min(mav1,mav2,mav3) > O and
CCIv > CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
buy("b",AtStop,NextBarSdate+PriceScale*1);
if MarketPosition >= 0 and
C < max(mav1,mav2,mav3) and min(mav1,mav2,mav3) < O and
CCIv < CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
sell("s",AtStop,NextBarSdate-PriceScale*1);
if MarketPosition == 1 then
{
if C < O Then
ExitLong("bx1");
}
if MarketPosition == -1 then
{
if C > O Then
ExitShort("sx1");
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStoploss(PriceScale*손절틱수,PointStop);
if EndTime > Starttime Then
SetStopEndofday(EndTime);
if EndTime < Starttime Then
{
if sdate != sdate[1] Then
SetStopEndofday(EndTime);
if bdate != bdate[1] Then
SetStopEndofday(0);
}
2
input : StartTime(91000),EndTime(130000);
input : P1(5),P2(10),P3(20),P4(60),P5(120),CCIP(9);
input : 진폭봉수(5),진폭틱수(50),N(5),돌파봉수(3);
input : 익절틱수(100),손절틱수(100);
var : Tcond(false),mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),CCIv(0);
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
mav4 = ma(C,P4);
mav5 = ma(C,P5);
CCIv = CCI(CCIP);
var1 = 0;
if C > mav1 and mav1 > O Then
var1 = var1+1;
if C > mav2 and mav2 > O Then
var1 = var1+1;
if C > mav3 and mav3 > O Then
var1 = var1+1;
if C > mav4 and mav4 > O Then
var1 = var1+1;
if C > mav5 and mav5 > O Then
var1 = var1+1;
var2 = 0;
if C < mav1 and mav1 < O Then
var2 = var2+1;
if C < mav2 and mav2 < O Then
var2 = var2+1;
if C < mav3 and mav3 < O Then
var2 = var2+1;
if C < mav4 and mav4 < O Then
var2 = var2+1;
if C < mav5 and mav5 < O Then
var2 = var2+1;
if Tcond == true then
{
if MarketPosition <= 0 and
var1 >= 2 and
CCIv > CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
buy("b",AtStop,NextBarSdate+PriceScale*1);
if MarketPosition >= 0 and
var2 >= 2 and
CCIv < CCIv[1] and
highest(h,진폭봉수) >= lowest(L,진폭봉수)+PriceScale*진폭틱수 and
AccumN(var1,N) <= 돌파봉수 then
sell("s",AtStop,NextBarSdate-PriceScale*1);
if MarketPosition == 1 then
{
if C < O Then
ExitLong("bx1");
}
if MarketPosition == -1 then
{
if C > O Then
ExitShort("sx1");
}
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStoploss(PriceScale*손절틱수,PointStop);
if EndTime > Starttime Then
SetStopEndofday(EndTime);
if EndTime < Starttime Then
{
if sdate != sdate[1] Then
SetStopEndofday(EndTime);
if bdate != bdate[1] Then
SetStopEndofday(0);
}
즐거운 하루되세요
> 가날 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드려요
> 매매 시작시간은 오전 9시 10분 종료시간은 13시
매수조건 :
전양봉이 몸통으로 5 10 20이평을(순서는 상관없음) 돌파후 양봉시작 + CCI 우상향일시
+ 이전 최근 5봉의 최저점 최고점 진폭 50틱이상 + 이전 최근 5봉의 몸통으로 응봉이든 양봉이든 5 10 20분봉(순서는 상관없음) 돌파한봉이 3개이하 일경우
매도조건 :
전음봉이 몸통으로 5 10 20이평을(순서는 상관없음) 돌파후 양봉시작 + CCI 우하향일시 매도
+ 이전 최근 5봉의 최저점 최고점 진폭 50틱이상 + 이전 최근 5봉의 몸통으로 응봉이든 양봉이든 5 10 20분봉(순서는 상관없음) 돌파한봉이 3개이하 일경우
청산조건 :
매수후 완성봉이 음봉나올때 나 수익 100틱 손절 100틱
매도후 완성봉이 양봉이 나오면 청산 수익 100틱 손절 100틱
제가 숫자로 지정한것들은 변수로 설정 부탁드립니다
-----------------------
추가적으로 위 시스템이랑 모두 같은 조건에서
전양봉이 몸통으로 5 10 20분봉(순서는 상관없음) 돌파후 양봉시작 을
->
전양봉이 몸통으로 5 ,10,20,60,120 이평선중에 ( 순서는 상관없음) 2개 분봉 돌파
음봉도 반대의 경우로 매매할수있는 시스템식도 추가적으로 부탁드려요
총2개 부탁드려요
요청이 많아서 죄송 합니다
2020-06-10
2304
글번호 139671
시스템
답변완료
문의 드립니다
안녕하세요!
1, 아래 67854번 관련 어제 아래와같은 답변을 받았는데요(수식1)
제가 바라는것은
캔들이 해당 기준선에 도달한 직후부터 이후 1-2분정도만 음성신호가 발생되는 수식이었으면합니다
가능하다면 다시 부탁드리겠습니다
2, 아래 (수식2) 에서도 음성신호 수식으로 수정 부탁드립니다
* 단, plot3 부터 plot8까지의 부분만 음성이 나오면 됩니다
자꾸 번거롭게해드려서 죄송하고 감사합니다 !!!
---------------------------------------------------------------------------------------
(수식1)
Inputs: TurnLen(9), StdLen(26), PrdLen(52);
Variables: 기준선(0);
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
Plot1(기준선, "기준선");
var1 = TimeToMinutes(stime);
var2 = TimeToMinutes(time);
if crossup(h,기준선) or CrossDown(l,기준선) Then
{
if var2 >= var1+50 then
PlaySound("C:₩예스트레이더₩data₩Sound₩60분기준선.wav");
}
(수식 2)
var : CC(0,data1),HH(0,data1),LL(0,data1),OO(0,data1);
var : C1(0,data1),H1(0,data1),L1(0,data1),O1(0,data1);
var : C2(0,data1),H2(0,data1),L2(0,data1),O2(0,data1);
CC = (data1(c)+data2(c))/2;
if data1(date != date[1]) Then
{
HH = CC;
LL = CC;
OO = (data1(O)+data2(O))/2;
O1 = OO[1];
O2 = O1[1];
C1 = CC[1];
C2 = C1[1];
H1 = HH[1];
H2 = H1[1];
L1 = LL[1];
L2 = L1[1];
}
if CC > HH Then
HH = CC;
if CC < LL Then
LL = CC;
plot1(HH,"중간값 중 당일 최고값");
plot2(LL,"중간값 중 당일 최저값");
plot3(C1,"전일종가합/2");
plot4(H1,"전일 중간값 중 당일 최고값");
plot5(L1,"전일 중간값 중 당일 최저값");
plot6(C2,"전전일종가합/2");
plot7(H2,"전전일 중간값 중 당일 최고값");
plot8(L2,"전전일 중간값 중 당일 최저값");
2020-06-10
2050
글번호 139670
지표