답변완료
data2 box
input : N(50);
var : TL1(0),TL2(0),cnt(0);
var : TX1(0),TX2(0),TL3(0),TL4(0),TL5(0),TL6(0);
For cnt = 0 to 49
{
TL_Delete(TL1[cnt]);
TL_Delete(TL2[cnt]);
Text_Delete(TX1[cnt]);
Text_Delete(TX2[cnt]);
TL_Delete(TL3[cnt]);
TL_Delete(TL4[cnt]);
TL_Delete(TL5[cnt]);
TL_Delete(TL6[cnt]);
}
TL1 = TL_New_Self(sDate,sTime,data2(highest(H,N)),NextBarSdate,NextBarStime,data2(highest(H,N)));
TL2 = TL_New_Self(sDate,sTime,data2(lowest(L,N)),NextBarSdate,NextBarStime,data2(lowest(L,N)));
TL_SetColor(TL1,Red);
TL_SetColor(TL2,Blue);
TL_SetSize(TL1,1);
TL_SetSize(TL2,1);
TL_SetExtLeft(TL1,true);
TL_SetExtLeft(TL2,true);
TX1 = Text_New_Self(Data2(sDate[NthHighestBar(1,H,N)]),Data2(stime[NthhighestBar(1,H,N)]),Data2(highest(H+PriceScale*1,N)),"■");
TX2 = Text_New_Self(Data2(sDate[NthLowestBar(1,L,N)]),Data2(stime[NthLowestBar(1,L,N)]),Data2(Lowest(L-PriceScale*1,N)),"■");
Text_SetStyle(TX1,2,1);
Text_SetStyle(TX2,2,0);
Text_SetColor(TX1,Blue);
Text_SetColor(TX2,Magenta);
Text_SetSize(tx1,40);
Text_SetSize(tx2,40);
TL3 = TL_New_Self(Data2(sDate[NthHighestBar(1,H,N)]),Data2(stime[NthhighestBar(1,H,N)]),-9999,Data2(sDate[NthHighestBar(1,H,N)]),Data2(stime[NthhighestBar(1,H,N)]),9999);
TL4 = TL_New_Self(Data2(sDate[NthlowestBar(1,L,N)]),Data2(stime[NthlowestBar(1,L,N)]),-9999,Data2(sDate[NthlowestBar(1,L,N)]),Data2(stime[NthlowestBar(1,L,N)]),9999);
TL_SetColor(TL3,Pink);
TL_SetColor(TL4,Gold);
TL_SetSize(TL3,5);
TL_SetSize(TL4,5);
TL5 = TL_New(Data2(sDate[NthHighestBar(1,H,N)]),Data2(stime[NthhighestBar(1,H,N)]),-9999,Data2(sDate[NthHighestBar(1,H,N)]),Data2(stime[NthhighestBar(1,H,N)]),9999);
TL6 = TL_New(Data2(sDate[NthlowestBar(1,L,N)]),Data2(stime[NthlowestBar(1,L,N)]),-9999,Data2(sDate[NthlowestBar(1,L,N)]),Data2(stime[NthlowestBar(1,L,N)]),9999);
TL_SetColor(TL5,Pink);
TL_SetColor(TL6,Gold);
TL_SetSize(TL5,5);
TL_SetSize(TL6,5);
Plot1(Data2(c));
data2의 최근 50봉 중에서 최저가에 표시되는 세로선을 기준으로, 좌측으로 50봉까지 세로선의 변화에 따라가며 전체박스. 감사합니다.
2023-12-26
2310
글번호 175191
지표
답변완료
시스템식 부탁드립니다.
안녕하세요?
항상 도움 주셔서 감사합니다.
종목 : 마이크로_호주통화
차트 : 1분봉
아래와 같이 가르쳐주신 대로 코딩했습니다.
이와 관련하여 몇가지 문의 드립니다.
문의사항1 : 평가금액을 괄호처럼 코딩하면(PositionProfit*BigPointValue)
평가금액이 $로 표시되는게 맞나요?
원화 또는 point로 표시하려면 어떻게 해야 하나요?
문의사항2 : 아래처럼 코딩시 표시되는 예수금은 원화 인가요? 아니면 $인가요?
제가 예수금이 없어서 0으로 표시되는것 같은데
달러 또는 원화로 표시할수 있는 방법이 있나요?
문의사항3 : 아래와 같이 코딩시 증거금은 왜 0으로 표시되나요?
마이크로 호주선물 1계약이면 1계약 증거금이 표시되어야 하지 않나요?
만약에 2계약이면 2계약 증거금이 표시 되는게 맞지 않을까요?
모의투자로 테스트 중인데 마이크로 호주 1계약 매수중인데
증거금이 0으로 나옵니다.
문의사항4 : 예수금이 100$이고, 현재 포지션의 평가손실이 50$ 라고 할경우
예수금과 평가손실의 합이 50$ 보다 작으면 모든 포지션을 청산 후
매매를 중단하는 시스템식 부탁드립니다.
아래의 시스템식에 추가 부탁드립니다.
문의사항5 : 손절 방법에 대해 아래 코딩이 맞는지 확인 부탁드립니다.
(마이크로 호주선물 경우 : 현재값 0.6800, 틱밸류:1, 틱사이즈:0.0001)
value1 = 30
SetStopLoss(value1/pricescale,PointStop); // [30포인트]포인트로 손절
# 30포인트면 손절값이 0.6800+30=30.6800 인가요?
# 아니면 0.0030포인트 손절값이 0.6800+0.0030=0.6830이 맞는건가요?
SetStopLoss(value1*pricescale,PointStop); // [30틱]틱으로 손절
SetStopLoss(value1/pointvalue,PointStop); // [30$]$로 손절
SetStopLoss(value1/pointvalue*1200,PointStop); // [36,000원]원화로 손절(환율:1,200원)
문의사항6 : SetStopLoss 함수를 아래와 같이 여러번 사용해도 되나요?
SetStopLoss(value1/pricescale,PointStop); // [30포인트]포인트로 손절
SetStopLoss(value1*pricescale,PointStop); // [30틱]틱으로 손절
SetStopLoss(value1/pointvalue,PointStop); // [30$]$로 손절
SetStopLoss(value1/pointvalue*1200,PointStop); // [36,000원]원화로 손절
문의사항7 : 마이크로 호주통화를 매수로 1계약 0.6830에 진입했다고 가정하고
진입가격대비 30틱 하락시 손절한다고 할경우
손절가격[라인]을 수평라인으로 차트에 표시하고 싶습니다.
예) 0.6830에 매수 1계약 진입
0.6820에 매수 2계약 진입시
가격 하락시 계속 배수로 매수 진입
손절을 30틱으로 설정했을 경우
1계약에 대한 손절가격인 0.6800에 손절라인을 표시하고
2계약에 대한 손절가격인 0.6790에 손절라인을 표시하고 싶습니다.
추가 진입이 있을 경우 30틱 간격으로 손절 라인을 계속 표시하고 싶습니다.
#-------------------------------------------------------------------------
input : Pst(1); // 매수,매도
input : gap(25), pt(20);
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+1;
Buy("bb",AtLimit,EntryPrice(0)-PriceScale*(value1*MaxEntries),vol);
ExitLong("bp",AtLimit,AvgEntryPrice+PriceScale*Value2);
}
}
var : Grid(0);
var : acc("");
acc = "000-00-00"; //적용계좌번호
if Index == 0 Then
Grid = Grid_New(2, 2, 6,White, Gray, 1, Gray, 0);
if LastBarOnChart == 1 Then
{
Grid_Cell(Grid,0,0,"포지션",0,0,BLACK,LightBlue);
if MarketPosition == 1 Then
Grid_Cell(Grid,1,0,"매수",0,0,BLACK,White);
else if MarketPosition == -1 Then
Grid_Cell(Grid,1,0,"매도",0,0,BLACK,White);
else
Grid_Cell(Grid,1,0,"-",0,0,BLACK,White);
Grid_Cell(Grid,0,1,"수량",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,1,NumToStr(CurrentContracts,0),0,0,BLACK,White);
Grid_Cell(Grid,0,2,"평가금액($)",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,2,NumToStr(PositionProfit*BigPointValue,0),0,0,BLACK,White);
Grid_Cell(Grid,0,3,"계좌번호",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,3,acc,0,0,BLACK,White);
Grid_Cell(Grid,0,4,"예수금",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,4,NumToStr(GetUnclearedDeposits(acc),0),0,0,BLACK,White);
Grid_Cell(Grid,0,5,"증거금",0,0,BLACK,LightBlue);
Grid_Cell(Grid,1,5,NumToStr(GetOpenOrderInitialMargin(acc),0),0,0,BLACK,White);
}
문의사항8 : 마지막으로 첨부사진에 대해 문의드립니다.
첨부 사진은 예스트레이더를
같은증권사, 같은종목, 같은타임프레임, 같은시스템을 적용한 경우입니다.
다만 각각 다른 컴퓨터에서 실행한 경우입니다.
그런데 매매내역을 보면 매매성과와 매매기간이 다릅니다.
첨부 이미지를 보면 아시겠지만 같은 건수(10,000건)인데도
기간이 하나는 2023.12.04부터 그리고 다른 하나는 2023.12.06부터 입니다.
왜 이런 현상이 일어나지 그리고 해결방법이 무엇인지 설명좀 부탁드립니다.
감사합니다.
2023-12-26
1755
글번호 175186
시스템