커뮤니티
목표수익 오차 변수 도움 부탁드립니다.
2016-08-31 13:42:59
93
글번호 101532
수식 작성 감사드립니다.
다름이 아니라 지난번에 목표수익 50틱에 +- 오차 5틱 범위는 허용해서 매매정지를 부탁드렸는데 그부분이 누락된거 같습니다.
그래서 나타나는 현상이 청산을 했는데 48틱이나. 49틱 일 경우 다음번 매매신호에도 들어가서 기어이 1틱. 2틱을 청산하고 끝난다는 것입니다.
오차범위 넣을 수 있는 수식 부탁드립니다.
즐거운 하루 되세요^^
input : bs(10),ssss(10),당일수익틱수(50);
var : MACDP1(40),MACDP2(70);
var: P1(5),P2(20);
var : np(0),n1(0),daypl(0),당일수익(0),Xcond(false);
var1 = macd(MACDP1,MACDP2);
NP = NetProfit;
당일수익 = PriceScale*당일수익틱수;
if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then{
N1 = NP;
Xcond = false;
}
daypl = np-n1;
if TotalTrades > TotalTrades[1] and (IsExitName("bp",1) or IsExitName("sx",1)) Then
Xcond = true;
if ((stime >= 090000 and stime < 150000) or stime >= 170000 or stime < 030000) and Xcond == false then{
if var1 > 50 And crossup(var1) Then
{
if MarketPosition == 0 then
Buy("");
}
if var1 < 50 And CrossDown(var1) Then
{
if MarketPosition == 0 Then
Sell("");
}
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
var1 = H;
if H > var1 Then
var1 = H;
if MaxEntries == 1 Then{
ExitLong("",Atlimit,EntryPrice+PriceScale*bs);
if var1 >= EntryPrice+PriceScale*20 Then
exitlong("",AtStop,EntryPrice+PriceScale*10);
}
}
if MarketPosition == -1 Then{
if CurrentContracts > CurrentContracts[1] Then
var2 = L;
if L < var2 Then
var2 = L;
if MaxEntries == 1 Then{
ExitShort("",Atlimit,EntryPrice-PriceScale*ssss);
if var2 <= EntryPrice-PriceScale*-10 Then
ExitShort("",AtStop,EntryPrice-PriceScale*-10);
}
}
if MarketPosition == 1 Then
exitlong("bp",atlimit,EntryPrice+당일수익-daypl);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,EntryPrice-당일수익+daypl);
}
답변 1
예스스탁 예스스탁 답변
2016-09-01 09:00:40
안녕하세요
예스스탁입니다.
input : bs(10),ssss(10),당일수익틱수(50),오차(5);
var : MACDP1(40),MACDP2(70);
var: P1(5),P2(20);
var : np(0),n1(0),daypl(0),당일수익(0),Xcond(false),오차범위(0);
var1 = macd(MACDP1,MACDP2);
NP = NetProfit;
당일수익 = PriceScale*당일수익틱수;
오차범위 = PriceScale*오차;
if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then{
N1 = NP;
Xcond = false;
}
daypl = np-n1;
if TotalTrades > TotalTrades[1] and (IsExitName("bp",1) or IsExitName("sx",1)) Then
Xcond = true;
if ((stime >= 090000 and stime < 150000) or stime >= 170000 or stime < 030000) and Xcond == false and
(daypl <= 당일수익-오차범위 or dayPL >= 당일수익+오차범위) then{
if var1 > 50 And crossup(var1) Then
{
if MarketPosition == 0 then
Buy("");
}
if var1 < 50 And CrossDown(var1) Then
{
if MarketPosition == 0 Then
Sell("");
}
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
var1 = H;
if H > var1 Then
var1 = H;
if MaxEntries == 1 Then{
ExitLong("",Atlimit,EntryPrice+PriceScale*bs);
if var1 >= EntryPrice+PriceScale*20 Then
exitlong("",AtStop,EntryPrice+PriceScale*10);
}
}
if MarketPosition == -1 Then{
if CurrentContracts > CurrentContracts[1] Then
var2 = L;
if L < var2 Then
var2 = L;
if MaxEntries == 1 Then{
ExitShort("",Atlimit,EntryPrice-PriceScale*ssss);
if var2 <= EntryPrice-PriceScale*-10 Then
ExitShort("",AtStop,EntryPrice-PriceScale*-10);
}
}
if MarketPosition == 1 Then
exitlong("bp",atlimit,EntryPrice+당일수익-daypl);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,EntryPrice-당일수익+daypl);
}
즐거운 하루되세요
> 생생파생 님이 쓴 글입니다.
> 제목 : 목표수익 오차 변수 도움 부탁드립니다.
> 수식 작성 감사드립니다.
다름이 아니라 지난번에 목표수익 50틱에 +- 오차 5틱 범위는 허용해서 매매정지를 부탁드렸는데 그부분이 누락된거 같습니다.
그래서 나타나는 현상이 청산을 했는데 48틱이나. 49틱 일 경우 다음번 매매신호에도 들어가서 기어이 1틱. 2틱을 청산하고 끝난다는 것입니다.
오차범위 넣을 수 있는 수식 부탁드립니다.
즐거운 하루 되세요^^
input : bs(10),ssss(10),당일수익틱수(50);
var : MACDP1(40),MACDP2(70);
var: P1(5),P2(20);
var : np(0),n1(0),daypl(0),당일수익(0),Xcond(false);
var1 = macd(MACDP1,MACDP2);
NP = NetProfit;
당일수익 = PriceScale*당일수익틱수;
if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then{
N1 = NP;
Xcond = false;
}
daypl = np-n1;
if TotalTrades > TotalTrades[1] and (IsExitName("bp",1) or IsExitName("sx",1)) Then
Xcond = true;
if ((stime >= 090000 and stime < 150000) or stime >= 170000 or stime < 030000) and Xcond == false then{
if var1 > 50 And crossup(var1) Then
{
if MarketPosition == 0 then
Buy("");
}
if var1 < 50 And CrossDown(var1) Then
{
if MarketPosition == 0 Then
Sell("");
}
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
var1 = H;
if H > var1 Then
var1 = H;
if MaxEntries == 1 Then{
ExitLong("",Atlimit,EntryPrice+PriceScale*bs);
if var1 >= EntryPrice+PriceScale*20 Then
exitlong("",AtStop,EntryPrice+PriceScale*10);
}
}
if MarketPosition == -1 Then{
if CurrentContracts > CurrentContracts[1] Then
var2 = L;
if L < var2 Then
var2 = L;
if MaxEntries == 1 Then{
ExitShort("",Atlimit,EntryPrice-PriceScale*ssss);
if var2 <= EntryPrice-PriceScale*-10 Then
ExitShort("",AtStop,EntryPrice-PriceScale*-10);
}
}
if MarketPosition == 1 Then
exitlong("bp",atlimit,EntryPrice+당일수익-daypl);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,EntryPrice-당일수익+daypl);
}
다음글
이전글