хотел адаптировать эту стратегию торговли, но снова возникли проблемы - PullRequest
0 голосов
/ 21 сентября 2019

Я нашел эту простую стратегию, которую, как мне показалось, я понял, и попытался приспособиться, добавив к ней одну простую логику «если», и я сломал ее.

//@version=4
strategy("Kozlod - RSI Strategy - 1 minute", overlay=true, 
 default_qty_type=strategy.percent_of_equity, commission_value=0.0025, default_qty_value=100)

// 
// author: Kozlod
// date: 2019-05-12
// https://www.tradingview.com/u/Kozlod/
// https://t.me/quantnomad
//

// Inputs
length = input(65)
overSold = input(40)
overBought = input(60)
price = input(close)

// RSI
vrsi = rsi(price, length)

boughtp = if crossover(vrsi, overSold)
    strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    close

if crossunder(vrsi, overBought) and close >= boughtp*0.0025 +boughtp
    strategy.entry("RsiSE", strategy.short, comment="RsiSE")

Первоначальный код был

vrsi = rsi(price, length)

if crossover(vrsi, overSold)
    strategy.entry("RsiLE", strategy.long, comment="RsiLE")

if crossunder(vrsi, overBought)
    strategy.entry("RsiSE", strategy.short, comment="RsiSE")

Я пытался заставить алгоритм продавать только в том случае, если цена после первоначальной покупки была больше определенного процента +купленная цена.

Таким образом, я могу принять во внимание биржевые сборы, чтобы выяснить, не подходит ли стратегия.

И если оно того не стоит, нет смысла покупать и продавать.нужно просто подождать, пока цена не станет такой, чтобы покупка и продажа приносили прибыль.

Любые мысли приветствуются.

1 Ответ

0 голосов
/ 23 сентября 2019

Ваш предыдущий код не сохранял купленную цену по барам и всегда повторно инициализировал ее с помощью оператора =.Этот код сохраняет его правильно и отображает тестовое значение, чтобы вы могли его увидеть.Я добавил условие для размера позиции, чтобы сохранить новое купленное значение только при выполнении длинной записи, иначе вашей переменной boughtp будет присвоено новое значение каждый раз, когда происходит пересечение, что не всегда переводится в новоезаказ.

var boughtp = 0.0
if crossover(vrsi, overSold) and strategy.position_size <= 0
    strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    boughtp := close

plot(boughtp * 1.0025, style = plot.style_circles)
...