커뮤니티
수식 요청 드립니다.
2015-10-29 14:55:48
181
글번호 91862
안녕하세요
아래 수식 변경 요청 드립니다.
1. 당일진입횟수 N(1) 제한
-> 당일 진입 수익이 1PT이상 발생 후 부터 10분에 0.1PT씩 당일손실제한이
감소하여 누적 시간이경과, 당일손실제한 0PT가지 감소시 조건만족 강제청산 수식으로
변경 요청 드립니다.(진입 후 손실시 현재 당일손실제한 유지 / 주석 부탁 드립니다.)
2. 당일진입횟수 N(2) 제한
-> 첫진입은 현시스템 유지, 스위칭 이후부터 1. 번시스템과 동일한 누적 시간경과
당일손실제한 0PT가지 감소시 조건만족 강제청산 수식으로 변경 요청 드립니다
2가지 수식 부탁드립니다.
감사합니다.
input :N(1),당일손실(2.0),i증감(0.1),진입수량(1);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//-----------------------------------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
if MarketPosition == -1 Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실-(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+0.5) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.5) and BCount+SCount < N and dayPL > 당일손실 Then
sell("1SX");
//------------------------------------------------------------------------------------------------------ if MarketPosition == 1 Then
Buy("bb",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 Then
sell("ss",AtStop,LatestEntryPrice(0)-i증감,진입수량);
SetStopEndofday(150000);
답변 1
예스스탁 예스스탁 답변
2015-10-29 16:11:32
안녕하세요
예스스탁입니다.
해당식 나열해서 작성하지 않으셔도 됩니다.
시간경과에 따라 0.1씩 감소해서 자동처리되게 식 작성했습니다.
1.
input :N(1),당일손실(2.0),i증감(0.1),진입수량(1),진입수익(1.5);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : TT(0),KK(0),DD(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
Condition11 = false;
v1 = 0;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//-----------------------------------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
#진입후 포지션 수익이 진입수익이상 발생
if Condition11 == false and PositionProfit >= 진입수익 Then{
Condition11 = true;
TT = TimeToMinutes(stime);//시간저장
}
#당일진입수익이 1포인트이상 발생하지 않았으면 기존청산 유지
if Condition11 == false Then
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
#당일진입수익이 1.5이상 발생
if Condition11 == true Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitLong("당일손실제한bx31",AtStop,avgEntryPrice-(max(0,(당일손실-(0.1*DD)))+(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != 1 Then
Condition11 = false;
if MarketPosition == -1 Then{
#진입후 포지션 수익이 진입수익이상 발생
if Condition12 == false and PositionProfit >= 진입수익 Then{
Condition12 = true;
TT = TimeToMinutes(stime);//시간저장
}
#당일진입수익이 1포인트이상 발생하지 않았으면 기존청산 유지
if Condition12 == false Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(max(0,(당일손실-(0.1*DD)))+(dayPL-v1))/CurrentContracts);
}
#당일진입수익이 1.5이상 발생
if Condition11 == true Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitShort("당일손실제한sx31",AtStop,avgEntryPrice+((당일손실-(0.1*min(DD,당일손실/0.1)))-(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != -1 Then
Condition12 = false;
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+0.5) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.5) and BCount+SCount < N and dayPL > 당일손실 Then
sell("1SX");
//------------------------------------------------------------------------------------------------------ if MarketPosition == 1 Then
Buy("bb",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 Then
sell("ss",AtStop,LatestEntryPrice(0)-i증감,진입수량);
SetStopEndofday(150000);
2.
input :N(1),당일손실(2.0),i증감(0.1),진입수량(1),진입수익(1.5);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : TT(0),KK(0),DD(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
Condition11 = false;
v1 = 0;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//-----------------------------------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
#진입후 포지션 수익이 진입수익이상 발생
if Condition11 == false and PositionProfit >= 진입수익 Then{
Condition11 = true;
TT = TimeToMinutes(stime);//시간저장
}
#당일진입수익이 1포인트이상 발생하지 않았으면 기존청산 유지
if Condition11 == false or BCount+SCount == 1 Then
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
#당일진입수익이 1.5이상 발생
if Condition11 == true and BCount+SCount >= 2 Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitLong("당일손실제한bx31",AtStop,avgEntryPrice-(max(0,(당일손실-(0.1*DD)))+(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != 1 Then
Condition11 = false;
if MarketPosition == -1 Then{
#진입후 포지션 수익이 진입수익이상 발생
if Condition12 == false and PositionProfit >= 진입수익 Then{
Condition12 = true;
TT = TimeToMinutes(stime);//시간저장
}
#당일진입수익이 1포인트이상 발생하지 않았으면 기존청산 유지
if Condition12 == false or BCount+SCount == 1 Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(max(0,(당일손실-(0.1*DD)))+(dayPL-v1))/CurrentContracts);
}
#당일진입수익이 1.5이상 발생
if Condition11 == true and BCount+SCount >= 2 Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitShort("당일손실제한sx31",AtStop,avgEntryPrice+((당일손실-(0.1*min(DD,당일손실/0.1)))-(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != -1 Then
Condition12 = false;
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+0.5) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.5) and BCount+SCount < N and dayPL > 당일손실 Then
sell("1SX");
//------------------------------------------------------------------------------------------------------ if MarketPosition == 1 Then
Buy("bb",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 Then
sell("ss",AtStop,LatestEntryPrice(0)-i증감,진입수량);
SetStopEndofday(150000);
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식 요청 드립니다.
> 안녕하세요
아래 수식 변경 요청 드립니다.
1. 당일진입횟수 N(1) 제한
-> 당일 진입 수익이 1PT이상 발생 후 부터 10분에 0.1PT씩 당일손실제한이
감소하여 누적 시간이경과, 당일손실제한 0PT가지 감소시 조건만족 강제청산 수식으로
변경 요청 드립니다.(진입 후 손실시 현재 당일손실제한 유지 / 주석 부탁 드립니다.)
2. 당일진입횟수 N(2) 제한
-> 첫진입은 현시스템 유지, 스위칭 이후부터 1. 번시스템과 동일한 누적 시간경과
당일손실제한 0PT가지 감소시 조건만족 강제청산 수식으로 변경 요청 드립니다
2가지 수식 부탁드립니다.
감사합니다.
input :N(1),당일손실(2.0),i증감(0.1),진입수량(1);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//-----------------------------------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
if MarketPosition == -1 Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실-(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+0.5) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.5) and BCount+SCount < N and dayPL > 당일손실 Then
sell("1SX");
//------------------------------------------------------------------------------------------------------ if MarketPosition == 1 Then
Buy("bb",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 Then
sell("ss",AtStop,LatestEntryPrice(0)-i증감,진입수량);
SetStopEndofday(150000);