커뮤니티
문의드립니다.
2018-01-07 13:24:18
208
글번호 115513
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1.기타
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {
buysetup = true;
buybase = H;
buyindex = index;
}
}
input : entryCount(1);
var : count(0) ;
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
if C < bbup2 then
buysetup = false;
if Count < entryCount then {
If buysetup == true and MarketPosition == 0 and index > buyindex+ 지난봉수 Then{
buy("연습",atstop,buybase+PriceScale*틱수);
}
}
IF crossdown(c,BBup2) then
exitlong();
SetStopEndofday();
위와 같은 수식을 썼는데요.
이미지1을 보면 연습1이라는 신호 다음날도 종가가 볼린저밴드 상단을 돌파했고 n개봉지난 봉이 고가를 n틱이상 돌파했으니 신호가 나와야 하는데요. 나오질 않습니다. 뭐가 문제인지 모르겠습니다. 위 사진 외에도 여러 군데에서 나와야 할 신호가 나오지 않았습니다.
이상해서 전에 만들어주신 것을 변형해서 이렇게 짜서 지표ㄹ 봤는데요. 3번이미지처럼 돌파할 때 고가를 저장할 때도 있고 아닐 때도 있었습니다. 무슨 규칙성이 있는 것도 아니라 이유를 모르겠네요.
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {
buysetup = true;
buybase = h;
buyindex = index;
}
}
if C < bbup2 then
buysetup = false;
If buysetup == true then
var1 = buybase;
plot1(var1);
2. 기타
코딩부탁드립니다.
-장시작후 3개봉의 길이가 n 이상이면 buysetup false
-첫봉이 장대음봉(첫봉의 길이가 n이상의 음봉이면 장대음봉이라고 규정)이면 buysetup false
-셋업이 된 뒤 양봉의 갯수, 음봉의 갯수.
-진입한 뒤 5봉동안 고가를 돌파하지 못하면 청산.
3. 기타
1번 수식에서 당일진입제한 수식을 빼봤더니 이미지 2번처럼 바로 2번진입을 했습니다. 예상키로는 처음 셋업한 봉을 기준으로 하다보니 그런 것 같은데요. 만약에 진입과 청산을 한 뒤에 새로 볼린저밴드를 돌파한 뒤 새롭게 셋업을 하려면 어떻게 수식을 고쳐야 하나요? 당일청산전략으로 하려 합니다.
4.
'첫봉이 양봉이면' 이란 조건을 이렇게 추가시켜봤는데요. 그림처럼 음봉일 때가 나올 때가 몇번씩 나타났습니다. 제가 제대로 코딩을 한 것인가요?
Input : Period(40), dv1(2),dv2(0.7);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
if bdate != bdate[1] then{
var1 = 0;
var2 = 0;}
if dayindex == 0 then
var1 = C;
var2 = O;
if CrossUp(c,BBup1) and var1 > var2 then
buy();
if CrossDown(c,BBup2) then
exitlong();
- 1. 116094_캡처.PNG (0.20 MB)
- 2. 캡처.PNG (0.03 MB)
- 3. 116090_이미지_1.png (0.07 MB)
- 4. 116091_이미지_2.png (0.05 MB)
답변 1
예스스탁 예스스탁 답변
2018-01-08 16:19:50
안녕하세요
예스스탁입니다.
1
IF bdate != bdate[1] Then{ #첫봉
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {#종가가 상단을 상향돌파
buysetup = true;
buybase = h;
buyindex = index;
}
}
첫봉이 상향돌파봉(종가가 볼밴상단보다 크고 전봉은 작음)일때만 신호가 발생합니다.
첫봉이 상향돌파봉이 아니면 Buysetup은 true가 되지 안아
신호가 발생하지 않습니다.
상향돌파가 아닌 첫봉의 종가가 상단보다 크다이맨 아래와 같이 변경하셔야 합니다.
IF bdate != bdate[1] Then{#첫봉에서
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if c > BBup1 Then { #종가가 상단보다 크다
buysetup = true;
buybase = h;
buyindex = index;
}
}
꼭 첫봉만 의미하지 않을경우에는
상향돌파 조건과 첫봉의 if문을 별도로 처리해야 합니다.
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
}
if crossup(c,BBup1) Then {
buysetup = true;
buybase = H;
buyindex = index;
}
2
셋업조건이 어떤 내용인지 모르겠습니다.
false로 만드는 내용만 있고 셋업조건이 없습니다.
내용 보강하셔서 다시 올려주시기 바랍니다.
3
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
input : entryCount(1);
var : count(0);
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
}
if crossup(c,BBup1) Then {
buysetup = true;
buybase = h;
buyindex = index;
}
if C < bbup1 then
buysetup = false;
if Count < entryCount then {
If buysetup == true and MarketPosition == 0 and index > buyindex+ 지난봉수 Then{
buy("연습",atstop,buybase+PriceScale*틱수);
}
}
IF crossdown(c,BBup2) then
exitlong();
SetStopEndofday();
4
if bdate != bdate[1] then{ //첫봉
var1 = 0;
var2 = 0;}
if dayindex == 0 then //첫봉
var1 = C;
var2 = O;
위 수식에서
if dayindex == 0 then
var1 = C;
var2 = O;
부분이 문제가 됩니다.
if문에 소속되는 실행문이 2개 이상이면 {}로 묶어 주어야 합니다
또한 첫봉이라는 표현이 불필요하게 2번이나 사용되었습니다.
아래와 같이 작성해 사용하시면 됩니다.
Input : Period(40), dv1(2),dv2(0.7);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
if bdate != bdate[1] then{
var1 = C;
var2 = O;
}
if CrossUp(c,BBup1) and var1 > var2 then
buy();
if CrossDown(c,BBup2) then
exitlong();
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1.기타
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {
buysetup = true;
buybase = H;
buyindex = index;
}
}
input : entryCount(1);
var : count(0) ;
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
if C < bbup2 then
buysetup = false;
if Count < entryCount then {
If buysetup == true and MarketPosition == 0 and index > buyindex+ 지난봉수 Then{
buy("연습",atstop,buybase+PriceScale*틱수);
}
}
IF crossdown(c,BBup2) then
exitlong();
SetStopEndofday();
위와 같은 수식을 썼는데요.
이미지1을 보면 연습1이라는 신호 다음날도 종가가 볼린저밴드 상단을 돌파했고 n개봉지난 봉이 고가를 n틱이상 돌파했으니 신호가 나와야 하는데요. 나오질 않습니다. 뭐가 문제인지 모르겠습니다. 위 사진 외에도 여러 군데에서 나와야 할 신호가 나오지 않았습니다.
이상해서 전에 만들어주신 것을 변형해서 이렇게 짜서 지표ㄹ 봤는데요. 3번이미지처럼 돌파할 때 고가를 저장할 때도 있고 아닐 때도 있었습니다. 무슨 규칙성이 있는 것도 아니라 이유를 모르겠네요.
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {
buysetup = true;
buybase = h;
buyindex = index;
}
}
if C < bbup2 then
buysetup = false;
If buysetup == true then
var1 = buybase;
plot1(var1);
2. 기타
코딩부탁드립니다.
-장시작후 3개봉의 길이가 n 이상이면 buysetup false
-첫봉이 장대음봉(첫봉의 길이가 n이상의 음봉이면 장대음봉이라고 규정)이면 buysetup false
-셋업이 된 뒤 양봉의 갯수, 음봉의 갯수.
-진입한 뒤 5봉동안 고가를 돌파하지 못하면 청산.
3. 기타
1번 수식에서 당일진입제한 수식을 빼봤더니 이미지 2번처럼 바로 2번진입을 했습니다. 예상키로는 처음 셋업한 봉을 기준으로 하다보니 그런 것 같은데요. 만약에 진입과 청산을 한 뒤에 새로 볼린저밴드를 돌파한 뒤 새롭게 셋업을 하려면 어떻게 수식을 고쳐야 하나요? 당일청산전략으로 하려 합니다.
4.
'첫봉이 양봉이면' 이란 조건을 이렇게 추가시켜봤는데요. 그림처럼 음봉일 때가 나올 때가 몇번씩 나타났습니다. 제가 제대로 코딩을 한 것인가요?
Input : Period(40), dv1(2),dv2(0.7);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
if bdate != bdate[1] then{
var1 = 0;
var2 = 0;}
if dayindex == 0 then
var1 = C;
var2 = O;
if CrossUp(c,BBup1) and var1 > var2 then
buy();
if CrossDown(c,BBup2) then
exitlong();