Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 108 additions & 57 deletions console_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,30 @@ def ask_enum_choice(prompt: str, choice_map: dict[int, str]) -> str:
print("❌ Geçersiz seçim. Tekrar deneyin.")


def ask_enum_choice(prompt: str, mapping: dict[int, str]) -> Optional[str]:
"""Ask the user to choose one of the enum values.

Parameters
----------
prompt: str
Text to show the user.
mapping: dict[int, str]
Maps menu numbers to enum strings.

Returns
-------
Optional[str]
Selected enum value or ``None`` if the user pressed Enter.
"""
options = " ".join(f"{k}={v}" for k, v in mapping.items())
while True:
val = input(f"{prompt} ({options}, boş için Enter): ").strip()
if val == "":
return None
if val.isdigit() and int(val) in mapping:
return mapping[int(val)]
print("❌ Geçersiz seçim. Tekrar deneyin.")

# ——— Portfolio Endpoints ———

# Portfolio Endpoints
Expand Down Expand Up @@ -237,20 +261,23 @@ def get_stock_create_order():
duration = ask_enum_choice("Order Duration", ORDER_DURATION_MAP)
mra = ask_optional_bool("Market Risk Approval?")

if None in (port, symbol, qty, direction, price, method, duration, mra):
print("❌ Tüm alanlar zorunludur.")
if None in (port, symbol, qty, price, mra):
print("❌ Tüm alanlar doldurulmalı.")
main
return

if api:
resp = api.get_stock_create_order(
portfolio_number=port,
equity_code=symbol,
quantity=qty,
direction=direction,
price=price,
order_method=method,
order_duration=duration,
market_risk_approval=mra
portfolio_number=cast(int, port),
equity_code=cast(str, symbol),
quantity=cast(int, qty),
direction=cast(str, direction),
price=cast(float, price),
order_method=cast(str, method),
order_duration=cast(str, duration),
market_risk_approval=cast(bool, mra)
)
print("Response:", resp)

Expand All @@ -261,28 +288,31 @@ def get_stock_replace_order():
qty = ask_optional_int("New Quantity")

if None in (port, ref, price, qty):
print("❌ Tüm alanlar zorunludur.")
print("❌ Tüm alanlar doldurulmalı.")
return

if api:
resp = api.get_stock_replace_order(
portfolio_number=port,
order_ref=ref,
price=price,
quantity=qty
portfolio_number=cast(int, port),
order_ref=cast(str, ref),
price=cast(int, price),
quantity=cast(int, qty)
)
print("Response:", resp)

def get_stock_delete_order():
port = ask_optional_int("Portfolio Number")
ref = ask_optional_str("Order Ref to delete")
if port is None or ref is None:
print("❌ Tüm alanlar zorunludur.")
if None in (port, ref):
print("❌ Tüm alanlar doldurulmalı.")
return
if api:
resp = api.get_stock_delete_order(
portfolio_number=port,
order_ref=ref
portfolio_number=cast(int, port),
order_ref=cast(str, ref)
)
print("Response:", resp)

Expand All @@ -298,6 +328,18 @@ def get_stock_order_list():
page_number = ask_optional_int("Page Number")
descending_order = ask_optional_bool("Descending Order?")

if None in (
port,
order_status,
order_direction,
order_method,
order_duration,
equity_code,
equity_type,
page_number,
descending_order,
):
print("❌ Tüm alanlar zorunludur.")
if None in (port, order_status, order_direction, order_method,
order_duration, equity_code, equity_type, page_number,
descending_order):
Expand All @@ -306,15 +348,15 @@ def get_stock_order_list():

if api:
resp = api.get_stock_order_list(
portfolio_number=port,
order_status=order_status,
order_direction=order_direction,
order_method=order_method,
order_duration=order_duration,
equity_code=equity_code,
equity_type=equity_type,
page_number=page_number,
descending_order=descending_order
portfolio_number=cast(int, port),
order_status=cast(int, order_status),
order_direction=cast(int, order_direction),
order_method=cast(int, order_method),
order_duration=cast(int, order_duration),
equity_code=cast(str, equity_code),
equity_type=cast(int, equity_type),
page_number=cast(int, page_number),
descending_order=cast(bool, descending_order),
)
print("Response:", resp)

Expand All @@ -326,16 +368,18 @@ def get_stock_positions():
without_t1 = ask_optional_bool("Without T+1 Qty?")

if None in (port, equity_code, equity_type, without_dep, without_t1):
print("❌ Tüm alanlar zorunludur.")
return
print("❌ Tüm alanlar doldurulmalı.")
return

if api:
resp = api.get_stock_positions(
portfolio_number=port,
equity_code=equity_code,
equity_type=equity_type,
without_depot=without_dep,
without_t1_qty=without_t1
portfolio_number=cast(int, port),
equity_code=cast(str, equity_code),
equity_type=cast(int, equity_type),
without_depot=cast(bool, without_dep),
without_t1_qty=cast(bool, without_t1)
)
print("Response:", resp)

Expand All @@ -352,20 +396,21 @@ def get_future_create_order():
exp_date = ask_optional_date("Expiration Date")

if None in (port, contract, direction, price, qty, method, duration, ahs, exp_date):
print("❌ Tüm alanlar zorunludur.")
print("❌ Tüm alanlar doldurulmalı.")
return

if api:
resp = api.get_future_create_order(
portfolio_number=port,
contract_code=contract,
direction=direction,
price=price,
quantity=qty,
order_method=method,
order_duration=duration,
after_hour_session_valid=ahs,
expiration_date=exp_date
portfolio_number=cast(int, port),
contract_code=cast(str, contract),
direction=cast(int, direction),
price=cast(int, price),
quantity=cast(int, qty),
order_method=cast(int, method),
order_duration=cast(int, duration),
after_hour_session_valid=cast(bool, ahs),
expiration_date=cast(str, exp_date)
)
print("Response:", resp)

Expand All @@ -378,32 +423,36 @@ def get_future_replace_order():
exp_date = ask_optional_date("Expiration Date")

if None in (port, ref, qty, price, otype, exp_date):
print("❌ Tüm alanlar zorunludur.")
print("❌ Tüm alanlar doldurulmalı.")
return

if api:
resp = api.get_future_replace_order(
portfolio_number=port,
order_ref=ref,
quantity=qty,
price=price,
order_type=otype,
expiration_date=exp_date
portfolio_number=cast(int, port),
order_ref=cast(str, ref),
quantity=cast(int, qty),
price=cast(int, price),
order_type=cast(int, otype),
expiration_date=cast(str, exp_date)
)
print("Response:", resp)

def get_future_delete_order():
port = ask_optional_int("Portfolio Number")
ref = ask_optional_str("Order Ref to delete")

if port is None or ref is None:
print("❌ Tüm alanlar zorunludur.")
return
if None in (port, ref):
print("❌ Tüm alanlar doldurulmalı.")
return

if api:
if api:
resp = api.get_future_delete_order(
portfolio_number=port,
order_ref=ref
portfolio_number=cast(int, port),
order_ref=cast(str, ref)
)
print("Response:", resp)

Expand Down Expand Up @@ -431,21 +480,23 @@ def get_future_order_list():
cancelled_orders,
after_hour_session_valid,
):
print("❌ Tüm alanlar zorunludur.")

print("❌ Tüm alanlar doldurulmalı.")
return

if api:
resp = api.get_future_order_list(
portfolio_number=port,
order_validity_date=order_validity_date,
contract_code=contract_code,
contract_type=contract_type,
long_short=long_short,
pending_orders=pending_orders,
untransmitted_orders=untransmitted_orders,
partially_executed_orders=partially_executed_orders,
cancelled_orders=cancelled_orders,
after_hour_session_valid=after_hour_session_valid
portfolio_number=cast(int, port),
order_validity_date=cast(str, order_validity_date),
contract_code=cast(str, contract_code),
contract_type=cast(int, contract_type),
long_short=cast(int, long_short),
pending_orders=cast(bool, pending_orders),
untransmitted_orders=cast(bool, untransmitted_orders),
partially_executed_orders=cast(bool, partially_executed_orders),
cancelled_orders=cast(bool, cancelled_orders),
after_hour_session_valid=cast(bool, after_hour_session_valid)
)
print("Response:", resp)

Expand All @@ -455,7 +506,7 @@ def get_future_positions():
print("❌ Portfolio Number gerekli.")
return
if api:
resp = api.get_future_positions(portfolio_number=port)
resp = api.get_future_positions(portfolio_number=cast(int, port))
print("Response:", resp)

def main():
Expand Down