커뮤니티
문의드립니다.
2019-05-21 12:14:50
288
글번호 128832
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요.
이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요?
매도는 반대로요. 감사합니다.
Inputs: InitMin(90);
Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False);
#conversion of hour-based time to minute-based time
SessStartMin = TimeToMinutes(90000);
TradeTime = TimeToMinutes(sTime);
input :
진입횟수(1),
손절률(1),
익절률(1)
;
var : count(0),T1(0);
input : 진입시간(90000),제한시간(150000),청산시간(153400);
var : Tcond(false);
SetStopLoss(손절률,PercentStop);
SetStopProfittarget(익절률,PercentStop);
if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
Tcond = true;
T1 = TotalTrades;
}
if (sdate != sdate[1] and stime >= 제한시간) or
(sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then
{
Tcond = false;
}
if MarketPosition == 0 Then
count = TotalTrades-T1;
Else
count = TotalTrades-T1+1;
if Count < 진입횟수 and Tcond == true then
{
#Setup - establishment of the initial range
If TradeTime <= SessStartMin + InitMin Then Begin
If Date <> Date[1] Then Begin
SetHigh = High;
SetLow = Low;
LongFlag = True;
ShortFlag = True;
End
Else Begin
If High > SetHigh Then
SetHigh = High;
If Low < SetLow Then
SetLow = Low;
End;
End
Else Begin
#Entries once the initial period has ended
If LongFlag AND CrossUp( Close , SetHigh) Then
Buy();
If ShortFlag AND CrossDown(Close , SetLow) Then
Sell();
End;
}
2.
피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요?
그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수.
이렇게 할 수 있나요?
그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.
- 1. 129449_제목_없음.png (0.02 MB)
답변 2
예스스탁 예스스탁 답변
2019-05-21 14:45:16
안녕하세요
예스스탁입니다.
1
Inputs: InitMin(90);
Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False);
#conversion of hour-based time to minute-based time
SessStartMin = TimeToMinutes(90000);
TradeTime = TimeToMinutes(sTime);
input : 진입횟수(1),손절률(1),익절률(1),N(5);
var : count(0),T1(0);
input : 진입시간(90000),제한시간(150000),청산시간(153400);
var : Tcond(false),T(0),EP(0);
SetStopLoss(손절률,PercentStop);
SetStopProfittarget(익절률,PercentStop);
if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
Tcond = true;
T1 = TotalTrades;
}
if (sdate != sdate[1] and stime >= 제한시간) or
(sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then
{
Tcond = false;
}
if MarketPosition == 0 Then
count = TotalTrades-T1;
Else
count = TotalTrades-T1+1;
if Count < 진입횟수 and Tcond == true then
{
#Setup - establishment of the initial range
If TradeTime <= SessStartMin + InitMin Then
{
If Date <> Date[1] Then
{
T = 0;
SetHigh = High;
SetLow = Low;
LongFlag = True;
ShortFlag = True;
}
Else
{
If High > SetHigh Then
SetHigh = High;
If Low < SetLow Then
SetLow = Low;
}
}
Else
{
#Entries once the initial period has ended
If LongFlag AND CrossUp( Close , SetHigh) Then
{
T = 1;
EP = H;
}
If ShortFlag AND CrossDown(Close , SetLow) Then
{
T = -1;
EP = L;
}
if T == 1 Then
buy("b",atlimit,EP-PriceScale*n);
if T == -1 Then
sell("s",atlimit,EP+PriceScale*n);
}
}
2
진입과 진입사이의 최고가를 체크하고
이전 진입간의 최고가보다 클때만 추가진입하게 하시면 될것 같습니다.
첫번째 추가진입은 첫진입부터 현재까지의 최고가입니다.
var : atrv(0),HH(0),H1(0);
atrv = atr(14);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
HH = H;
H1 = HH[1];
}
if H > HH Then
HH = H;
if MaxEntries == 1 or (MaxEntries >= 2 and HH > H1) Then
buy("bb",atlimit,HH-atrv*2);
exitlong("bx",AtStop,HH-atrv*5);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요.
이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요?
매도는 반대로요. 감사합니다.
Inputs: InitMin(90);
Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False);
#conversion of hour-based time to minute-based time
SessStartMin = TimeToMinutes(90000);
TradeTime = TimeToMinutes(sTime);
input :
진입횟수(1),
손절률(1),
익절률(1)
;
var : count(0),T1(0);
input : 진입시간(90000),제한시간(150000),청산시간(153400);
var : Tcond(false);
SetStopLoss(손절률,PercentStop);
SetStopProfittarget(익절률,PercentStop);
if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
Tcond = true;
T1 = TotalTrades;
}
if (sdate != sdate[1] and stime >= 제한시간) or
(sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then
{
Tcond = false;
}
if MarketPosition == 0 Then
count = TotalTrades-T1;
Else
count = TotalTrades-T1+1;
if Count < 진입횟수 and Tcond == true then
{
#Setup - establishment of the initial range
If TradeTime <= SessStartMin + InitMin Then Begin
If Date <> Date[1] Then Begin
SetHigh = High;
SetLow = Low;
LongFlag = True;
ShortFlag = True;
End
Else Begin
If High > SetHigh Then
SetHigh = High;
If Low < SetLow Then
SetLow = Low;
End;
End
Else Begin
#Entries once the initial period has ended
If LongFlag AND CrossUp( Close , SetHigh) Then
Buy();
If ShortFlag AND CrossDown(Close , SetLow) Then
Sell();
End;
}
2.
피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요?
그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수.
이렇게 할 수 있나요?
그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.
잡다백수
2019-05-21 18:14:07
코딩 감사합니다.
2번 수식 수정한 건데요.
질문할 때는 생각 못했었는데, 돌려보니 고가 돌파할 때마다 세팅하고 진입하니 추가진입을 매우 자주 하는 것 같더라구요.
이거를 추가진입할 때는
최근 진입 가격 + ATRV * 추가진입세팅(외부변수) 까지
가격이 올랐을때만 아래 눌림 진입이 들어가도록 하려면 어떻게 고쳐야 하나요.
그러니까 b 지점에서 ATRV * 추가진입세팅 만큼 가격이 오른 뒤 고가에서 - ATRV * 물타기ATR인 지점에서 추가 진입하고
거기서 또 가격이 + ATRV * 추가진입세팅 만큼 오르면 그 고가에서 -ATRV * 추가진입세팅인 때 추가진입하는 식으로 고치고 싶습니다.
감사합니다.
input:
물타기ATR(2),
손절ATR(5),
시간(100000)
;
var : atrv(0),HH(0),H1(0);
atrv = atr(4);
input : entryCount(1);
var : count(0) ;
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
if Count < entryCount then {
if stime >= 시간 and C > DayOpen then
buy("b",OnClose);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
HH = H;
H1 = HH[1];
}
if H > HH Then
HH = H;
if MaxEntries == 1 or (MaxEntries >= 2 and HH > H1) Then
buy("bb",atlimit,HH-atrv*물타기ATR);
exitlong("bx",AtStop,HH-atrv*손절ATR);
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
1
Inputs: InitMin(90);
Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False);
#conversion of hour-based time to minute-based time
SessStartMin = TimeToMinutes(90000);
TradeTime = TimeToMinutes(sTime);
input : 진입횟수(1),손절률(1),익절률(1),N(5);
var : count(0),T1(0);
input : 진입시간(90000),제한시간(150000),청산시간(153400);
var : Tcond(false),T(0),EP(0);
SetStopLoss(손절률,PercentStop);
SetStopProfittarget(익절률,PercentStop);
if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
Tcond = true;
T1 = TotalTrades;
}
if (sdate != sdate[1] and stime >= 제한시간) or
(sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then
{
Tcond = false;
}
if MarketPosition == 0 Then
count = TotalTrades-T1;
Else
count = TotalTrades-T1+1;
if Count < 진입횟수 and Tcond == true then
{
#Setup - establishment of the initial range
If TradeTime <= SessStartMin + InitMin Then
{
If Date <> Date[1] Then
{
T = 0;
SetHigh = High;
SetLow = Low;
LongFlag = True;
ShortFlag = True;
}
Else
{
If High > SetHigh Then
SetHigh = High;
If Low < SetLow Then
SetLow = Low;
}
}
Else
{
#Entries once the initial period has ended
If LongFlag AND CrossUp( Close , SetHigh) Then
{
T = 1;
EP = H;
}
If ShortFlag AND CrossDown(Close , SetLow) Then
{
T = -1;
EP = L;
}
if T == 1 Then
buy("b",atlimit,EP-PriceScale*n);
if T == -1 Then
sell("s",atlimit,EP+PriceScale*n);
}
}
2
진입과 진입사이의 최고가를 체크하고
이전 진입간의 최고가보다 클때만 추가진입하게 하시면 될것 같습니다.
첫번째 추가진입은 첫진입부터 현재까지의 최고가입니다.
var : atrv(0),HH(0),H1(0);
atrv = atr(14);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
HH = H;
H1 = HH[1];
}
if H > HH Then
HH = H;
if MaxEntries == 1 or (MaxEntries >= 2 and HH > H1) Then
buy("bb",atlimit,HH-atrv*2);
exitlong("bx",AtStop,HH-atrv*5);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요.
이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요?
매도는 반대로요. 감사합니다.
Inputs: InitMin(90);
Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False);
#conversion of hour-based time to minute-based time
SessStartMin = TimeToMinutes(90000);
TradeTime = TimeToMinutes(sTime);
input :
진입횟수(1),
손절률(1),
익절률(1)
;
var : count(0),T1(0);
input : 진입시간(90000),제한시간(150000),청산시간(153400);
var : Tcond(false);
SetStopLoss(손절률,PercentStop);
SetStopProfittarget(익절률,PercentStop);
if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
Tcond = true;
T1 = TotalTrades;
}
if (sdate != sdate[1] and stime >= 제한시간) or
(sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then
{
Tcond = false;
}
if MarketPosition == 0 Then
count = TotalTrades-T1;
Else
count = TotalTrades-T1+1;
if Count < 진입횟수 and Tcond == true then
{
#Setup - establishment of the initial range
If TradeTime <= SessStartMin + InitMin Then Begin
If Date <> Date[1] Then Begin
SetHigh = High;
SetLow = Low;
LongFlag = True;
ShortFlag = True;
End
Else Begin
If High > SetHigh Then
SetHigh = High;
If Low < SetLow Then
SetLow = Low;
End;
End
Else Begin
#Entries once the initial period has ended
If LongFlag AND CrossUp( Close , SetHigh) Then
Buy();
If ShortFlag AND CrossDown(Close , SetLow) Then
Sell();
End;
}
2.
피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요?
그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수.
이렇게 할 수 있나요?
그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.
다음글
이전글