Размер позиции / лота основан на входе в покупку и стоп-гэпе - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь кодировать Python размер моего лота на основе положительного сигнала ордера. Ниже ожидаемый результат, который был сделан в Excel. Лог c: Lot_size = IF (Order_Signal = 1, затем Prior_Period_Portfolio_Value * Risk_pct / Stop_gap, elif (Active = 0, 0, размер лота предыдущего периода)) risk_pct = 0,02

У меня есть трудно воспроизвести это в Excel, особенно последний компонент, где он относится к размеру лота предыдущего периода.

enter image description here

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Это зависит от того, как вы храните эти данные в Python. Но для простоты я предполагаю, что каждая переменная находится в своем собственном списке.

order_signal = [0,0,...-1,0]
stop_gap = [0.44,1.13,...1.94,9.06]
prior_period_portfolio_value = [10000,10000,...9900,9807.5]
active = [0,0,...1,0]
lot_size = [0] * len(order_signal)
risk_pct = 0.02

for i = 1:len(order_signal):
    if order_signal[i] == 1:
        lot_size[i] = prior_period_portfolio_value[i] * risk_pct / stop_gap[i]
    elif active[i] == 0:
        lot_size[i] = 0
    else:
        # just need to be sure this doesn't happen on the first iteration
        lost_size[i] = lot_size[i-1]
0 голосов
/ 15 февраля 2020

Чему я научился на базовых c курсах по разработке приложений (PhP), которые я использовал для разработки игр для сортировки данных в таблицах. Так что хитрость здесь будет заключаться в том, чтобы сначала создать столбцы, а затем добавить строки как дочерние.

На tkinter я сделаю это так:

1 - я создам рамку, расширенную по вертикали как parent

frame = Frame()
frame.pack(expand=True, fill="y", side="left")

2 - я добавлю записи, расширенные по горизонтали как дочерние

entry = Entry(frame)
entry.pack(expand=True, fill="x", side="top")

В этом случае все дочерние элементы будут иметь одинаковую ширину. Если вы хотите использовать метки только для отображения данных по каждому дочернему элементу, я сделаю фрейм (такой же, как в примере с записью), и внутри него я добавлю метку (такую ​​же, как запись, но с side = "right"), и весь текст будет иметь такой же ширина, и будет выровнен по правому краю.

...