Я хочу превратить стратегии/индикаторы от сценариев TradingView Pinescript в Python. Может ли кто -нибудь объяснить меня на основе и, я думаю, простой пример, почему Pinescripts отличаются, и что я не так делаю? Вы можете найти это, это основная стратегия не сообщества < /p>
У него такой код: < /p>
strategy("Momentum Strategy", overlay=true)
length = input(12)
price = close
momentum(seria, length) =>
mom = seria - seria[length]
mom
mom0 = momentum(price, length)
mom1 = momentum( mom0, 1)
if (mom0 > 0 and mom1 > 0)
strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
strategy.cancel("MomLE")
if (mom0 < 0 and mom1 < 0)
strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
strategy.cancel("MomSE")
< /code>
Как вы можете видеть, очень просто.
Этот код генерирует такие сигналы:
, как вы можете видеть, только 2 сигнала в течение 42 минут < /p>
Но когда я начал превращать этот скрипт в Python, а затем на графике я обнаружил, что мой код генерирует гораздо больше сигналов, и я не могу понять, почему. Расчет без библиотек ТА: < /p>
def add_momentum_strategy_signals(df, length=12):
df['mom0'] = df['close'] - df['close'].shift(length)
df['mom1'] = df['mom0'] - df['mom0'].shift(1)
df['momentum_signal'] = 0
long_condition = (df['mom0'] > 0) & (df['mom1'] > 0)
short_condition = (df['mom0'] < 0) & (df['mom1'] < 0)
df.loc[long_condition, 'momentum_signal'] = 1
df.loc[short_condition, 'momentum_signal'] = -1
tick_size = df['close'].diff().abs().median()
df['long_stop'] = df['high'] + tick_size
df['short_stop'] = df['low'] - tick_size
return df
< /code>
Как вы можете видеть, он сгенерировал мне гораздо больше сигналов: < /p>
сигналы < /p>
Ну, тогда я решил использовать библиотеку талиб: < /p>
def momentum_strategy_talib(df, length=12):
mom0 = ta.MOM(df['close'], timeperiod=length)
mom1 = ta.MOM(mom0, timeperiod=1)
df['signal'] = None
df['stop_price'] = None
df['order_type'] = None
for i in range(length, len(df)):
if mom0 > 0 and mom1 > 0:
df.loc[i, 'signal'] = 'buy'
df.loc[i, 'stop_price'] = df['high'] + df['high'].diff().mean()
df.loc[i, 'order_type'] = 'stop'
elif mom0 < 0 and mom1 < 0:
df.loc[i, 'signal'] = 'sell'
df.loc[i, 'stop_price'] = df['low'] - df['low'].diff().mean()
df.loc[i, 'order_type'] = 'stop'
return df
< /code>
Результат такой же. Гораздо больше сигналов, чем должно быть. Результаты с талибом < /p>
Я думаю, это мое недопонимание оснований Pinescript против Python. Можете ли вы, чтобы в этом основном и простом примере показать мне, как я могу исправить свой код, чтобы моя реализация Python соответствовала телевизионным сигналам? Приведите свой пример?
Подробнее здесь: https://stackoverflow.com/questions/789 ... -would-mat
Как преобразовать торговые стратегии из Pinescript в Python, так что сигналы будут соответствовать? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Итеративный алгоритм на основе классов с шаблоном стратегии с шаблоном стратегии
Anonymous » » в форуме Python - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-