Skip to main content
Glama
zkyko
by zkyko
trade.cpython-313.pyc8.6 kB
� ��jh����SSKrSSKrSSKJr SSKJrJr SSKJr \RR\RR\RR\ 555r \RR\ SS5r"SS\5r"S S \5r"S S \5rSS \S\S\4SjjrS\S\\4SjrS\4Sjr\S:Xa�SSKr\"\R85S:�a3SR\R8SS5r\"S\S35 \"\5rO\"S5 \"5r\"S5 \"S5 \"S5 \"\R@"\SS95 gg) �N)�datetime)�List�Optional)� BaseModel�logsztrade_log.jsonlc���\rSrSr%Sr\\\S'Sr\\\S'Sr \\ \S'Sr \\ \S'Sr \\\S'Sr \\\S'Sr\\ \S 'Sr\\\S 'Sr\\\S 'Sr\\\S 'S rg)� TradeSummary� N�ticker� timeframe� entry_price� exit_price� direction�pnl� pnl_amount� date_time�reason_or_annotations� logged_at�)�__name__� __module__� __qualname__�__firstlineno__r r�str�__annotations__r r �floatrrrrrrr�__static_attributes__r��+C:\Users\Timmy\Documents\MCP\tools\trade.pyr r s��� �F�H�S�M� �#�I�x��}�#�#'�K��%��'�"&�J����&�#�I�x��}�#��C��#���"&�J����&�#�I�x��}�#�+/��8�C�=�/�#�I�x��}�#rr c�$�\rSrSr%Sr\\S'Srg)�SearchTradeInput���queryrN)rrrrr$rrrrrrr!r!s ���E�3�Orr!c�0�\rSrSr%\\\S'\\S'Srg)�SearchTradeOutput��results� total_foundrN) rrrrrr r�intrrrrr&r&s�� �,� ���rr&r$�limit�returnc��[RR[5(d[ S[35 /SS[3S.$/nSn[ [SSS9nUH}n[ R"UR55nUS- nU(a6UR5[ R"U5R5;aURU5 M}M S S S 5 U(aX!*S O/nU[U5US .$![ Ra M�f=f!,(df  NF=f![an/SS [U53S .sS nA$S nAff=f) zSearch through trade logs�%⚠️ Trade log file not found at: r�No trade log file found at )r(r)�message�r�utf-8��encoding�NzFailed to read log file: )r(r)�error)r(r)� total_trades)�os�path�exists�TRADE_LOG_PATH�print�open�json�loads�strip�lower�dumps�append�JSONDecodeError� Exceptionr�len) r$r+�matches� total_count�f�line�trade�e�limited_matchess r�search_trade_logsrN"sC�� �7�7�>�>�.� )� )� �5�n�5E�F�G��a�>Y�Zh�Yi�<j�k�k��G��K�`� �.�#�� 8�A��� � �J�J�t�z�z�|�4�E��1�$�K�!�E�K�K�M�T�Z�Z��5F�5L�5L�5N�$N����u�-�%O� �9� +2�g�f�g�&�r�O�#��7�|�#� ����+�+�����9� 8�� �`��a�<U�VY�Z[�V\�U]�:^�_�_��`�sa� D1�D �#A7D�D � D1�D�D �D�D � D.�*D1�.D1�1 E�;E� E�E�pnl_strc���U(dg[U5RSS5RSS5RSS5R5n[U5$![[ 4a gf=f)zParse PnL string to float valueN�$r#�,�+)r�replacer@r� ValueError� TypeError)rO� pnl_cleans r�parse_pnl_amountrXEsj�� ���G� �$�$�S�"�-�5�5�c�2�>�F�F�s�B�O�U�U�W�I���Y���� � � "����s� A�A1�0A1c��[RR[5(d#[ S[35 SSSSS/S[3S.$/n[ [SSS9nUH9n[ R"UR55nURU5 M; SSS5 U(d SSSSS/S S.$[U5n[5nSSSSS .n/n/nSn UGHsnURS 5(aURUS 5 URS 5(a$US R5n X�;a Xj==S - ss'Sn URS5bUSn O$URS5(a[!US5n U cM�URU 5 U S:�aU S - n URSURSS55n U (dM�SU ;a8["R$"U R'SS55n U R)S5nOSU ;aU R+S5SOU nURUU URS S5S.5 GMv U(a [-U5OSnU(aU [U5- OSnU(a [/U5OSnU(a [1U5OSnUR3SS9 UUU U(a[U5U - OSUUUU(aU[U5- OS[U5[5U5UU[U5U(aUSS.$SS.$![ Ra GM�f=f!,(df  GN�=f! U nGN&=f)z)Get comprehensive statistics about tradesr.rNr/)r7�win_rate� total_pnl� best_trade� worst_trade� pnl_historyr0r1r2r3zNo trades found in log)�long�short�buy�sellr rr5rrrr�Unknown�T�Zz+00:00z%Y-%m-%d� )�daterr c� �US$)Nrgr)�xs r�<lambda>�!get_trade_stats.<locals>.<lambda>�s��1�V�9r)�key�����)r7rZ�winning_trades� losing_tradesr[r\r]� average_pnl�unique_tickers�tickers� directionsr^�trades_with_pnl� latest_trade)r8r9r:r;r<r=r>r?r@rCrDrF�set�get�addrArXr� fromisoformatrT�strftime�split�sum�max�min�sort�list)�tradesrIrJrKr7rrrs� pnl_amountsr^rnrrrg� parsed_date�formatted_dater[rZr\r]s r�get_trade_statsr�RsD�� �7�7�>�>�.� )� )� �5�n�5E�F�G�������4�^�4D�E� � ��F� �n�c�G� 4���D� �� � �4�:�:�<�0��� � �e�$�� 5� �������/� � ��v�;�L��e�G��a��1�=�J��K��K��N��� �9�9�X� � � �K�K��h�� (� �9�9�[� !� !��k�*�0�0�2�I��&��%��*�%�� � �9�9�\� "� .��|�,�J� �Y�Y�u� � �)�%��,�7�J� � !� � � �z� *��A�~��!�#���9�9�[�%�)�)�K��*K�L�D��t�*��d�{�&.�&<�&<�T�\�\�#�x�=X�&Y� �)4�)=�)=�j�)I��?B�d�{����C���);�PT���"�"�*�%�#�i�i��)�<�$��I�V%0��K� �T�I�6A���[�!1�1�t�H�%0��[�!�d�J�&1�#�k�"�t�K����,��-�%��(�>I��[�)�N�:�q�� �"�7B�y�3�{�#3�3���g�,���=� �"��{�+�&,��r� � ��37� ���S�'�'� �� �� 5� 4��x*�%)�N�sB�L5�$5L�L5� =M� M�L2�-L5�1L2�2L5�5 M�M�__main__r5rfu🔍 Searching for: '�'u 📊 Getting trade statistics...z3 ==================================================u📈 TRADE SEARCH RESULTz2==================================================�)�indent)r#� )!r8r>r�typingrr�pydanticrr9�dirname�abspath�__file__�BASE_DIR�joinr;r r!r&rr*�dictrNrrXr�r�sysrF�argvr$r<�resultrBrrr�<module>r�sP�� � ��!�� �7�7�?�?�2�7�7�?�?�2�7�7�?�?�8�+D�E� F�������h��0A�B�� $�9� $��y��� �� !�S�!�c�!�4�!�F �c� �h�u�o� �m��m�b �z��� �3�8�8�}�q��������!�"��&�� �%�e�W�A�.�/�"�5�)�� �0�1� �"�� �-�� � $�%� �&�M� �$�*�*�V�A� &�'�r

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zkyko/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server