커뮤니티
수정 부탁드립니다.
2013-12-30 10:00:53
202
글번호 70893
아래 수식 보시고 수정 부탁드리겠습니다.
1. 설정의 비용/수량 부분의 거래수량을 조정하면 1계약일때와 다계약일때 신호가 다르게 나옵니다. 다계약일 경우도 1계약과 신호가 동일하게 나올수 있게 수정부탁드리고.. 이유를 알고 싶습니다.
2. 청산쪽 수식이 맞는지 점검부탁립니다.
3. 청산쪽에 있는 아래부분을 if문으로 바꿔서.. 청산이 되면
print문으로 xx.txt에 가격과 시간이 출력되게 수정 부탁드립니다.
ExitLong("선물매수상한청산",atlimit,int(bp*1.1/0.05+0.00001)*0.05);
ExitLong("선물매수하한청산",AtStop,BP-int(BP*0.1/0.05)*0.05);
ExitLong("목표수익1",AtLimit,EntryPrice+((목표수익)-(PLR)));
ExitLong("손실제한1",AtStop,EntryPrice+((손실제한)-(PLR)));
4. 질문입니다.
우리투자증권, 리딩투자증권은 예스트레이더 버젼이 다릅니까?
text_New 명령이 안되는것 같아서 질문드립니다.
다르다면 수식내에서 버젼체크해서 예스트레이더 4.0 이하에서는 실행이
안되게 하는 방법 있으면 예좀 들어주시면 감사하겠습니다.
새해 복 많이 받으세요..
아래.
----------------------------------------------------------------
input : 목표수익(2);
input : 수익확보(2),스탑(0.5);
input : 손실제한(-2);
var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
#당일누적손익계산 시작
XCommission = ((C*ExitCommission)/100)*CurrentContracts; #%설정
XSlippage = (ExitSlippage)*CurrentContracts; #Pt설정
PLR = 0;
count = 0;
for var1 = 1 to 20{
if sdate == EntryDate(var1) Then{
count = count+1;
PLR = PLR+PositionProfit(var1);
}
}
if MarketPosition() == 0 Then{
OpenPL = 0;
dayPL = PLR;
}
Else{
OpenPL = (PositionProfit-(XCommission+XSlippage));
dayPL = PLR+OpenPL;
}
var : cnt(0),sh1(0),sh2(0);
sh1 = 0;
sh2 = 0;
for cnt = 1 to 20 {
if ExitDate(cnt) == sdate and PositionProfit(cnt) > 0 Then
sh1 = sh1+1;
if ExitDate(cnt) == sdate and PositionProfit(cnt) < 0 Then
sh2 = sh2+1;
}
if dayPL > 손실제한 and dayPL < 목표수익 then {
if crossup(c,ma(c,60)) Then
buy("b");
if CrossDown(c,ma(c,60)) Then
exitlong("s");
}
if MarketPosition == 1 Then{
var11 = highest(H,BarsSinceEntry+1);#매수 진입이후 최고 수익
If var11 >= EntryPrice+수익확보 Then
ExitLong("수익확보1",AtStop,EntryPrice-스탑);
ExitLong("선물매수상한청산",atlimit,int(bp*1.1/0.05+0.00001)*0.05);
ExitLong("선물매수하한청산",AtStop,BP-int(BP*0.1/0.05)*0.05);
ExitLong("목표수익1",AtLimit,EntryPrice+((목표수익)-(PLR)));
ExitLong("손실제한1",AtStop,EntryPrice+((손실제한)-(PLR)));
}
if MarketPosition == -1 Then{
var12 = Lowest(L,BarsSinceEntry+1);#매도 진입이후 최고 수익
If var12 <= EntryPrice-수익확보 Then
ExitShort("d수익확보",AtStop,EntryPrice+스탑);
ExitShort("선물매도하한청산",atlimit,BP-int(BP*0.1/0.05)*0.05);
ExitShort("선물매도상한청산",AtStop,int(bp*1.1/0.05+0.00001)*0.05);
ExitShort("목표수익2",AtLimit,EntryPrice+(-(목표수익)+(PLR)));
ExitShort("손실제한2",AtStop,EntryPrice+(-(손실제한)+(PLR)));
}
SetStopEndofday;
답변 1
예스스탁 예스스탁 답변
2013-12-30 15:20:06
안녕하세요
예스스탁입니다.
1.
해당식은 수량에 따라 차이가 발생할수 있습니다.
손익함수는 1계약 손익이 리턴되는 것은 아닙니다.
2계약으로 매수진입해서 1포인트 상승했을때 청산이 되면
계약수가 2이므로 2포인트 수익이 됩니다.
목표수익과 손실제한을 계약수에 맞게 배수로 지정해 주셔야 합니다.
해당 부분 수식에서 설정수량을 알수 없으므로
수동으로 지정해 주셔야 합니다.
스탑과 손실제한은 가격이므로 그대로 사용하시면 도비니다.
2.
예 맞습니다.
3
수식 맨 아래에 아래 내용 추가하시면 됩니다.
if BarsSinceExit(1) == 1 Then
Print("exit.txt","청산시간 %.f,청산가격 %.2f",ExitTime(1),ExitPrice(1));
수식에서 위와 같이 작성해 추가하시면
청산후 첫번째 봉일때 출력이 되는데
실시간에서 해당 봉에서 시세가 들어올때마다 값이 적혀지게 되는데
해당 부분은 수식에서 따로 컨트롤이 되지 않습니다
신호발생된 시간과 가격등은 시스템 트레이딩 리포트의
거래내역에 나오게 됩니다.
거래내역 위에서 마우스 우클릭하시면 엑셀로 보내기 기능이 있습니다.
4.
예 버전이 다릅니다.
예스트레이더는 4.0버전이고
우리트레이더와 리딩트레이더는 3.1버전으로 아직 업그레이드가 되지 않습니다.
텍스트,추세선등의 함수는 사용하실 수 없습니다.
수식안에서 버전체크가 되지 않습니다.
사용자분이 따로 구분해 사용하셔야 합니다.
새해 복 많이 받으세요
> 중복필명 님이 쓴 글입니다.
> 제목 : 수정 부탁드립니다.
> 아래 수식 보시고 수정 부탁드리겠습니다.
1. 설정의 비용/수량 부분의 거래수량을 조정하면 1계약일때와 다계약일때 신호가 다르게 나옵니다. 다계약일 경우도 1계약과 신호가 동일하게 나올수 있게 수정부탁드리고.. 이유를 알고 싶습니다.
2. 청산쪽 수식이 맞는지 점검부탁립니다.
3. 청산쪽에 있는 아래부분을 if문으로 바꿔서.. 청산이 되면
print문으로 xx.txt에 가격과 시간이 출력되게 수정 부탁드립니다.
ExitLong("선물매수상한청산",atlimit,int(bp*1.1/0.05+0.00001)*0.05);
ExitLong("선물매수하한청산",AtStop,BP-int(BP*0.1/0.05)*0.05);
ExitLong("목표수익1",AtLimit,EntryPrice+((목표수익)-(PLR)));
ExitLong("손실제한1",AtStop,EntryPrice+((손실제한)-(PLR)));
4. 질문입니다.
우리투자증권, 리딩투자증권은 예스트레이더 버젼이 다릅니까?
text_New 명령이 안되는것 같아서 질문드립니다.
다르다면 수식내에서 버젼체크해서 예스트레이더 4.0 이하에서는 실행이
안되게 하는 방법 있으면 예좀 들어주시면 감사하겠습니다.
새해 복 많이 받으세요..
아래.
----------------------------------------------------------------
input : 목표수익(2);
input : 수익확보(2),스탑(0.5);
input : 손실제한(-2);
var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
#당일누적손익계산 시작
XCommission = ((C*ExitCommission)/100)*CurrentContracts; #%설정
XSlippage = (ExitSlippage)*CurrentContracts; #Pt설정
PLR = 0;
count = 0;
for var1 = 1 to 20{
if sdate == EntryDate(var1) Then{
count = count+1;
PLR = PLR+PositionProfit(var1);
}
}
if MarketPosition() == 0 Then{
OpenPL = 0;
dayPL = PLR;
}
Else{
OpenPL = (PositionProfit-(XCommission+XSlippage));
dayPL = PLR+OpenPL;
}
var : cnt(0),sh1(0),sh2(0);
sh1 = 0;
sh2 = 0;
for cnt = 1 to 20 {
if ExitDate(cnt) == sdate and PositionProfit(cnt) > 0 Then
sh1 = sh1+1;
if ExitDate(cnt) == sdate and PositionProfit(cnt) < 0 Then
sh2 = sh2+1;
}
if dayPL > 손실제한 and dayPL < 목표수익 then {
if crossup(c,ma(c,60)) Then
buy("b");
if CrossDown(c,ma(c,60)) Then
exitlong("s");
}
if MarketPosition == 1 Then{
var11 = highest(H,BarsSinceEntry+1);#매수 진입이후 최고 수익
If var11 >= EntryPrice+수익확보 Then
ExitLong("수익확보1",AtStop,EntryPrice-스탑);
ExitLong("선물매수상한청산",atlimit,int(bp*1.1/0.05+0.00001)*0.05);
ExitLong("선물매수하한청산",AtStop,BP-int(BP*0.1/0.05)*0.05);
ExitLong("목표수익1",AtLimit,EntryPrice+((목표수익)-(PLR)));
ExitLong("손실제한1",AtStop,EntryPrice+((손실제한)-(PLR)));
}
if MarketPosition == -1 Then{
var12 = Lowest(L,BarsSinceEntry+1);#매도 진입이후 최고 수익
If var12 <= EntryPrice-수익확보 Then
ExitShort("d수익확보",AtStop,EntryPrice+스탑);
ExitShort("선물매도하한청산",atlimit,BP-int(BP*0.1/0.05)*0.05);
ExitShort("선물매도상한청산",AtStop,int(bp*1.1/0.05+0.00001)*0.05);
ExitShort("목표수익2",AtLimit,EntryPrice+(-(목표수익)+(PLR)));
ExitShort("손실제한2",AtStop,EntryPrice+(-(손실제한)+(PLR)));
}
SetStopEndofday;
다음글
이전글