안녕하세요?
아래 스크립트는 글번호 83793번에서 답변 주신 것을 응용하였습니다.
1번 신호는 2번 신호보다 우선하여 나오게 하고 싶습니다.
즉 s1은 b2에 우선합니다. b1은 s2에 우선합니다.
s1이 발생하지 않았는데 b2가 먼저 나오게 하지 않게 하고자 합니다.
s1이 발생된 후에는 b2가 나올 수 있습니다.
b1이 발생하지 않았는데 s2가 먼저 나오게 하지 않게 하고자 합니다.
b1이 발생된 후에는 s2가 나올 수 있습니다.
당일 매수는 최대 1번, 매도도 1번, 도합 2번까지 진입이 가능하게 하고자 합니다.
var : entry(0);
var1 = ma(c,100);
if Bdate != Bdate[1] Then
{
entry = 0;
value1 = var1;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if DayIndex < 7 Then1
{
Var2 = DayHigh;
Var3 = DayLow;
}
if entry < 1 Then
{
if MarketPosition >= 0 and DayOpen < DayClose(1) and value1 > DayOpen Then
{
if DayIndex >= 7 and CrossDown(C,Var3) Then
Sell("s1",AtMarket);
if CrossUp(C,Var2) Then
Buy("b2",AtMarket);
if CrossDown(c,var1)and var1 < Var3 Then
ExitLong("Cx",AtMarket);
}
}
if MarketPosition <= 0 and DayOpen > DayClose(1) and value1 < DayOpen Then
{
if DayIndex >= 7 and CrossUp(C,Var2) Then
Buy("b1",AtMarket);
if CrossDown(C,Var3) Then
Sell("s2",AtMarket);
if CrossUp(c,var1) and var1 > Var2 Then
ExitShort("Px",AtMarket);
}
SetStopEndofday(151900);
답변 1
예스스탁
예스스탁 답변
2023-09-20 11:19:38
안녕하세요
예스스탁입니다.
var : b(0),s(0);
var1 = ma(c,100);
if Bdate != Bdate[1] Then
{
b = 0;
s = 0;
value1 = var1;
}
if DayIndex < 7 Then
{
Var2 = DayHigh;
Var3 = DayLow;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
b = b+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
s = s+1;
if MarketPosition >= 0 and DayOpen < DayClose(1) and value1 > DayOpen Then
{
if s < 1 and DayIndex >= 7 and CrossDown(C,Var3) Then
Sell("s1",AtMarket);
if b < 1 and s == 1 and CrossUp(C,Var2) Then
Buy("b2",AtMarket);
if CrossDown(c,var1)and var1 < Var3 Then
ExitLong("Cx",AtMarket);
}
if MarketPosition <= 0 and DayOpen > DayClose(1) and value1 < DayOpen Then
{
if b < 1 and DayIndex >= 7 and CrossUp(C,Var2) Then
Buy("b1",AtMarket);
if s < 1 and b == 1 and CrossDown(C,Var3) Then
Sell("s2",AtMarket);
if CrossUp(c,var1) and var1 > Var2 Then
ExitShort("Px",AtMarket);
}
SetStopEndofday(151900);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 스크립트는 글번호 83793번에서 답변 주신 것을 응용하였습니다.
1번 신호는 2번 신호보다 우선하여 나오게 하고 싶습니다.
즉 s1은 b2에 우선합니다. b1은 s2에 우선합니다.
s1이 발생하지 않았는데 b2가 먼저 나오게 하지 않게 하고자 합니다.
s1이 발생된 후에는 b2가 나올 수 있습니다.
b1이 발생하지 않았는데 s2가 먼저 나오게 하지 않게 하고자 합니다.
b1이 발생된 후에는 s2가 나올 수 있습니다.
당일 매수는 최대 1번, 매도도 1번, 도합 2번까지 진입이 가능하게 하고자 합니다.
var : entry(0);
var1 = ma(c,100);
if Bdate != Bdate[1] Then
{
entry = 0;
value1 = var1;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if DayIndex < 7 Then1
{
Var2 = DayHigh;
Var3 = DayLow;
}
if entry < 1 Then
{
if MarketPosition >= 0 and DayOpen < DayClose(1) and value1 > DayOpen Then
{
if DayIndex >= 7 and CrossDown(C,Var3) Then
Sell("s1",AtMarket);
if CrossUp(C,Var2) Then
Buy("b2",AtMarket);
if CrossDown(c,var1)and var1 < Var3 Then
ExitLong("Cx",AtMarket);
}
}
if MarketPosition <= 0 and DayOpen > DayClose(1) and value1 < DayOpen Then
{
if DayIndex >= 7 and CrossUp(C,Var2) Then
Buy("b1",AtMarket);
if CrossDown(C,Var3) Then
Sell("s2",AtMarket);
if CrossUp(c,var1) and var1 > Var2 Then
ExitShort("Px",AtMarket);
}
SetStopEndofday(151900);