예스스탁
예스스탁 답변
2024-12-23 14:34:40
안녕하세요
예스스탁입니다.
현재 수식에 각 청산이
각 포지션 진입이후에 1회씩만 동작하게 되어 있습니다.
아마 동일이름의 청산이 2번 발생한다면
한봉에 동시에 2개이상 청산이 발생한 경우일 것 같습니다.
LatestExitName(0)이 마지막것만 리턴해서
한봉에 2개 이상 청산이 발생하면 마지막것만 condition값이 true가 되게 됩니다.
가격으로 진입이후 제어하는 내용도 추가해 드립니다.
var : 손청1(30),손청2(45),손청3(60);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "B_손청1" Then
Condition1 = true;
if LatestExitName(0) == "B_손청2" Then
Condition2 = true;
if LatestExitName(0) == "B_손청3" Then
Condition3 = true;
}
if Condition1 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청1 Then
ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1);
if Condition2 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청2 Then
ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1);
if Condition3 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청3 Then
ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1);
if CrossDown(ma(c,20),ma(c,60)) Then
ExitLong();
}
Else
{
Condition1 = False;
Condition2 = False;
Condition3 = False;
}
if MarketPosition == -1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "S_손청1" Then
Condition11 = true;
if LatestExitName(0) == "S_손청2" Then
Condition22 = true;
if LatestExitName(0) == "S_손청3" Then
Condition33 = true;
}
if Condition11 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then
ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1);
if Condition22 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청2 Then
ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1);
if Condition33 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청3 Then
ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1);
if CrossUp(ma(c,20),ma(c,60)) Then
ExitShort();
}
Else
{
Condition11 = False;
Condition22 = False;
Condition33 = False;
}
즐거운 하루되세요
> 카르마다 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> var : 손청1(30),손청2(45),손청3(60);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "B_손청1" Then
Condition1 = true;
if LatestExitName(0) == "B_손청2" Then
Condition2 = true;
if LatestExitName(0) == "B_손청3" Then
Condition3 = true;
}
if Condition1 == False and MarketPosition == 1 Then
ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1);
if Condition2 == False and MarketPosition == 1 Then
ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1);
if Condition3 == False and MarketPosition == 1 Then
ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1);
}
Else
{
Condition1 = False;
Condition2 = False;
Condition3 = False;
}
if MarketPosition == -1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "S_손청1" Then
Condition11 = true;
if LatestExitName(0) == "S_손청2" Then
Condition22 = true;
if LatestExitName(0) == "S_손청3" Then
Condition33 = true;
}
if Condition11 == False and MarketPosition == -1 Then
ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1);
if Condition22 == False and MarketPosition == -1 Then
ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1);
if Condition33 == False and MarketPosition == -1 Then
ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1);
}
Else
{
Condition11 = False;
Condition22 = False;
Condition33 = False;
}
수고많으십니다.
이전부터 계속 문의드렸던 내용인데
해보니 잘 적용이 안되서 다시 문의드립니다.
예를들어 "B_손청2"이 1번 나오고 나서도 45틱 이라는 조건을 다시 충족시키면 "B_손청2"이 다시 나옵니다.
1개의 매매신호 발생 후 어떠한 경우도 1번 작동한 청산식은 두번 다시 조건이 만족해도 나오지 않게 하는 수식을 알고 싶습니다.
그리고 다계약에서 특정 조건 이를테면 20선과 60선이 골든/데드되면 전량 청산하는 식도 부탁드립니다.
그럼 미리 노고에 감사드립니다~
예스스탁
예스스탁 답변
2025-02-05 17:05:53
안녕하세요
예스스탁입니다.
가격으로 제어하는 내용으로 변경해 드립니다.
제어가 안되시면 다시 전화주시기 바랍니다.
var : 손청1(30),손청2(45),손청3(60);
if MarketPosition == 1 Then
{
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청1 Then
ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청2 Then
ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청3 Then
ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1);
}
if MarketPosition == -1 Then
{
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then
ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then
ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then
ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1);
}
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
현재 수식에 각 청산이
각 포지션 진입이후에 1회씩만 동작하게 되어 있습니다.
아마 동일이름의 청산이 2번 발생한다면
한봉에 동시에 2개이상 청산이 발생한 경우일 것 같습니다.
LatestExitName(0)이 마지막것만 리턴해서
한봉에 2개 이상 청산이 발생하면 마지막것만 condition값이 true가 되게 됩니다.
가격으로 진입이후 제어하는 내용도 추가해 드립니다.
var : 손청1(30),손청2(45),손청3(60);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "B_손청1" Then
Condition1 = true;
if LatestExitName(0) == "B_손청2" Then
Condition2 = true;
if LatestExitName(0) == "B_손청3" Then
Condition3 = true;
}
if Condition1 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청1 Then
ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1);
if Condition2 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청2 Then
ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1);
if Condition3 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청3 Then
ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1);
if CrossDown(ma(c,20),ma(c,60)) Then
ExitLong();
}
Else
{
Condition1 = False;
Condition2 = False;
Condition3 = False;
}
if MarketPosition == -1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "S_손청1" Then
Condition11 = true;
if LatestExitName(0) == "S_손청2" Then
Condition22 = true;
if LatestExitName(0) == "S_손청3" Then
Condition33 = true;
}
if Condition11 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then
ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1);
if Condition22 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청2 Then
ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1);
if Condition33 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청3 Then
ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1);
if CrossUp(ma(c,20),ma(c,60)) Then
ExitShort();
}
Else
{
Condition11 = False;
Condition22 = False;
Condition33 = False;
}
즐거운 하루되세요
> 카르마다 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> var : 손청1(30),손청2(45),손청3(60);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "B_손청1" Then
Condition1 = true;
if LatestExitName(0) == "B_손청2" Then
Condition2 = true;
if LatestExitName(0) == "B_손청3" Then
Condition3 = true;
}
if Condition1 == False and MarketPosition == 1 Then
ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1);
if Condition2 == False and MarketPosition == 1 Then
ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1);
if Condition3 == False and MarketPosition == 1 Then
ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1);
}
Else
{
Condition1 = False;
Condition2 = False;
Condition3 = False;
}
if MarketPosition == -1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "S_손청1" Then
Condition11 = true;
if LatestExitName(0) == "S_손청2" Then
Condition22 = true;
if LatestExitName(0) == "S_손청3" Then
Condition33 = true;
}
if Condition11 == False and MarketPosition == -1 Then
ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1);
if Condition22 == False and MarketPosition == -1 Then
ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1);
if Condition33 == False and MarketPosition == -1 Then
ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1);
}
Else
{
Condition11 = False;
Condition22 = False;
Condition33 = False;
}
수고많으십니다.
이전부터 계속 문의드렸던 내용인데
해보니 잘 적용이 안되서 다시 문의드립니다.
예를들어 "B_손청2"이 1번 나오고 나서도 45틱 이라는 조건을 다시 충족시키면 "B_손청2"이 다시 나옵니다.
1개의 매매신호 발생 후 어떠한 경우도 1번 작동한 청산식은 두번 다시 조건이 만족해도 나오지 않게 하는 수식을 알고 싶습니다.
그리고 다계약에서 특정 조건 이를테면 20선과 60선이 골든/데드되면 전량 청산하는 식도 부탁드립니다.
그럼 미리 노고에 감사드립니다~