답변완료
수식어 부탁드립니다
var : entry(0);
if bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition <= 0 and entry < 1 Then
buy("b",atlimit,dayhigh-PriceScale*80);
if MarketPosition == 1 Then
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*50);
if MarketPosition >= 0 and entry < 1 Then
sell("s",atlimit,daylow+PriceScale*1350);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*60);
if sdate != sdate[1] Then
SetStopEndofday(55000);
if bdate != bdate[1] Then
SetStopEndofday(0);
----------------------------------
수식어 추가입니다.
1. 손절 20틱
2. 23시 50분부터 buy, sell 진입신호금지 수식어입니다.
청산은 무관합니다.
2020-07-20
1338
글번호 140786
시스템
답변완료
수식 검토 요청합니다.
아래 수식은 수동으로 2가지 종목을 각각 매매후에 자리를 뜨고 자러 가는 사이에
본절 청산과 수익 추적 청산 하기 위한 수식입니다.
에러가 있는지 검토 요청드립니다.
수식이 문제가 없더라도 실전에서 문제가 없겠습니까?
GetPositionOpenPL 과 GetpositionQuantity 은
호출을 얼마 시간단위로 호출하는 것인지요?
분봉이 완성될 때마다 호출되는 것인지요?
GetPositionOpenPL 이 실제와 다를 때도 있습니까?
실제와 동일시하는 수식이 있으면 부탁드립니다.
var: quantity1(0),quantity2(0),러셀원가(0),가솔린원가(0);
var: 러셀이익(0),가솔린이익(0);
var: PL1(0),PL2(0),T(0);
var:러셀본전가(0), 가솔린본절가(0),러셀고가(0),가솔린고가(0), 러셀최고가(0),가솔린최고가(0);
PL1=GetPositionOpenPL("RTUV20","7212383908"); //러셀
PL2=GetPositionOpenPL("RB020","7212383908"); // 가솔린
quantity1=GetpositionQuantity("RTUV20","7212383908");//러셀 보유수량
quantity2=GetpositionQuantity("RB020","7212383908");//가솔린 보유수량
IF quantity1==0 Then
{
러셀원가 = PL1 ;
러셀이익=0 ;
러셀최고가=0;
러셀본전가=0 ;
T=0 ;
}
IF quantity2==0 Then
{
가솔린원가 = PL2 ;
가솔린이익=0;
가솔린최고가=0;
가솔린본절가=0;
T=0 ;
}
IF quantity1>0 Then
{
러셀이익 = PL1 -러셀원가 ;
}
IF quantity1>0 Then
{
러셀이익 > 러셀이익[1] ;
러셀최고가=러셀이익 ;
}
IF quantity2>0 Then
{
가솔린이익 = PL2 -가솔린원가 ;
}
IF quantity2>0 Then
{
가솔린이익 >가솔린이익[1] ;
가솔린최고가 = 가솔린이익;
}
IF quantity1[1]==0 and quantity1>0 then
{
러셀본전가 =c;
}
IF quantity2[1]==0 and quantity2>0 then
{
가솔린본절가 =c;
}
// 러셀을 수동으로 매매하고 이익이 나서 이익을 시스템식으로 보전하려고 합니다.
//러셀 매매후 이익이 나면
if quantity1>0 AND PL1 > 러셀원가 Then
{
러셀이익 = PL1 - 러셀원가 ;
T=1;
}
//가솔린 매매후 이익이 나면
if quantity2>0 AND PL2 > 가솔린원가 Then;
{
가솔린이익 = PL2 - 가솔린원가 ;
T=-1;
}
// 러셀 매수후 이익이 나서 본절가로 가격이 떨어지면 본절가 청산합니다.
IF quantity1==1 and T==1 and 러셀이익 > pricescale*40 Then
{
Sell("bx1",AtStop,러셀본전가); // 러셀 본절가는 수동으로 넣어 줍니다.옆의 수식 맞습니까? 포지션이 매도이면 이 명령은 손으로 삭제합니다.
T=0 ;
// 러셀 매수후 이익이 많이 나서 최고값 대비 50%로 가격이 떨어지면 수익 청산합니다.
if 러셀최고가 >= 러셀원가+pricescale*60 then
sell("bx2",atstop,(러셀최고가- 러셀원가)*0.5 ); // 포지션이 매도이면 이 명령은 손으로 삭제합니다.
T=0 ;
}
// 러셀 매도후 이익이 나서 본절가로 가격이 떨어지면 본절가 청산합니다.
IF quantity1==1 and T==1 and 러셀이익 > pricescale*40 Then {
Buy("sx1",AtStop,러셀본전가); // 러셀 본절가는 수동으로 넣어 주기도 합니다.옆의 수식 맞습니까? 포지션이 매수이면 이 명령은 손으로 삭제합니다.
T=0 ;
// 러셀 매도후 이익이 많이 나서 최고삾 대비 50%로 가격이 덜어지면 수익 청산합니다.
if 러셀최고가 >= 러셀원가*60 then
Buy("sx2",atstop,(러셀최고가 - 러셀원가)*0.5 ); // 포지션이 매수이면 이 명령은 손으로 삭제합니다.
T=0 ;
}
//////////////////////////////////////////////////////////
// 가솔린 매수후 이익이 나서 본절가로 가격이 떨어지면 본절가 청산합니다.
IF quantity2==1 and T==-1 Then
{
Sell("bx11",AtStop,가솔린본절가); // 러셀 본절가는 수동으로 넣어 주기도 합니다..옆의 수식 맞습니까? 포지션이 매도이면 이 명령은 손으로 삭제합니다.
T=0 ;
// 가솔린 매수후 이익이 많이 나서 최고값 대비 50%로 가격이 떨어지면 수익 청산합니다.
if highest(H,BarsSinceEntry) >= entryprice+pricescale*40 then
sell("bx22",atstop,highest(H,BarsSinceEntry)-(highest(H,BarsSinceEntry)-entryprice)*0.5 ); // 포지션이 매도이면 이 명령은 손으로 삭제합니다.
T=0 ;
}
// 가솔린 매도후 이익이 나서 본절가로 가격이 떨어지면 본절가 청산합니다.
IF quantity1==1 and T==-1 Then {
Buy("sx11",AtStop,가솔린본절가); // 러셀 본절가는 수동으로 넣어 줍니다.옆의 수식 맞습니까? 포지션이 매수이면 이 명령은 손으로 삭제합니다.
T=0 ;
// 가솔린 매도후 이익이 많이 나서 최고삾 대비 50%로 가격이 덜어지면 수익 청산합니다.
if highest(H,BarsSinceEntry) >= entryprice+pricescale*40 then
Buy("sx22",atstop,lowest(L,BarsSinceEntry)+(entryprice-lowest(L,BarsSinceEntry))*0.5 ); // 포지션이 매수이면 이 명령은 손으로 삭제합니다.
T=0 ;
}
MessageLog("quantity1= %.f " , quantity1 );
MessageLog("PL1= %.f " , PL1 );
2020-07-19
1435
글번호 140785
시스템
답변완료
안녕하세요..지표부탁드립니다..감사합니다.
3분봉차트에서
30분봉차트의 mACD 와 스톡캐스틱을 표현하고싶습니다..
아래는 부봉에서 일봉으로 표현하는 지표인데 30분봉으로 변형하는법을 모르겠습니다.
input : Period(12), Period1(5), Period2(5);
var : count(0), highVal(0), lowVal(0), StoFastK(0), StoK(0), StoD(0);
var : Ep(0), EP1(0), JISU(0), DINDEX(0), PreStoK(0), PreStoD(0);
#### 특정 구간의 고가 [highest(H,Period)] ####
highVal = dayhigh(0);
for count = 0 to Period-1 {
if dayHigh(count) > highVal then
highVal = dayhigh(count);
}
#### 특정 구간의 저가 [lowest(L,Period)] ####
lowVal = daylow(0);
for count = 0 to Period-1 {
if dayLow(count) < lowVal then
lowVal = dayLow(count);
}
#### Fast StochasticsK ####
StoFastK = (C-lowVal)/(highVal-lowVal)*100;
#### Slow StochasticsK ####
Ep = 2/(Period1+1);
if date != date[1] then {
DINDEX = DINDEX + 1;
PreStoK = StoK[1];
}
if DINDEX <= 1 then
StoK = StoFastK ;
else
StoK = StoFastK * EP + PreStoK * (1-EP);
#### Slow StochasticsD ####
Ep1 = 2/(Period2+1);
if date != date[1] then {
DINDEX = DINDEX + 1;
PreStoD = StoD[1];
}
if DINDEX <= 1 then
StoD = StoK ;
else
StoD = StoK * EP1 + PreStoD * (1-EP1);
plot1(StoK);
plot2(StoD);
2020-07-19
1538
글번호 140783
지표
답변완료
부탁 드립니다.
도움에 감사 드립니다.
수식2)는 수식1)을 타주기(분봉)용으로 작성 해주신 것입니다.
A)질문수식1)을 타주기(분봉)으로 부탁 드립니다.
B)질문수식1)을 타주기(일봉)으로 부탁 드립니다.
미리 경배로 감사 인사 올립니다.
//수식1)
input : p1(60);
var1 = accumn(iff(C>O,C*V,0),p1);
var2 = var1/accumn(iff(C>O,1,0),p1);
//질문수식1)
input : p1(60),sig(20);
var1 = accumn(iff(C>O,C*V,0),p1);
var2 = var1/accumn(iff(C>O,1,0),p1);
var11 = accumn(iff(C<O,C*V,0),p1);
var12 = var1/accumn(iff(C<O,1,0),p1);
var21=var2-var12;
var31=ma(var21,sig);
//수식2)
input : ntime(10),P1(60);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
Array : OO[100](0),CC[100](0),VV[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
OO[0] = O;
VV[0] = V;
for cnt = 1 to 99
{
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
VV[cnt] = VV[cnt-1][1];
}
}
CC[0] = C;
VV[0] = VV[0]+V;
if VV[P1-1] > 0 then
{
var1 = 0;
value1 = 0;
for cnt = 0 to P1-1
{
if CC[cnt] > OO[cnt] then
{
var1 = var1 + (CC[cnt]*VV[cnt]);
value1 = value1 + 1;
}
}
var2 = var1/value1;
plot1(var2);
}
}
2020-07-19
1504
글번호 140781
지표