Pasar de Python a Easylanguage
Budget: €750 – €1,500 EUR
Hola,
Estoy intentando pasar de python a easylanguage varias lineas de código, pero easylanguage tiene una serie de limitacion frente a python que necesito a alguien experto en el área de easylanguage.
Por ejemplo:
import numpy as np
import pandas as pd
# Ejemplo de datos de entrada (deben ser reemplazados por datos reales)
np.random.seed(0) # Para reproducibilidad
returns = pd.Series(np.random.randn(100))
close = pd.Series(np.random.randn(100))
volume = pd.Series(np.random.randn(100))
open_price = pd.Series(np.random.randn(100))
low = pd.Series(np.random.randn(100))
vwap = pd.Series(np.random.randn(100))
adv20 = pd.Series(np.random.randn(100)) # Ejemplo para adv20
# Funciones auxiliares
def rank(series):
return series.rank(pct=True)
def Ts_ArgMax(series, window):
return series.rolling(window).apply(np.argmax) + 1
def SignedPower(series, power):
return np.sign(series) * (np.abs(series) ** power)
def stddev(series, window):
return series.rolling(window).std()
def correlation(x, y, window):
return x.rolling(window).corr(y)
def delta(series, period):
return series.diff(period)
def Ts_Rank(series, window):
return series.rolling(window).apply(lambda x: pd.Series(x).rank(pct=True).iloc[-1])
def sum_series(series, window):
return series.rolling(window).sum()
def delay(series, period):
return series.shift(period)
def ts_min(series, window):
return series.rolling(window).min()
def ts_max(series, window):
return series.rolling(window).max()
# Alpha#1
alpha_1 = (rank(Ts_ArgMax(SignedPower(((returns < 0).astype(int) * stddev(returns, 20) + (returns >= 0).astype(int) * close), 2.), 5)) - 0.5)
# Alpha#2
alpha_2 = (-1 * correlation(rank(delta(np.log(volume), 2)), rank(((close - open_price) / open_price)), 6))
# Alpha#3
alpha_3 = (-1 * correlation(rank(open_price), rank(volume), 10))
# Alpha#4
alpha_4 = (-1 * Ts_Rank(rank(low), 9))
# Alpha#5
alpha_5 = (rank((open_price - (sum_series(vwap, 10) / 10))) * (-1 * abs(rank((close - vwap)))))
# Alpha#6
alpha_6 = (-1 * correlation(open_price, volume, 10))
# Alpha#7
alpha_7 = ((adv20 < volume).astype(int) * ((-1 * Ts_Rank(abs(delta(close, 7)), 60)) * np.sign(delta(close, 7))) + (adv20 >= volume).astype(int) * (-1))
# Alpha#8
alpha_8 = (-1 * rank(((sum_series(open_price, 5) * sum_series(returns, 5)) - delay((sum_series(open_price, 5) * sum_series(returns, 5)), 10))))
# Alpha#9
alpha_9 = ((0 < ts_min(delta(close, 1), 5)).astype(int) * delta(close, 1) +
((ts_max(delta(close, 1), 5) < 0).astype(int) * delta(close, 1) +
((0 >= ts_min(delta(close, 1), 5)).astype(int) * (ts_max(delta(close, 1), 5) >= 0).astype(int) * (-1 * delta(close, 1)))))
# Alpha#10
alpha_10 = rank(((0 < ts_min(delta(close, 1), 4)).astype(int) * delta(close, 1) +
((ts_max(delta(close, 1), 4) < 0).astype(int) * delta(close, 1) +
((0 >= ts_min(delta(close, 1), 4)).astype(int) * (ts_max(delta(close, 1), 4) >= 0).astype(int) * (-1 * delta(close, 1))))))
# Imprimir los primeros 10 alphas como ejemplo
alphas = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5, alpha_6, alpha_7, alpha_8, alpha_9, alpha_10]
for i, alpha in enumerate(alphas, 1):
print(f"Alpha#{i}: {alpha.dropna().values[:10]}") # Imprimir solo los primeros 10 valores no NaN para cada alpha
Hay muchas más líneas.
Puedes ayudarme?
Estoy intentando pasar de python a easylanguage varias lineas de código, pero easylanguage tiene una serie de limitacion frente a python que necesito a alguien experto en el área de easylanguage.
Por ejemplo:
import numpy as np
import pandas as pd
# Ejemplo de datos de entrada (deben ser reemplazados por datos reales)
np.random.seed(0) # Para reproducibilidad
returns = pd.Series(np.random.randn(100))
close = pd.Series(np.random.randn(100))
volume = pd.Series(np.random.randn(100))
open_price = pd.Series(np.random.randn(100))
low = pd.Series(np.random.randn(100))
vwap = pd.Series(np.random.randn(100))
adv20 = pd.Series(np.random.randn(100)) # Ejemplo para adv20
# Funciones auxiliares
def rank(series):
return series.rank(pct=True)
def Ts_ArgMax(series, window):
return series.rolling(window).apply(np.argmax) + 1
def SignedPower(series, power):
return np.sign(series) * (np.abs(series) ** power)
def stddev(series, window):
return series.rolling(window).std()
def correlation(x, y, window):
return x.rolling(window).corr(y)
def delta(series, period):
return series.diff(period)
def Ts_Rank(series, window):
return series.rolling(window).apply(lambda x: pd.Series(x).rank(pct=True).iloc[-1])
def sum_series(series, window):
return series.rolling(window).sum()
def delay(series, period):
return series.shift(period)
def ts_min(series, window):
return series.rolling(window).min()
def ts_max(series, window):
return series.rolling(window).max()
# Alpha#1
alpha_1 = (rank(Ts_ArgMax(SignedPower(((returns < 0).astype(int) * stddev(returns, 20) + (returns >= 0).astype(int) * close), 2.), 5)) - 0.5)
# Alpha#2
alpha_2 = (-1 * correlation(rank(delta(np.log(volume), 2)), rank(((close - open_price) / open_price)), 6))
# Alpha#3
alpha_3 = (-1 * correlation(rank(open_price), rank(volume), 10))
# Alpha#4
alpha_4 = (-1 * Ts_Rank(rank(low), 9))
# Alpha#5
alpha_5 = (rank((open_price - (sum_series(vwap, 10) / 10))) * (-1 * abs(rank((close - vwap)))))
# Alpha#6
alpha_6 = (-1 * correlation(open_price, volume, 10))
# Alpha#7
alpha_7 = ((adv20 < volume).astype(int) * ((-1 * Ts_Rank(abs(delta(close, 7)), 60)) * np.sign(delta(close, 7))) + (adv20 >= volume).astype(int) * (-1))
# Alpha#8
alpha_8 = (-1 * rank(((sum_series(open_price, 5) * sum_series(returns, 5)) - delay((sum_series(open_price, 5) * sum_series(returns, 5)), 10))))
# Alpha#9
alpha_9 = ((0 < ts_min(delta(close, 1), 5)).astype(int) * delta(close, 1) +
((ts_max(delta(close, 1), 5) < 0).astype(int) * delta(close, 1) +
((0 >= ts_min(delta(close, 1), 5)).astype(int) * (ts_max(delta(close, 1), 5) >= 0).astype(int) * (-1 * delta(close, 1)))))
# Alpha#10
alpha_10 = rank(((0 < ts_min(delta(close, 1), 4)).astype(int) * delta(close, 1) +
((ts_max(delta(close, 1), 4) < 0).astype(int) * delta(close, 1) +
((0 >= ts_min(delta(close, 1), 4)).astype(int) * (ts_max(delta(close, 1), 4) >= 0).astype(int) * (-1 * delta(close, 1))))))
# Imprimir los primeros 10 alphas como ejemplo
alphas = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5, alpha_6, alpha_7, alpha_8, alpha_9, alpha_10]
for i, alpha in enumerate(alphas, 1):
print(f"Alpha#{i}: {alpha.dropna().values[:10]}") # Imprimir solo los primeros 10 valores no NaN para cada alpha
Hay muchas más líneas.
Puedes ayudarme?