- Square
- Big candle分享
Big candle分享
Author:
a624587332, Date: 2022-08-01 01:30:19
Tags:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DiegoRoz0
//@version=5
// https://cn.tradingview.com/script/76QDmNz9
// 2022年,500%的利润
strategy("Big candle", overlay=true, pyramiding=1,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.04)
//inputs
colorBe = input.color(title="Bearish candle", defval=color.new(#000000, 0))
colorBu = input.color(title="Bullish candle", defval=color.new(#4CAF50, 0))
multiplier = input.float(title="Multiplier", defval=1.8)
lookback = input.int(title="Lookback lenght", defval=120)
average = math.sum(high - low, lookback) / lookback * multiplier
averageVol = math.sum(volume, 200) / 200 * multiplier * 1.5
ema = ta.ema(close, 50)
len = input.int(7, minval=1, title="DI Length")
lensig = input.int(26, title="ADX Smoothing", minval=1, maxval=50)
[diplus, diminus, adx] = ta.dmi(len, lensig)
[supertrend, direction] = ta.supertrend(2, 10)
varip usedBuCandle = false
varip usedBeCandle = false
bullishCondition = close > open and close > ema and high - low > average and adx>30 and adx < 50 and volume > averageVol and direction == -1
bearishCondition = close < open and close < ema and high - low > average and adx>30 and adx < 50 and volume > averageVol and direction == 1
if direction != direction[1]
usedBuCandle := false
usedBeCandle := false
barcolor(bullishCondition and usedBuCandle == false ? colorBu: bearishCondition and usedBeCandle == false ? colorBe: na)
if bullishCondition and usedBuCandle == false
label.new(bar_index, low, color = color.green, text = "Bu 🚀", style = label.style_label_up)
else if bearishCondition and usedBeCandle == false
label.new(bar_index, high, color = color.orange, text = "Be 🐻🔴")
if bullishCondition
usedBuCandle := true
else if bearishCondition
usedBeCandle := true
//BACKTESTING inputs --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ACT_BT = input.bool(true, title="Backtest", group= "BACKTEST")
testStartYear = input.int(2022, title="start year", minval = 1997, maxval = 3000, group= "BACKTEST")
testStartMonth = input.int(01, title="start month", minval = 1, maxval = 12, group= "BACKTEST")
testStartDay = input.int(01, title="start day", minval = 1, maxval = 31, group= "BACKTEST")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input.int(2220, title="stop year", minval=1980, maxval = 2222, group= "BACKTEST")
testStopMonth = input.int(12, title="stop month", minval=1, maxval=12, group= "BACKTEST")
testStopDay = input.int(31, title="stop day", minval=1, maxval=31, group= "BACKTEST")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = time >= testPeriodStart and time <= testPeriodStop ? true : false
// Backtest ==================================================================================================================================================================================================================================================================================================================================
//Signals======================================================================================================================================================================================================================
if bullishCondition and usedBuCandle
strategy.entry("L", strategy.long, when=ACT_BT and testPeriod)
if bearishCondition and usedBeCandle
strategy.entry("S", strategy.short, when=ACT_BT and testPeriod)
per(pcnt) =>
strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input.float(title=" stop loss", defval=9, minval=0.01)
los = per(stoploss)
q=input.int(title=" qty percent", defval=100, minval=1)
tp=input.float(title=" Take profit", defval=1.3, minval=0.01)
strategy.exit("tp", qty_percent = q, profit = per(tp), loss = los)
More