커뮤니티
수식 요청 드립니다.
2015-11-02 13:19:10
201
글번호 91903
차트적용 수식 점검 부탁 드립니다.
1.요청 - 당일 1번 진입 당일손실(1.2)(피라미딩 적용, 미적용)
- 진입 후 계속손실 또는 진입수익(1.0PT) 전까지, 기존 당일손실제한 적용
2.요청 - 당일 2번진입 당일손실(1.2) (첫손실 포함, 수익은 제외 당일손절)(피라미딩 적용, 미적용)
- 진입 후 진입수익(1.0PT) 발생 기준, 계속 수익일경우 기존 당일손실제한 적용,
- 진입 후 진입수익(1.0PT) 발생 기준, 계속 손실발생시 10분마다 0.1PT 당일손실제한 차감
2시간 경과 차감 누적으로 손절(0.2PT일경우 1시간 경과 손절)
- 진입 후 진입수익(1.0PT) 발생 기준, 손실발생시 10분마다 0.1PT 차감하고, 다시 진입수익(1.0PT)을 초과할경우, 진입수익(1.0PT) 기준으로 추가 수익시 손실차감 중지, 손실시 손실차감을 계속 하는 수식 입니다.
---------------------------------------------------------------------------------
예) 1. 당일청산 300틱, TRIX, (2. 피라미딩 3EA 적용) 적용할 경우 아래 결과 입니다.
1. 아래수식을 기본수식에 적용 당일손절 1.2PT, 진입수익 1PT, 시간누적 당일손절 차감을
10분에 0.2PT로 적용할 경우, 진입수익 1PT 발생 후 1시간 경과시 강제 청산 안되네요.
당일 1번 진입 후, 계속 손실 발생시에는 시간누적 당일손절 차감되어 강제청산 반대현상.
피라미딩 적용, 미적용, 신호오류 점검 요청 드립니다.
2. 아래수식을 기본수식에 피라미딩 적용, 미적용시 진입신호 청산신호 오류가 발생 하네요.
피라미딩 적용, 미적용, 신호오류 점검 요청 드립니다.
<<< 1. 2. 모두 당일손절제한이 초과해도 손절이 안되고, 누적시간 도달해야 손절 됨니다. >>>
1.
input :N(1),당일손실(1.2),i증감(0.1),진입수량(1),진입수익(1.0);
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이상 발생 => 1.0 기준 으로 수정요청
if Condition11 == true Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitLong("당일손실제한bx31",AtStop,avgEntryPrice-(max(0,(당일손실-(0.2*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.2*DD)))+(dayPL-v1))/CurrentContracts);
}
#당일진입수익이 1.5이상 발생 => 1.0 기준 으로 수정요청
if Condition11 == true Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitShort("당일손실제한sx31",AtStop,avgEntryPrice+((당일손실-(0.2*min(DD,당일손실/0.2)))-(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != -1 Then
Condition12 = false;
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+1.2) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-1.2) 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증감,진입수량);
//=======================================================================================================
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
# 매수/매도청산
If CrossUP(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Sell();
}
SetStopEndofday(150000);
**************************************************************************************
2.
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
input :N(2),당일손실(1.2),i증감(0.1),진입수량(1),진입수익(1.0);
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.2*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.2*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.2*min(DD,당일손실/0.2)))-(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != -1 Then
Condition12 = false;
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+0.3 and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.3) 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증감,진입수량);
//---------------------------------------------------------------------------
# 매수/매도청산
If CrossUP(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Sell();
}
SetStopEndofday(150000);
답변 1
예스스탁 예스스탁 답변
2015-11-02 14:47:48
> dandy 님이 쓴 글입니다.
> 제목 : 수식 요청 드립니다.
> 차트적용 수식 점검 부탁 드립니다.
1.요청 - 당일 1번 진입 당일손실(1.2)(피라미딩 적용, 미적용)
- 진입 후 계속손실 또는 진입수익(1.0PT) 전까지, 기존 당일손실제한 적용
2.요청 - 당일 2번진입 당일손실(1.2) (첫손실 포함, 수익은 제외 당일손절)(피라미딩 적용, 미적용)
- 진입 후 진입수익(1.0PT) 발생 기준, 계속 수익일경우 기존 당일손실제한 적용,
- 진입 후 진입수익(1.0PT) 발생 기준, 계속 손실발생시 10분마다 0.1PT 당일손실제한 차감
2시간 경과 차감 누적으로 손절(0.2PT일경우 1시간 경과 손절)
- 진입 후 진입수익(1.0PT) 발생 기준, 손실발생시 10분마다 0.1PT 차감하고, 다시 진입수익(1.0PT)을 초과할경우, 진입수익(1.0PT) 기준으로 추가 수익시 손실차감 중지, 손실시 손실차감을 계속 하는 수식 입니다.
---------------------------------------------------------------------------------
예) 1. 당일청산 300틱, TRIX, (2. 피라미딩 3EA 적용) 적용할 경우 아래 결과 입니다.
1. 아래수식을 기본수식에 적용 당일손절 1.2PT, 진입수익 1PT, 시간누적 당일손절 차감을
10분에 0.2PT로 적용할 경우, 진입수익 1PT 발생 후 1시간 경과시 강제 청산 안되네요.
당일 1번 진입 후, 계속 손실 발생시에는 시간누적 당일손절 차감되어 강제청산 반대현상.
피라미딩 적용, 미적용, 신호오류 점검 요청 드립니다.
2. 아래수식을 기본수식에 피라미딩 적용, 미적용시 진입신호 청산신호 오류가 발생 하네요.
피라미딩 적용, 미적용, 신호오류 점검 요청 드립니다.
<<< 1. 2. 모두 당일손절제한이 초과해도 손절이 안되고, 누적시간 도달해야 손절 됨니다. >>>
1.
input :N(1),당일손실(1.2),i증감(0.1),진입수량(1),진입수익(1.0);
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이상 발생 => 1.0 기준 으로 수정요청
if Condition11 == true Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitLong("당일손실제한bx31",AtStop,avgEntryPrice-(max(0,(당일손실-(0.2*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.2*DD)))+(dayPL-v1))/CurrentContracts);
}
#당일진입수익이 1.5이상 발생 => 1.0 기준 으로 수정요청
if Condition11 == true Then{
KK = TimeToMinutes(stime)-TT; #발생봉과 현재봉의 분차이
DD = int(KK/10); #분을 10으로 나누어 몇십분 경과했는지 계산
#당일손실값에 0.1*DD만큼 차감
ExitShort("당일손실제한sx31",AtStop,avgEntryPrice+((당일손실-(0.2*min(DD,당일손실/0.2)))-(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != -1 Then
Condition12 = false;
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+1.2) and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-1.2) 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증감,진입수량);
//=======================================================================================================
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
# 매수/매도청산
If CrossUP(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Sell();
}
SetStopEndofday(150000);
**************************************************************************************
2.
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
input :N(2),당일손실(1.2),i증감(0.1),진입수량(1),진입수익(1.0);
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.2*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.2*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.2*min(DD,당일손실/0.2)))-(dayPL-v1))/CurrentContracts);
}
}
if MarketPosition != -1 Then
Condition12 = false;
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and crossup(H,EntryPrice+0.3 and BCount+SCount < N and dayPL > 당일손실 Then
buy("1BX");
if MarketPosition == 1 and CrossDown(L,EntryPrice-0.3) 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증감,진입수량);
//---------------------------------------------------------------------------
# 매수/매도청산
If CrossUP(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and BCount+SCount < N and dayPL > -당일손실 Then
{
Sell();
}
SetStopEndofday(150000);