첨부 이미지
그림1
늘 고맙습니다.
복많이 받으실겁니다.
1. 위에 그림은 좌측 노란색에서 진입이 됐는데 우측상단 노란색에서 청산이 됐습니다.
# 의도했던 로직은 동그라미 부분에서 청산이었습니다.
# 며칠전 가르쳐주신 문장을 다시 적고 해석을 해보겠습니다. 오류수정 부탁드립니다.
# 아직 적어주신 문장도 해석능력이 부족합니다. 이해 부탁드립니다. 주석을 달아주시면 더욱 좋겠습니다.
if MarketPosition == 1 Then
{ #1 진입후 100캔들의 고점을 돌파했다면 Condition1에 참을 할당하고 var1에 진입이후 경과된 봉갯수 할당
if H > highest(H,100)[1] Then
{
Condition1 = true;
var1 = BarsSinceEntry;
}
#1이 참이고 60이평 이탈시 청산. *** 고점 돌파후 60이평 데드면 청산. 동그라미 두번째에서 청산되어야 됩니다..
if Condition1 == true Then #2
{
if CrossDown(c,ma(c,60)) Then
ExitLong("시험청산1");
}
#1이 참이고 20평 이탈시엔 20이평 이탈을 Value2에 할당하고, value1에는 진입이후 경과된 봉갯수 할당하고
if CrossDown(c,ma(C,20)) Then
{
Value2 = Value2+1;
value1 = BarsSinceEntry;
*** 원래 의도 : 20이평 데드후 60이평을 데드 하지 않고 다시 고점을 돌파한다면 이후 20이평 데드시 청산한다.
# *** 여기 문장은 잘 해석이 안됩니다. 20이평 데드가 2번이상이고 20이평 데드때 진입이후 봉갯수가 고점돌파때의 진입이후 봉갯수보다 적고(많아야 되는 것 아닌지요?), var1과 value2를 비교하는 것은 무슨 의미인지 잘 모르겠습니다.
if Value2 >= 2 and value1[1] < var1 and var1 < Value2 Then
ExitLong("시험청산2");
}
2. 가르쳐주시는 거에 비해 너무 진도가 못나가고 있습니다.
몇 줄 안되는데도 도저히 해결을 못해서 또 올립니다.
똑같은 방법으로 만든거 같은데 매도는 원하는 자리에서 신호가 나오는데요.
매수는 이상하게도 하나가 영 이상한데서 신호가 나옵니다.
이것저것 바꿔봐도 그자리만 고집하네요.
# 일이 발생되는 순서대로 적었습니다. 인덱스는 제대로 쓰고 있는건지 모르겠습니다.
코드 흐름에 뭐가 잘못된건가요?
var:HH(0),LL(0),진폭(0);
HH = highest(H,P);
LL = lowest(L,P);
진폭=HH-LL;
f 이평500>이평360 && 이평360>이평120 &&
CrossDown(이평60,이평360)
Then
{
B1=1;
Bi1=Index;
}
if b1>=1 and CrossUp(이평3,이평500) Then
b1=0;
if b1==1 && bi1>0 && Index>bi1+2 && L>=Lowest(L,100)[1] Then
{
b1=2;
bi2=Index;
}
if b1==2 && bi2>0 && Index>bi2+2 && CrossUp(이평3,이평60) Then
{
b1=3;
Bi3=Index;
b1저점=진폭*0.1+LL;
}
{
if b1==3 && bi3>0 && Index<bi3+500 && Condition1 == False Then
Buy("이유모르는매수",AtLimit,b1저점);
}
3. cond에 "쌍봉조건"을 저장해놓고 사용하고 싶습니다. for문이나 index 이용해서 만들어보려는데 아직 어렵네요.
쌍봉조건=조건1 and 조건2 and 조건3 and 조건4;
현재봉으로부터 과거봉으로 돌아가면서 써보면요.
조건1. 현재캔들은 60이평 아래에 있다.
조건2. 당일고점을 찍었다.
조건3. 캔들의 저가가 60이평을 2회이상 이탈했다.
조건4. 당일고점을 찍었다.
# 아래의 식이 맞나요? 맞더라도 뭔가 추가해줘야 될 게 있을 거 같고 어설프네요.
var:cnt(0),고점돌파위치(0),데드위치60(0),이전고점돌파위치(0),쌍봉1(false);
쌍봉1 =
고점돌파위치=-1;
for cnt=0 to 100
{
if H[cnt]==highest(h,100) then{
고점돌파위치=cnt;
cnt=999;
}
}
데드위치60 = -1;
for cnt=고점돌파위치 to 100
{
if countif(crossdown(L,이평60),???)>1 then { # 저가가 2회이상 60이평 아래로 내려갔었다?????
데드위치60 = cnt;
cnt=999;
}
}
이전고점돌파위치=-1;
for cnt=데드위치60 to 100
{
if if H[cnt]==highest(h,100) then{
이전고점돌파위치=cnt;
이전고점돌파봉=C; #60이평 찍으러 내려오기전 최고점 찍은 캔들정보 저장.
cnt=999;
}
}
if 고점돌파위치<21 and # 고점찍은 자리가 현재봉전 20캔들내에 있고
데드위치60 < 고점돌파위치+20 and #60이평 데드난 자리가 고점찍은 자리로부터 20캔들내에 있고
이전고점돌파위치<데드위치60+20 then #60이평 데드 20캔들전내에 고점돌파가 있었다면
# 위 조건들을 만족하고 현재 종가가 60이평 아래에 있다면 쌍봉만족.
if C<이평60 then
쌍봉1 = true;
4. 차트에 글상자, 중요표시 등을 해놓고 다시 로그인을 하게 되면 그게 남아있지 않습니다.
다른 이름으로 저장하기를 하고 다시 불러와도 삭제되어 나오는데요. 그대로 불러올 방법이 있나요?
답변 1
예스스탁
예스스탁 답변
2024-05-03 10:33:40
> 산골소년 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 늘 고맙습니다.
복많이 받으실겁니다.
1. 위에 그림은 좌측 노란색에서 진입이 됐는데 우측상단 노란색에서 청산이 됐습니다.
# 의도했던 로직은 동그라미 부분에서 청산이었습니다.
# 며칠전 가르쳐주신 문장을 다시 적고 해석을 해보겠습니다. 오류수정 부탁드립니다.
# 아직 적어주신 문장도 해석능력이 부족합니다. 이해 부탁드립니다. 주석을 달아주시면 더욱 좋겠습니다.
if MarketPosition == 1 Then
{ #1 진입후 100캔들의 고점을 돌파했다면 Condition1에 참을 할당하고 var1에 진입이후 경과된 봉갯수 할당
if H > highest(H,100)[1] Then
{
Condition1 = true;
var1 = BarsSinceEntry;
}
#1이 참이고 60이평 이탈시 청산. *** 고점 돌파후 60이평 데드면 청산. 동그라미 두번째에서 청산되어야 됩니다..
if Condition1 == true Then #2
{
if CrossDown(c,ma(c,60)) Then
ExitLong("시험청산1");
}
#1이 참이고 20평 이탈시엔 20이평 이탈을 Value2에 할당하고, value1에는 진입이후 경과된 봉갯수 할당하고
if CrossDown(c,ma(C,20)) Then
{
Value2 = Value2+1;
value1 = BarsSinceEntry;
*** 원래 의도 : 20이평 데드후 60이평을 데드 하지 않고 다시 고점을 돌파한다면 이후 20이평 데드시 청산한다.
# *** 여기 문장은 잘 해석이 안됩니다. 20이평 데드가 2번이상이고 20이평 데드때 진입이후 봉갯수가 고점돌파때의 진입이후 봉갯수보다 적고(많아야 되는 것 아닌지요?), var1과 value2를 비교하는 것은 무슨 의미인지 잘 모르겠습니다.
if Value2 >= 2 and value1[1] < var1 and var1 < Value2 Then
ExitLong("시험청산2");
}
2. 가르쳐주시는 거에 비해 너무 진도가 못나가고 있습니다.
몇 줄 안되는데도 도저히 해결을 못해서 또 올립니다.
똑같은 방법으로 만든거 같은데 매도는 원하는 자리에서 신호가 나오는데요.
매수는 이상하게도 하나가 영 이상한데서 신호가 나옵니다.
이것저것 바꿔봐도 그자리만 고집하네요.
# 일이 발생되는 순서대로 적었습니다. 인덱스는 제대로 쓰고 있는건지 모르겠습니다.
코드 흐름에 뭐가 잘못된건가요?
var:HH(0),LL(0),진폭(0);
HH = highest(H,P);
LL = lowest(L,P);
진폭=HH-LL;
f 이평500>이평360 && 이평360>이평120 &&
CrossDown(이평60,이평360)
Then
{
B1=1;
Bi1=Index;
}
if b1>=1 and CrossUp(이평3,이평500) Then
b1=0;
if b1==1 && bi1>0 && Index>bi1+2 && L>=Lowest(L,100)[1] Then
{
b1=2;
bi2=Index;
}
if b1==2 && bi2>0 && Index>bi2+2 && CrossUp(이평3,이평60) Then
{
b1=3;
Bi3=Index;
b1저점=진폭*0.1+LL;
}
{
if b1==3 && bi3>0 && Index<bi3+500 && Condition1 == False Then
Buy("이유모르는매수",AtLimit,b1저점);
}
3. cond에 "쌍봉조건"을 저장해놓고 사용하고 싶습니다. for문이나 index 이용해서 만들어보려는데 아직 어렵네요.
쌍봉조건=조건1 and 조건2 and 조건3 and 조건4;
현재봉으로부터 과거봉으로 돌아가면서 써보면요.
조건1. 현재캔들은 60이평 아래에 있다.
조건2. 당일고점을 찍었다.
조건3. 캔들의 저가가 60이평을 2회이상 이탈했다.
조건4. 당일고점을 찍었다.
# 아래의 식이 맞나요? 맞더라도 뭔가 추가해줘야 될 게 있을 거 같고 어설프네요.
var:cnt(0),고점돌파위치(0),데드위치60(0),이전고점돌파위치(0),쌍봉1(false);
쌍봉1 =
고점돌파위치=-1;
for cnt=0 to 100
{
if H[cnt]==highest(h,100) then{
고점돌파위치=cnt;
cnt=999;
}
}
데드위치60 = -1;
for cnt=고점돌파위치 to 100
{
if countif(crossdown(L,이평60),???)>1 then { # 저가가 2회이상 60이평 아래로 내려갔었다?????
데드위치60 = cnt;
cnt=999;
}
}
이전고점돌파위치=-1;
for cnt=데드위치60 to 100
{
if if H[cnt]==highest(h,100) then{
이전고점돌파위치=cnt;
이전고점돌파봉=C; #60이평 찍으러 내려오기전 최고점 찍은 캔들정보 저장.
cnt=999;
}
}
if 고점돌파위치<21 and # 고점찍은 자리가 현재봉전 20캔들내에 있고
데드위치60 < 고점돌파위치+20 and #60이평 데드난 자리가 고점찍은 자리로부터 20캔들내에 있고
이전고점돌파위치<데드위치60+20 then #60이평 데드 20캔들전내에 고점돌파가 있었다면
# 위 조건들을 만족하고 현재 종가가 60이평 아래에 있다면 쌍봉만족.
if C<이평60 then
쌍봉1 = true;
4. 차트에 글상자, 중요표시 등을 해놓고 다시 로그인을 하게 되면 그게 남아있지 않습니다.
다른 이름으로 저장하기를 하고 다시 불러와도 삭제되어 나오는데요. 그대로 불러올 방법이 있나요?