Pasar de Python a Easylanguage

Job ID: 38357038

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?
Related categories: Python Software Testing