커뮤니티
ask
2024-09-02 12:36:43
202
글번호 109149
수식 시뮬레이션 결과 오류가 있습니다.
일관된 오류는 시뮬레이션 기간동안 2차 sell 거래를 안합니다............그림 1 참조
선택적 오류는 1차 sell 거래 후 손절은 정상 작동합니다.
하지만 익절의 경우에는 작동하지 않고 end of day로 청산합니다..........그림 2 참조
아마도 2차 sell 거래가 작동하지 않아서 생기는 문제 같습니다.
변경 전 buy 수식(2회만 거래)에서는 상황별로 아래 기능이 정상적으로 작동합니다
1차 buy 진입,손절,익절,end of day
2차 buy 진입,손절,익절,end of day
살펴주세요.
***
안녕하세요
예스스탁입니다.
input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4);
var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then{
if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{
sell("s1");
E1 = 0;
}
}
if MarketPosition == -1 Then{
if entry == 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EL = L;
E1 = 0;
}
if L < EL Then
EL = L;
if E1 == 0 and C >= EL+PriceScale*X1 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{
ExitShort("sx1");
E1 = 0;
}
}
}
if TotalTrades > TotalTrades[1] Then
HH = H;
if L < HH Then
HH = H;
if MarketPosition == 0 and entry == 1 Then{
if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{
sell("s2");
}
}
if MarketPosition == -1 Then{
if entry == 2 then{
if CurrentContracts > CurrentContracts[1] Then
E1 = 0;
if E1 == 0 and H >= EntryPrice+PriceScale*13 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{
ExitShort("sx3");
E1 = 0;
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 하락2회 수식
> 아래 수식은 상승추세시 buy만 2회 하는 수식입니다.
하락추세시 sell만 2회 하는 수식으로 전환바랍니다.
거래 방식은 BUY와 같고 역방향이므로
BUY와 SELL의 진입과 청산 지점은 다릅니다.
(BUY1->SELL1->BUY2->SELL2 reverse 거래)
늘 고맙습니다.
******
input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4);
var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then{
if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b1");
E1 = 0;
}
}
if MarketPosition == 1 Then{
if entry == 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EH = H;
E1 = 0;
}
if H > EH Then
EH = H;
if E1 == 0 and C <= EH-PriceScale*X1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx1");
E1 = 0;
}
}
}
if TotalTrades > TotalTrades[1] Then
LL = L;
if L < LL Then
LL = L;
if MarketPosition == 0 and entry == 1 Then{
if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b2");
}
}
#if MarketPosition == 1 Then{
# if MarketPosition== 1 and entry == 2 Then
# exitlong("bx3",AtStop,EntryPrice-PriceScale*13);
#}
if MarketPosition == 1 Then{
if entry == 2 then{
if CurrentContracts > CurrentContracts[1] Then
E1 = 0;
if E1 == 0 and L <= EntryPrice-PriceScale*13 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx3");
E1 = 0;
}
}
}
- 1. 두번째_진입_안함_a.jpg (0.34 MB)
- 2. 첫번째_거래_1차_익절_안함_a.jpg (0.36 MB)
답변 1
예스스탁 예스스탁 답변
2017-04-26 10:06:06
안녕하세요
예스스탁입니다.
값할당이 잘못된 부분이 있어 수정했습니다.
input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4);
var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then{
if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{
sell("s1");
E1 = 0;
}
}
if MarketPosition == -1 Then{
if entry == 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EL = L;
E1 = 0;
}
if L < EL Then
EL = L;
if E1 == 0 and C >= EL+PriceScale*X1 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{
ExitShort("sx1");
E1 = 0;
}
}
}
if TotalTrades > TotalTrades[1] Then
HH = H;
if H > HH Then
HH = H;
if MarketPosition == 0 and entry == 1 Then{
if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{
sell("s2");
}
}
if MarketPosition == -1 Then{
if entry == 2 then{
if CurrentContracts > CurrentContracts[1] Then
E1 = 0;
if E1 == 0 and H >= EntryPrice+PriceScale*13 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{
ExitShort("sx3");
E1 = 0;
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 1차 익절 및 2차 진입 안함
> 수식 시뮬레이션 결과 오류가 있습니다.
일관된 오류는 시뮬레이션 기간동안 2차 sell 거래를 안합니다............그림 1 참조
선택적 오류는 1차 sell 거래 후 손절은 정상 작동합니다.
하지만 익절의 경우에는 작동하지 않고 end of day로 청산합니다..........그림 2 참조
아마도 2차 sell 거래가 작동하지 않아서 생기는 문제 같습니다.
변경 전 buy 수식(2회만 거래)에서는 상황별로 아래 기능이 정상적으로 작동합니다
1차 buy 진입,손절,익절,end of day
2차 buy 진입,손절,익절,end of day
살펴주세요.
***
안녕하세요
예스스탁입니다.
input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4);
var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then{
if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{
sell("s1");
E1 = 0;
}
}
if MarketPosition == -1 Then{
if entry == 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EL = L;
E1 = 0;
}
if L < EL Then
EL = L;
if E1 == 0 and C >= EL+PriceScale*X1 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{
ExitShort("sx1");
E1 = 0;
}
}
}
if TotalTrades > TotalTrades[1] Then
HH = H;
if L < HH Then
HH = H;
if MarketPosition == 0 and entry == 1 Then{
if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{
sell("s2");
}
}
if MarketPosition == -1 Then{
if entry == 2 then{
if CurrentContracts > CurrentContracts[1] Then
E1 = 0;
if E1 == 0 and H >= EntryPrice+PriceScale*13 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{
ExitShort("sx3");
E1 = 0;
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 하락2회 수식
> 아래 수식은 상승추세시 buy만 2회 하는 수식입니다.
하락추세시 sell만 2회 하는 수식으로 전환바랍니다.
거래 방식은 BUY와 같고 역방향이므로
BUY와 SELL의 진입과 청산 지점은 다릅니다.
(BUY1->SELL1->BUY2->SELL2 reverse 거래)
늘 고맙습니다.
******
input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4);
var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then{
if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b1");
E1 = 0;
}
}
if MarketPosition == 1 Then{
if entry == 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EH = H;
E1 = 0;
}
if H > EH Then
EH = H;
if E1 == 0 and C <= EH-PriceScale*X1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx1");
E1 = 0;
}
}
}
if TotalTrades > TotalTrades[1] Then
LL = L;
if L < LL Then
LL = L;
if MarketPosition == 0 and entry == 1 Then{
if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{
E1 = 1;
H1 = H;
i1 = index;
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
if L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b2");
}
}
#if MarketPosition == 1 Then{
# if MarketPosition== 1 and entry == 2 Then
# exitlong("bx3",AtStop,EntryPrice-PriceScale*13);
#}
if MarketPosition == 1 Then{
if entry == 2 then{
if CurrentContracts > CurrentContracts[1] Then
E1 = 0;
if E1 == 0 and L <= EntryPrice-PriceScale*13 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx3");
E1 = 0;
}
}
}
다음글
이전글