커뮤니티
문의드립니다.
2019-03-26 00:07:30
658
글번호 127381
감사합니다.
1. 기타
예스로 수정부탁드립니다.
KeltnerChannelUp 은 켈트너채널 윗선입니다.
inputs:
pKELTNER_UP_1(35),
pKELTNER_UP_2(0.7),
pKELTNER_UP_3(3),
pKELTNER_UP_4(0.9),
ProfitTargetTicks(112),
StopLossCoef(5.41),
StopLossATR(160),
MaxTradesPerDay(1),
ExitOnClose(true),
LimitSignalsToRange(false),
TimeRangeFrom(0000),
TimeRangeTo(0000),
CapitalSize(6500),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0),
MaxTradeSize(0);
vars:
tickSize(MinMove/PriceScale),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false),
OpenLong(false);
// ------------------------------------------
// ENTRY RULES
// ------------------------------------------
if(LimitSignalsToRange = false or (Time >= TimeRangeFrom and Time < TimeRangeTo)) then begin
OpenLong = false;
// Short --------
if OpenLong = False and (MaxTradesPerDay = 0 or EntriesToday(Date) < MaxTradesPerDay) then begin
ShortEntryCondition = ((KeltnerChannelUp(pKELTNER_UP_1, pKELTNER_UP_2)[1] < KeltnerChannelUp(pKELTNER_UP_3, pKELTNER_UP_4)[1]) and (KeltnerChannelUp(pKELTNER_UP_1, pKELTNER_UP_2)[0] >= KeltnerChannelUp(pKELTNER_UP_3, pKELTNER_UP_4)[0]));
if(ShortEntryCondition = true) then begin
SLSize = Round2Fraction((StopLossCoef * AvgTrueRange(StopLossATR)[0]));
NumberOfShares = 1;
if(MarketPosition = 0) then begin
SellShort("ShortMarket") NumberOfShares shares next bar at market;
end;
end;
end;
end;
// Short --------
if(MarketPosition < 0) then begin
If BarsSinceEntry = 0 then begin
ShortPT = EntryPrice - ProfitTargetTicks * tickSize;
ShortSL = Round2Fraction(EntryPrice + (StopLossCoef * AvgTrueRange(StopLossATR)[0]));
end;
if(ShortPT > 0) then
BuyToCover("ShortPT") next bar at ShortPT limit;
if(ShortSL > 0) then
BuyToCover("ShortSL") next bar at ShortSL stop;
end;
if(ExitOnClose) then
SetExitOnClose;
2. 기타
외부변수
초기 계좌자산,
고정된 매매 가능 횟수,
손절금액
수식
진입
이평선 상향돌파
청산
하향돌파
*진입수량은 아래 매매계약수 수식에 다라 진입.
매매별 금액 리스크 = 현재 계좌자산 / 고정된 매매 가능 횟수
매매 계약수 = 금액 리스크 / 매매별 리스크
3. 기타
궁금한 게 있는데요. 선물로 매매할 때 저렇게 한화로 손절 정해 놓으면(포인트 말고) 알아서 그 금액 수준인 포인트에서 손절이 되는 건가요? 국선은 그렇다 치고 해선도 그런 건가요? 그런 게 아니면 어떻게 금액으로 손절 설정해놓을 수 있나요.
답변 2
예스스탁 예스스탁 답변
2019-03-26 10:28:28
안녕하세요
예스스탁입니다.
1
inputs:
pKELTNER_UP_1(35),
pKELTNER_UP_2(0.7),
pKELTNER_UP_3(3),
pKELTNER_UP_4(0.9),
ProfitTargetTicks(112),
StopLossCoef(5.41),
StopLossATR(160),
MaxTradesPerDay(1),
ExitOnClose(true),
LimitSignalsToRange(false),
TimeRangeFrom(0000),
TimeRangeTo(0000),
CapitalSize(6500),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0),
MaxTradeSize(0);
vars:
tickSize(0),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false),
OpenLong(false),
EntriesToday(0);
if bdate != bdate[1] Then
EntriesToday = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
EntriesToday = EntriesToday+1;
tickSize = PriceScale;
// ------------------------------------------
// ENTRY RULES
// ------------------------------------------
if(LimitSignalsToRange == false or (sTime >= TimeRangeFrom and sTime < TimeRangeTo)) then
begin
OpenLong = false;
// Short --------
if OpenLong == False and (MaxTradesPerDay == 0 or EntriesToday < MaxTradesPerDay) then
begin
ShortEntryCondition = ((KeltnerChannel(c,pKELTNER_UP_1, pKELTNER_UP_2)[1] < KeltnerChannel(c,pKELTNER_UP_3, pKELTNER_UP_4)[1]) and (KeltnerChannel(C,pKELTNER_UP_1, pKELTNER_UP_2)[0] >= KeltnerChannel(C,pKELTNER_UP_3, pKELTNER_UP_4)[0]));
if(ShortEntryCondition == true) then
begin
SLSize = (StopLossCoef * ATR(StopLossATR)[0]);
NumberOfShares = 1;
if(MarketPosition == 0) then
begin
sell("ShortMarket",AtMarket,NumberOfShares);
end;
end;
end;
end;
// Short --------
if(MarketPosition < 0) then
begin
If BarsSinceEntry == 0 then
begin
ShortPT = EntryPrice - ProfitTargetTicks * tickSize;
ShortSL = EntryPrice + (StopLossCoef * ATR(StopLossATR)[0]);
end;
if(ShortPT > 0) then
ExitShort("ShortPT",atlimit,ShortPT);
if(ShortSL > 0) then
ExitLong("ShortSL",AtStop,ShortSL);
end;
if(ExitOnClose) then
SetStopEndofday(153000);
2
내용이 정확히 파악이 되지 않습니다.
금액리스크와 매매별리스크가 있는데 해당값의 차이를 모르겠습니다.
해당 부분은 직접 작성해 보셔야 할것 같습니다.
3
선물은 가격이 포인트입니다.
금액으로 지정하면 환산포인트를 자동으로 알수는 없습니다.
금액에 해당 하는 포인트로 변환하는 코딩을 해야 합니다.
함수중에 PointValue는 1틱당 가치입니다.
금액을 PointValue로 나누면 지정금액의 틱수가 나오고(소숫점에 대한 반올림이나 내림은 선택사항)
틱수를 priceScale로 곱하면 금액을 포인트로 환산하게 됩니다.
floor(금액/PointValue)*priceScale
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 감사합니다.
1. 기타
예스로 수정부탁드립니다.
KeltnerChannelUp 은 켈트너채널 윗선입니다.
inputs:
pKELTNER_UP_1(35),
pKELTNER_UP_2(0.7),
pKELTNER_UP_3(3),
pKELTNER_UP_4(0.9),
ProfitTargetTicks(112),
StopLossCoef(5.41),
StopLossATR(160),
MaxTradesPerDay(1),
ExitOnClose(true),
LimitSignalsToRange(false),
TimeRangeFrom(0000),
TimeRangeTo(0000),
CapitalSize(6500),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0),
MaxTradeSize(0);
vars:
tickSize(MinMove/PriceScale),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false),
OpenLong(false);
// ------------------------------------------
// ENTRY RULES
// ------------------------------------------
if(LimitSignalsToRange = false or (Time >= TimeRangeFrom and Time < TimeRangeTo)) then begin
OpenLong = false;
// Short --------
if OpenLong = False and (MaxTradesPerDay = 0 or EntriesToday(Date) < MaxTradesPerDay) then begin
ShortEntryCondition = ((KeltnerChannelUp(pKELTNER_UP_1, pKELTNER_UP_2)[1] < KeltnerChannelUp(pKELTNER_UP_3, pKELTNER_UP_4)[1]) and (KeltnerChannelUp(pKELTNER_UP_1, pKELTNER_UP_2)[0] >= KeltnerChannelUp(pKELTNER_UP_3, pKELTNER_UP_4)[0]));
if(ShortEntryCondition = true) then begin
SLSize = Round2Fraction((StopLossCoef * AvgTrueRange(StopLossATR)[0]));
NumberOfShares = 1;
if(MarketPosition = 0) then begin
SellShort("ShortMarket") NumberOfShares shares next bar at market;
end;
end;
end;
end;
// Short --------
if(MarketPosition < 0) then begin
If BarsSinceEntry = 0 then begin
ShortPT = EntryPrice - ProfitTargetTicks * tickSize;
ShortSL = Round2Fraction(EntryPrice + (StopLossCoef * AvgTrueRange(StopLossATR)[0]));
end;
if(ShortPT > 0) then
BuyToCover("ShortPT") next bar at ShortPT limit;
if(ShortSL > 0) then
BuyToCover("ShortSL") next bar at ShortSL stop;
end;
if(ExitOnClose) then
SetExitOnClose;
2. 기타
외부변수
초기 계좌자산,
고정된 매매 가능 횟수,
손절금액
수식
진입
이평선 상향돌파
청산
하향돌파
*진입수량은 아래 매매계약수 수식에 다라 진입.
매매별 금액 리스크 = 현재 계좌자산 / 고정된 매매 가능 횟수
매매 계약수 = 금액 리스크 / 매매별 리스크
3. 기타
궁금한 게 있는데요. 선물로 매매할 때 저렇게 한화로 손절 정해 놓으면(포인트 말고) 알아서 그 금액 수준인 포인트에서 손절이 되는 건가요? 국선은 그렇다 치고 해선도 그런 건가요? 그런 게 아니면 어떻게 금액으로 손절 설정해놓을 수 있나요.
잡다백수
2019-03-26 11:41:46
코딩 감사합니다.
LimitSignalsToRange(false)
이거 없애버리면 되나요?
1.
아래와 같은 오류가 나왔습니다.
2.
매매별 리스크를 추가했습니다.
2. 기타
외부변수
초기 계좌자산,
고정된 매매 가능 횟수,
손절금액
수식
진입
이평선 상향돌파
청산
하향돌파
*진입수량은 아래 매매계약수 수식에 다라 진입.
매매별 리스크 = (진입가격 - 손절가격) 포인트를 가격으로 환산한 것.
매매별 금액 리스크 = 현재 계좌자산 / 고정된 매매 가능 횟수
매매 계약수 = 매매별 금액 리스크 / 매매별 리스크
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
1
inputs:
pKELTNER_UP_1(35),
pKELTNER_UP_2(0.7),
pKELTNER_UP_3(3),
pKELTNER_UP_4(0.9),
ProfitTargetTicks(112),
StopLossCoef(5.41),
StopLossATR(160),
MaxTradesPerDay(1),
ExitOnClose(true),
LimitSignalsToRange(false),
TimeRangeFrom(0000),
TimeRangeTo(0000),
CapitalSize(6500),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0),
MaxTradeSize(0);
vars:
tickSize(0),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false),
OpenLong(false),
EntriesToday(0);
if bdate != bdate[1] Then
EntriesToday = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
EntriesToday = EntriesToday+1;
tickSize = PriceScale;
// ------------------------------------------
// ENTRY RULES
// ------------------------------------------
if(LimitSignalsToRange == false or (sTime >= TimeRangeFrom and sTime < TimeRangeTo)) then
begin
OpenLong = false;
// Short --------
if OpenLong == False and (MaxTradesPerDay == 0 or EntriesToday < MaxTradesPerDay) then
begin
ShortEntryCondition = ((KeltnerChannel(c,pKELTNER_UP_1, pKELTNER_UP_2)[1] < KeltnerChannel(c,pKELTNER_UP_3, pKELTNER_UP_4)[1]) and (KeltnerChannel(C,pKELTNER_UP_1, pKELTNER_UP_2)[0] >= KeltnerChannel(C,pKELTNER_UP_3, pKELTNER_UP_4)[0]));
if(ShortEntryCondition == true) then
begin
SLSize = (StopLossCoef * ATR(StopLossATR)[0]);
NumberOfShares = 1;
if(MarketPosition == 0) then
begin
sell("ShortMarket",AtMarket,NumberOfShares);
end;
end;
end;
end;
// Short --------
if(MarketPosition < 0) then
begin
If BarsSinceEntry == 0 then
begin
ShortPT = EntryPrice - ProfitTargetTicks * tickSize;
ShortSL = EntryPrice + (StopLossCoef * ATR(StopLossATR)[0]);
end;
if(ShortPT > 0) then
ExitShort("ShortPT",atlimit,ShortPT);
if(ShortSL > 0) then
ExitLong("ShortSL",AtStop,ShortSL);
end;
if(ExitOnClose) then
SetStopEndofday(153000);
2
내용이 정확히 파악이 되지 않습니다.
금액리스크와 매매별리스크가 있는데 해당값의 차이를 모르겠습니다.
해당 부분은 직접 작성해 보셔야 할것 같습니다.
3
선물은 가격이 포인트입니다.
금액으로 지정하면 환산포인트를 자동으로 알수는 없습니다.
금액에 해당 하는 포인트로 변환하는 코딩을 해야 합니다.
함수중에 PointValue는 1틱당 가치입니다.
금액을 PointValue로 나누면 지정금액의 틱수가 나오고(소숫점에 대한 반올림이나 내림은 선택사항)
틱수를 priceScale로 곱하면 금액을 포인트로 환산하게 됩니다.
floor(금액/PointValue)*priceScale
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 감사합니다.
1. 기타
예스로 수정부탁드립니다.
KeltnerChannelUp 은 켈트너채널 윗선입니다.
inputs:
pKELTNER_UP_1(35),
pKELTNER_UP_2(0.7),
pKELTNER_UP_3(3),
pKELTNER_UP_4(0.9),
ProfitTargetTicks(112),
StopLossCoef(5.41),
StopLossATR(160),
MaxTradesPerDay(1),
ExitOnClose(true),
LimitSignalsToRange(false),
TimeRangeFrom(0000),
TimeRangeTo(0000),
CapitalSize(6500),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0),
MaxTradeSize(0);
vars:
tickSize(MinMove/PriceScale),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false),
OpenLong(false);
// ------------------------------------------
// ENTRY RULES
// ------------------------------------------
if(LimitSignalsToRange = false or (Time >= TimeRangeFrom and Time < TimeRangeTo)) then begin
OpenLong = false;
// Short --------
if OpenLong = False and (MaxTradesPerDay = 0 or EntriesToday(Date) < MaxTradesPerDay) then begin
ShortEntryCondition = ((KeltnerChannelUp(pKELTNER_UP_1, pKELTNER_UP_2)[1] < KeltnerChannelUp(pKELTNER_UP_3, pKELTNER_UP_4)[1]) and (KeltnerChannelUp(pKELTNER_UP_1, pKELTNER_UP_2)[0] >= KeltnerChannelUp(pKELTNER_UP_3, pKELTNER_UP_4)[0]));
if(ShortEntryCondition = true) then begin
SLSize = Round2Fraction((StopLossCoef * AvgTrueRange(StopLossATR)[0]));
NumberOfShares = 1;
if(MarketPosition = 0) then begin
SellShort("ShortMarket") NumberOfShares shares next bar at market;
end;
end;
end;
end;
// Short --------
if(MarketPosition < 0) then begin
If BarsSinceEntry = 0 then begin
ShortPT = EntryPrice - ProfitTargetTicks * tickSize;
ShortSL = Round2Fraction(EntryPrice + (StopLossCoef * AvgTrueRange(StopLossATR)[0]));
end;
if(ShortPT > 0) then
BuyToCover("ShortPT") next bar at ShortPT limit;
if(ShortSL > 0) then
BuyToCover("ShortSL") next bar at ShortSL stop;
end;
if(ExitOnClose) then
SetExitOnClose;
2. 기타
외부변수
초기 계좌자산,
고정된 매매 가능 횟수,
손절금액
수식
진입
이평선 상향돌파
청산
하향돌파
*진입수량은 아래 매매계약수 수식에 다라 진입.
매매별 리스크 = (진입가격 - 손절가격) 포인트를 가격으로 환산한 것.
매매별 금액 리스크 = 현재 계좌자산 / 고정된 매매 가능 횟수
매매 계약수 = 매매별 금액 리스크 / 매매별 리스크
3. 기타
궁금한 게 있는데요. 선물로 매매할 때 저렇게 한화로 손절 정해 놓으면(포인트 말고) 알아서 그 금액 수준인 포인트에서 손절이 되는 건가요? 국선은 그렇다 치고 해선도 그런 건가요? 그런 게 아니면 어떻게 금액으로 손절 설정해놓을 수 있나요.
다음글
이전글