답변완료
지표식,,검색식.. 종목검색
a=avg(c,5);
b=highest(a,15)==a;
M=valuewhen(1,b,a);
a=avg(c,1);
b=lowest(a,15)==a;
N=valuewhen(1,b,a);
(M+N)*1
위는 키움수식 임니다 이를 예스스탁 에서 1, 지표식과 2 ,검색식 3 ,종목검색 으로어떻게
표현되는지 궁금합니다 . 항상 선언부와 마지막 IF 문장이 자신없어서요,
감사합니다.
2024-05-19
862
글번호 179683
지표
답변완료
중간값 라인을 계단식이 아닌 수평선으로 나타내기
input : 시가(DayOpen), 고가(DayHigh), 저가(DayLow) ;
var : 중간(0) ;
중간 = (고가+저가)/2 ;
plot1 (중간,"중간값");
분봉차트에서 당일의 고가 저가 라인을 그리고 중간값을 작성하면 그림1 파일처럼 중간값(검정색라인)이 계단식으로 나타나게 됩니다.
이 중간값 라인을 그림2에서와 같이 직선의 수평라인(밤색선)으로 나타나게 하려면, 수식을 어찌 변경 해야 할까요 ?
2024-05-19
878
글번호 179682
지표
답변완료
87124 관련 재질문드립니다
항상 수고가 많으십니다.
재질문드립니다 -----------------------------------------------------------------------
87124 에서 제가 원하는 결과가 나오지 않아서 다시 질문드립니다.
이번에는 이렇게 해주시면 고맙겠습니다.
선물 가격은 8:45 부터 들어오지만 개인의 거래소 가격은 9:00 부터 들어오므로
9:00시 부터 11:00 까지에서 개인의 최고매수금액 - 최고매수금액일때 선물현재가
9:00시 부터 11:00 까지에서 개인의 2번째 최고매수금액- 2번째최고매수금액일때 선물현재가
9:00시 부터 11:00 까지에서 개인의 최고매도금액 - 최고매도금액일때 선물현재가
9:00시 부터 11:00 까지에서 개인의 2번째 최고매도금액 - 2번째최고매도금액일째 선물현재가
여기서 주의 할 점은 최고매도금액 < 2번째 최고매도금액 이며
최고매수금액 > 2번째최고 매수금액 이라는 점입니다.
제가 말씀드리는 2번째최고매도금액이라는 말과 2번째최고매수금액이라는 의미가
제가 의도하는 정확한 의미전달하기 위해서 수치로 예를 들어 보겠습니다.
100 -> 200 -> 300 -> 200 -> 300 -> 500 -> 350 -> 300 -> 400 -> 300
^ ^
최고매수금액 2번째최고매수금액
-100 -> -200 -> -300 -> -200 -> -300 -> -500 -> -350 -> -300 -> -400 -> -300
^ ^
최고매도금액 2번째최고매도금액
위와 같은 상황을 확인해야하니 신호는 11시 이후에 나오겠습니다.
즉,
input : 당일최대진입횟수(1);
var : T1(0), count(0);
if Data1(DayIndex == 0) Then
{
변수 초기화 ...
T1 = TotalTrades;
}
if Data1(DayIndex > 0 and stime < 152000) Then
{
~~~
~~~
//------ 진입횟수제한식 ----------------------------------------------------
if MarketPosition == 0 Then
{
count = TotalTrades - T1;
}
Else
{
count = TotalTrades - T1 + 1;
}
//--------------------------------------------------------------------------
if stime >= 090000 and stime <= 110000 then
{
상기 조건을 확인하는 전략식
}
if count < 당일최대진입횟수 Then
{
if stime > 110000 then
{
if 최고매도금액일때 선물현재가 > 2번째최고매도금액일때 선물현재가 then
{
buy("b1")
}
if 최고매수금액일때 선물현재가 < 2번째최고매수금액일때 선물현재가 then
{
sell("b1")
}
}
} // end of count < 당일최대진입횟수
} // end of 전략식
죄송하지만, 위 서식대로 수식을 부탁드리며,
상기 서식이 잘못되었다면 임의로 하셔도 괜찮습니다.
또한, 각 수식에 대한 주석도 첨부하여 주셨으면 고맙겠습니다.
------------------------------------------------------------------------------------
감사합니다.
항상 좋은 일만 생기시길를 ~~
2024-05-19
789
글번호 179681
시스템
답변완료
진입가격별 청산수식
진입가격에 따른 청산수식 작성해보았습니다.
바른지요?
#포지션 있을 때
if MarketPosition != 0 Then
{
if Entryprice >= dayopen and Entryprice < dayopen+1.25 Then
{
SetStopLoss(1,PointStop);
SetStopTrailing(2,0,PointStop,1);
}
Else if Entryprice >= dayopen+1.25 and Entryprice < dayopen+2.5 Then
{
SetStopLoss(1.5,PointStop);
SetStopTrailing(2.5,0,PointStop,1);
}
Else
{
SetStopLoss(2,PointStop);
SetStopTrailing(3,0,PointStop,1);
}
}
Else #무포지션이면 해제
{
SetStopLoss(0);
SetStopTrailing(0,0);
}
2024-08-01
680
글번호 179680
시스템
답변완료
문의드립니다.
늘 고맙습니다.
가르쳐주신 것을 보고 또 보면서 뭐에 막혀서 진도가 못나가고 있는지 조금은 알 거 같습니다.
그런데 말씀해주실 때는 알 거 같은데 아직도 헤매고 있는 부분이 있어 가르침을 부탁드립니다.
*** 원격준비하고 있겠습니다.
제 차례가 되면 전화드리겠습니다.
A. 금일 현재봉에서
전일고가, 전일저가와의 거리를 찾고 싶습니다.
전일고가 발생후 전일저가가 발생하고 금일 현재가가 나온건지 반대인건지 비교하고 싶어서입니다.
가르쳐주신 돌파자리 찾는 방법을 응용해서 만들어 봤는데 맞는지 모르겠습니다.
검토 부탁드립니다. DL과 DH를 비교해서 돌려보면 맞게 나오는 것 같긴 합니다.
### 전일고가, 전일저가와의 거리 비교
var :dh(-1),dL(-1),Dhi(0),DLi(0);
# 전일고가와 전일저가는 반드시 있는 값인데-1을 써도 되는건지???
if DayHigh(1)==H Then
dh=0;
dhi=Index;
if dh==1 and dhi>0 and DayHigh(1)!=H Then
dh=dh+1;
# 전일고가 찍은 자리와의 거리
#####################
if DayLow(1)==L Then
dL=0;
dLi=Index;
if dL==0 and dLi>0 and DayLow(1)!=L Then
dL=dL+1;
# 전일저가 찍은 자리와의 거리
위의 값을 저장해놓고 다른 조건식에서 아래와 같이 사용하려고 합니다.
if dL<dH then ## 전일고점을 먼저 찍은 후 저점을 찍었다면.
B. 가르침에 의거해서 진입과 청산의 기본적인 틀을 만들어보았습니다.
# 종가진입했을 때 청산법은 이해가 다 되었습니다. 그래서 생략. 진입캔들에서만 급등락시 청산이 아니라 이후 시간이 지나도 하나의 캔들에서 급등락이 나오면 청산이 되는 방식이더군요.
# 청산이 어떻게 될 지 모르니 경우의 수를 일단 3가지 방식으로 병기해서 작성하고 나열해놓았습니다.
# 여기서 제가 아직 해결하지 못한 것이 아래 진입식을 보면 조건이 상태를 나타내는 방식입니다. 이때는 "가" 상태였다가 "나" 상태로 바뀌고 "다" 상태로 바뀌면 문제없이 진입이 됩니다.
그런데 "가" - "나" - "가" - "다" 이런 식으로 전개가 되게 되면 최종적인 "다"로 넘어가지 않습니다. 설명을 해주셨는데 아직 제 꺼로 못만들었습니다.
# 또 한가지는 청산식 마지막 방식을 보면 조건이 상태가 아니라 사건 발생으로 되어 있습니다.
사건발생으로 조건을 만들어서 돌려보면 단절이 되어 끝까지 이어지질 않습니다. 이경우 처리를 어떻게 해야 하는지요? countif 함수를 써서 사건이 있었다. 로 만들어야 되나요? 다른 방법은 뭐가 있는지요?
# 또다른 한가지는 진입과 청산이후 초기화 하는 방법입니다.
진입에서는 진입방법이 한가지니까 초기화를 진입실행 바로 다음에 한번만 해주면 될 거 같은데요. 진입후 즉시 청산 위의 자리에 해주나요? 아래 t1=0; 해준것처럼요.
t1만 초기화 해주면 되나요? 다른 값들도 초기화 해주어야 되나요? 돌려봤을 땐 t1만 해줘도 될 것 같긴 한데 경우의 수를 다 알수가 없어서요.
그리고 청산식에서 초기화는 맨 아래 한번만 해주면 되나요? 아니면 아래식처럼 각각 청산실행자리 아래에 모두 해주어야 되나요?
# 진입과 청산이후 초기화를 해주면 재진입을 제한하기 위해 사용했던 condithon1 을 사용하지 않아도 되나요?
1. 진입
가. if 이평60>이평120 and 이평20>이평60 and 이평5<이평20 then
{
t1=1;
i1=index;
}
나. if t1==1 and i1>0 and 이평5>이평20 then
{
t1=2
i2=index;
}
다. if t1==2 and i2>0 then
{
buy("bb");
t1=0;
# onclose일때 청산법 생략
}
if MarketPosition == 1 Then
{
# atlimit,atstop일때 청산법 생략
t1=0;
}
if MarketPosition == 1 Then
# 위 2가지가 아닌 경우 청산법
{
if crossup(이평5,이평240) then
{
k1=1;
r1=index;
}
if crossdown(이평5,이평20) then
{
k1=2;
r2=index;
}
if crossup(이평5,이평20) then
{
k1=3;
r3=index;
}
if k1==3 and re>0 then
exitlong();
k1=0;
{
2024-05-20
693
글번호 179679
시스템