예스스탁
예스스탁 답변
2024-01-03 11:08:21
안녕하세요
예스스탁입니다.
수식 붙여넣기가 잘못되었습니다.
최근 진입의 수량을 별도로 산정해서
최근진입수량+최근진입수량의 0.7배를 반올림하시면 됩니다.
input : Pst(1); // 매수,매도
input : gap(25), pt(20), multi(0.7);
var : vol(0),v1(0);
value1 = gap/PointValue;
value2 = pt/PointValue;
if pst == 1 Then
{
if MarketPosition == 0 and TotalTrades == TotalTrades[1] Then
{
vol = 1;
Buy("b",OnClose,Def,vol);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
v1 = CurrentContracts-CurrentContracts[1];
vol = Round(v1+v1*multi,0);
Buy("bb",AtLimit,EntryPrice(0)-PriceScale*(value1*MaxEntries),vol);
ExitLong("bp",AtLimit,AvgEntryPrice+PriceScale*Value2);
}
}
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 안녕하세요.
지난번 문의 드린 내용입니다.
(게시판 번호 : 85198)
2번 답변에 대해 재 질문 드립니다.
우선 반올림 처리를 안해주신것 같습니다.
제 수식과 다른 부분이 없어 보입니다.
제가 round 및 Ceiling 처리를 해봐도
제가 의도한 대로 수량 진입이 안됩니다.
코딩 수정후 직접 수량이 나오는지 점검 부탁드립니다.
감사합니다.
--------------------------------------------------------------------
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템식 부탁드립니다.
>
안녕하세요
예스스탁입니다.
1
시스템식 하단에 아래 내용 추가하시기 바랍니다.
손익표시 부분은 종목에 따라 소숫점이하 자리수를 지정하셔야 합니다.
기본은 2자리로 지정해 드립니다.
input : 소숫점이하자리수(2);
var : Grid(0);
var : num(0),Pl(0),R(0);
if Bdate != Bdate[1] Then
{
var1 = NetProfit;
Var2 = TotalTrades;
Var3 = 0;
}
pl = NetProfit-var1+PositionProfit;
num = TotalTrades-Var2;
if MarketPosition != 0 Then
num = num+1;
if TotalTrades > TotalTrades[1] and PositionProfit(1) > 0 Then
var3 = var3+1;
if MarketPosition == 0 Then
R = Var3/num;
Else
{
if PositionProfit > 0 Then
R = (Var3+1)/num*100;
Else
R = (Var3)/num*100;
}
if Index == 0 Then
Grid = Grid_New(1, 2, 6,White, Gray, 1, Gray, 0);
if LastBarOnChart == 1 Then
{
Grid_Cell(Grid,0,0,"당일매매손익",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,0,NumToStr(pl,소숫점이하자리수),0,0,BLACK,White);
Grid_Cell(Grid,0,1,"당일매매횟수",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,1,NumToStr(num,0),0,0,BLACK,White);
Grid_Cell(Grid,0,2,"현재포지션최대손실",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,2,NumToStr(MaxPositionProfit,소숫점이하자리수),0,0,BLACK,White);
Grid_Cell(Grid,0,3,"당일매매승률",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,3,NumToStr(R,2),0,0,BLACK,White);
}
2
반올림처리를 하셔야 합니다.
input : Pst(1); // 매수,매도
input : gap(25), pt(20), multi(0.7);
var : vol(0);
value1 = gap/PointValue;
value2 = pt/PointValue;
if pst == 1 Then
{
if MarketPosition == 0 and TotalTrades == TotalTrades[1] Then
{
vol = 1;
Buy("b",OnClose,Def,vol);
}
if MarketPosition == 1 Then
{
vol = vol+(vol*multi);
Buy("bb",AtLimit,EntryPrice(0)-PriceScale*(value1*MaxEntries),vol);
ExitLong("bp",AtLimit,AvgEntryPrice+PriceScale*Value2);
}
}
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 항상 도움 주셔서 감사합니다.
종목 : 해외선물(통화선물)
차트 : 1분봉
요청사항1 : Grid 함수를 사용해서 아래 사항을 차트 왼쪽 상단에 표시하고 싶습니다.
1. 당일 매매손익 차트에 표시
2. 당일 매매횟수 차트에 표시
3. 현재 포지션의 최대손실(드롭다운)을 차트에 표시
4. 당일 매매 승률 차트에 표시
요청사항2 : 아래와 같이 손실시 특정배수로 진입하는 수식을 작성했는데
수량이 제대로 안됩니다.(피라미딩 모든진입 신호 허용 선택함)
수식 수정 부탁드립니다.
#-----------------------------------------
input : Pst(1); // 매수,매도
input : gap(25), pt(20), multi(0.7);
var : vol(0);
value1 = gap/PointValue;
value2 = pt/PointValue;
if pst == 1 Then
{
if MarketPosition == 0 and TotalTrades == TotalTrades[1] Then
{
vol = 1;
Buy("b",OnClose,Def,vol);
}
if MarketPosition == 1 Then
{
vol = vol+(vol*multi);
Buy("bb",AtLimit,EntryPrice(0)-PriceScale*(value1*MaxEntries),vol);
ExitLong("bp",AtLimit,AvgEntryPrice+PriceScale*Value2);
}
}
시스템식 부탁드립니다.
감사합니다.