예스스탁
예스스탁 답변
2023-02-13 18:17:26
안녕하세요
예스스탁입니다.
1
해당식 차트에 적용해 보았지만
첨부된 그림과 같이 매수와 매도신호가 발생하고 있습니다.
또한 주기에 따라 추가진입도 발생하고 있습니다.
2
첫번째 20이평 크로스에서 진입하게 수정해 드립니다.
input : P1(10),P2(20),P3(60);
var : mav1(0),mav2(0),mav3(0);
var : S(0),SP(0),SellAdd(False);
var : B(0),LP(0),BuyAdd(False);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
Condition1 = mav1 > mav2 and mav2 > mav3;
Condition2 = mav1 < mav2 and mav2 < mav3;
if Condition1 == true Then
{
if Condition1[1] == False Then
S = 0;
if CrossUp(mav2,mav3) then
{
S = 1;
}
Else if CrossDown(mav2,mav3) then
{
S = -1;
}
Else
{
if S == 1 Then
{
if MarketPosition >= 0 and CrossDown(L,mav2) Then
{
Sell("s1",OnClose,Def,1);
sp = mav2;
}
}
}
}
Else
S = 0;
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
SellAdd = true;
var1 = Index;
}
if L < mav3 Then
SellAdd = False;
if SellAdd == true and Index > var1+10 and mav3 >= sp and CountIf(L>mav2,10) == 10 Then
{
Sell("s",OnClose,Def,1);
sp = mav2;
}
}
if Condition2 == true Then
{
if Condition2[1] == False Then
B = 0;
if CrossUp(mav2,mav3) then
{
B = 1;
}
Else if CrossDown(mav2,mav3) then
{
B = -1;
}
Else
{
if B == -1 Then
{
if MarketPosition <= 0 and Crossup(H,mav2) Then
{
Buy("b",OnClose,Def,1);
LP = mav2;
B = -2;
}
}
}
}
Else
B = 0;
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
BuyAdd = true;
var2 = Index;
}
if H > mav3 Then
BuyAdd = False;
if BuyAdd == true and Index > var2+10 and mav3 <= LP and CountIf(H<mav2,10) == 10 Then
{
Buy("bb",OnClose,Def,1);
LP = mav2;
}
}
즐거운 하루되세요
> 음양조파 님이 쓴 글입니다.
> 제목 : 검토부탁드립니다.
> 안녕하세요? 부탁드려서 아래와 같은 식을 받았는데, 매도 하나만 이루어지고 안 되는데 수정도 못해보겠네요. 검토좀 부탁드리고요, 이참에 첫번째 20이평선 하회할 때 sp에서 첫진입을 시작하는 것으로 바꿔주시면 감사하겠습니다.
#1)10.20,60 이평선이 정배열로 봉이 진행 중
#2) 20이평선이 60이평선 위에 있는 동안 최초로 봉의 저점이 20이평선을 하회했을때 그 봉에서의 20이평선 가격을 sp라 하고
#3) 그 뒤 60이평선이 상향 진행되어 sp 가격까지 도달된 이후
#4) 두번째로 봉의 저점이 20이평선을 하회하게 되면 그 선에서 매도 1계약하고 그 때의 20이평선 가격을 sp2라 하고
#5) 그 후 만일 봉의 저점이 60이평선을 하회하지 못한 채 봉의 저점이 20이평선 위로 올라가 최소한 10봉을 진행하게 되고 다시 60 이평선이 또 상향하여 sp2가격에 이르면 매도 1계약
#6)...그 식으로 누적시켜 가다가 상황이 반전되어 그 다음엔 반대로 역배열이 되면 독같은 방식으로 일단 최초의 역sp에서 매도진입분 전량청산하고 매수 1계약, 그 다음 sp2에서 또 매수 1계약...하는 식
input : P1(10),P2(20),P3(60);
var : mav1(0),mav2(0),mav3(0);
var : S(0),SP(0),SellAdd(False);
var : B(0),LP(0),BuyAdd(False);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
Condition1 = mav1 > mav2 and mav2 > mav3;
Condition2 = mav1 < mav2 and mav2 < mav3;
if Condition1 == true Then
{
if Condition1[1] == False Then
S = 0;
if CrossUp(mav2,mav3) then
{
S = 1;
}
Else if CrossDown(mav2,mav3) then
{
S = -1;
}
Else
{
if S >= 1 Then
{
if S == 1 Then
{
if CrossDown(L,mav2) Then
{
sp = mav2;
S = 2;
}
}
Else if S == 2 Then
{
if mav3 >= sp Then
{
S = 3;
}
}
Else if S == 3 Then
{
if MarketPosition >= 0 and CrossDown(L,mav2) Then
{
Sell("s1",OnClose,Def,1);
sp = mav2;
}
}
}
}
}
Else
S = 0;
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
SellAdd = true;
var1 = Index;
}
if L < mav3 Then
SellAdd = False;
if SellAdd == true and Index > var1+10 and mav3 >= sp and CountIf(L>mav2,10) == 10 Then
{
Sell("s",OnClose,Def,1);
sp = mav2;
}
}
if Condition2 == true Then
{
if Condition2[1] == False Then
B = 0;
if CrossUp(mav2,mav3) then
{
B = 1;
}
Else if CrossDown(mav2,mav3) then
{
B = -1;
}
Else
{
if B <= -1 Then
{
if B == -1 Then
{
if Crossup(H,mav2) Then
{
LP = mav2;
B = -2;
}
}
Else if B == -2 Then
{
if mav3 <= LP Then
{
B = -3;
}
}
Else if B == -3 Then
{
if MarketPosition <= 0 and CrossUp(H,mav2) Then
{
Buy("b",OnClose,Def,1);
LP = mav2;
}
}
}
}
}
Else
B = 0;
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
BuyAdd = true;
var2 = Index;
}
if H > mav3 Then
BuyAdd = False;
if BuyAdd == true and Index > var2+10 and mav3 <= LP and CountIf(H<mav2,10) == 10 Then
{
Buy("bb",OnClose,Def,1);
LP = mav2;
}
}