예스스탁
예스스탁 답변
2025-02-19 12:08:23
안녕하세요
예스스탁입니다.
BarsSinceExit(1)는 직전 청산완료된 거래의 청산으로 부터 봉갯수입니다.
포지션 진행 중 분할청산시 청산봉으로 부터 봉갯수는 별도로 제공되는 함수가 없습니다.
아래와 같이 청산발생후 봉갯수를 따로 카운트해서 사용하셔야 합니다.
input : txratio(0.3),txa(3),txam(5),txb(8),txn(2);
var : trXcond1(false),trXcond2(false),trXcond3(false),ii(0);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "trx1" Then
trXcond1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "trx2" Then
trXcond2 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "trx3" Then
trXcond3 = true;
var1 = highest(H,BarsSinceEntry);
if trXcond1 == false and var1 >= EntryPrice*(txa/100+1) and var1 < EntryPrice*(((txa+txam)/100)+1) Then
{
ExitLong("trx1",AtStop,var1*(1-txn/100),"",currentContracts*txratio,1);
}
if trXcond2 == false and var1 >= EntryPrice*(txb/100+1) and var1 < EntryPrice*(((txb+txam)/100)+1) Then
ExitLong("trx2",AtStop,var1*(1-txn/100),"",currentContracts*txratio,1);
#청산발생하면 ii는 0
if CurrentContracts < CurrentContracts[1] Then
ii = 0;
else
{ #청산발생 후 1씩 증가
if ii >= 0 Then
ii = ii +1;
}
if (ii > 96) and trXcond3 == false and var1 >= EntryPrice*(txa/100+1) and var1 < EntryPrice*(((txa+txam)/100)+1) Then
{
ExitLong("trx3",AtStop,var1*(1-(txn+1)/100),"",currentContracts*txratio,1);
}
}
Else
{
#매수포지션이 아니면 -1로 초기화
ii = -1;
trXcond1 = false;
trXcond2 = false;
trXcond3 = false;
}
즐거운 하루되세요
> 김예스 님이 쓴 글입니다.
> 제목 : 수식문의드립니다.
> 안녕하세요,
아래 분할청산식인데 trx3이 마지막 분할청산 96봉이후에 주문이 들어가게 하고 싶습니다.
BarsSinceExit(1) > 96을 썼는데 안먹힙니다.
뭐가 잘못됐는지 모르겠는데 수정 부탁드립니다.
input : txratio(0.3),txa(3),txam(5),txb(8),txn(2);
var : trXcond1(false),trXcond2(false),trXcond3(false);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "trx1" Then
trXcond1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "trx2" Then
trXcond2 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "trx3" Then
trXcond3 = true;
var1 = highest(H,BarsSinceEntry);
if trXcond1 == false and var1 >= EntryPrice*(txa/100+1) and var1 < EntryPrice*(((txa+txam)/100)+1) Then {
ExitLong("trx1",AtStop,var1*(1-txn/100),"",currentContracts*txratio,1);
}
if trXcond2 == false and var1 >= EntryPrice*(txb/100+1) and var1 < EntryPrice*(((txb+txam)/100)+1) Then
ExitLong("trx2",AtStop,var1*(1-txn/100),"",currentContracts*txratio,1);
if (BarsSinceExit(1) > 96) and trXcond3 == false and var1 >= EntryPrice*(txa/100+1) and var1 < EntryPrice*(((txa+txam)/100)+1) Then {
ExitLong("trx3",AtStop,var1*(1-(txn+1)/100),"",currentContracts*txratio,1);
}
}
if MarketPosition != 1 Then
{
trXcond1 = false;
trXcond2 = false;
trXcond3 = false;
}