nautechsystems / nautilus_trader

A high-performance algorithmic trading platform and event-driven backtester
https://nautilustrader.io
GNU Lesser General Public License v3.0
1.95k stars 445 forks source link

Windows support (continue #175) #257

Closed igorgodel closed 3 years ago

igorgodel commented 3 years ago

Windows support (continue #175)

I am going to use nautilus_trader for backtest and research on Windows and Linux (and partially in production ?) Based on your discussion (issue: Windows support #175) and my research and experiments of nautilus_trader code I suggest the next approach to 'solve' this problem.

Starting points - platforms, libraries and nautilus_trader versions used:

1) Windows = Windows 10 64bits (not 32bits) [(Version 2004 OS Build 19041.867)] 
 Notes:
 - base OS on my PC
2) WSL2 = Windows Subsystem for Linux 2
3) Ubuntu = Ubuntu v20.04 on top of Windows (WSL2)
 Notes:
 - used to support Redis (for NTV_ORIG_Ubuntu, NTV_CORR_Ubuntu and NTV_CORR_Windows!)
 - used for testing NTV_ORIG_Ubuntu and NTV_CORR_Ubuntu
4) Redis = redis-server v5.0.7 on Ubuntu
5) Python = CPython 3.8.3 on Windows, CPython 3.8.5 on Ubuntu    
6) MSVC = Microsoft Visual C++ 14.0 with 'rc.exe' (on Windows)   
 Notes:
 - used to build NTV_CORR_Windows
  To compile (on Windows) *.c files (generated from *.pyx) Cython requires Microsoft Visual C++ 14.0.  
7) NTV_ORIG = nautilus_trader original version 0.111.0
8) NTV_CORR = nautilus_trader original version 0.111.0 with changes made
9) NTV_ORIG_Ubuntu = NTV_ORIG building/running/testing on Ubuntu
10) NTV_CORR_Ubuntu = NTV_CORR building/running/testing on Ubuntu
11) NTV_CORR_Windows = NTV_CORR building/running/testing on Windows with Redis (on Ubuntu)

Windows support problems and solutions:

A) Low-level code compatibility problems (There are only 3)

1) uint128_t
====================  
Problem description:
--------------------  
    Really MSVC does not support uint128_t (__uint128_t and any uint128 struct)!
Possible solutions:
--------------------  
- I have tryed to code uint128_t in Cython ('C') with low-level operations and such functions
  as from_bytes, to_bytes ... It solves the compatibility problem but original code in 
  nautilus_trsder is faster !?!.
- Proposed solution:
--------------------  
  Practically nothing do = Not use uint128 at all!
  In \core\uuid.pxd  
  Remove code in NTV_ORIG: 
    cdef extern from *:
        ctypedef unsigned long long uint128 "__uint128_t"
  Change code in NTV_ORIG: 
    cdef readonly uint128 int_val
  to code in NTV_CORR:
    cdef readonly object int_val
    (int_val will store an Python int object)

  Version NTV_CORR_Ubuntu gives even better performance results than NTV_ORIG_Ubuntu
  (tests/performance_tests/test_perf_uuid.py)
  Notes: at these moment possible advantages of C-struct uint128_t is not used in code at all. 
Files, classes:
--------------------  
    \core\uuid.pxd, \core\uuid.pyx (class UUID)

2) PRNG functions
====================  
Problem description:
--------------------  
    MSVC does not contain functions drand48 and srand48 in "stdlib.h"!
Proposed solution:
--------------------  
In \backtest\models.pyx
Change code in NTV_ORIG: 
    cdef extern from "stdlib.h":
        double drand48()  # Returns a double in range [0,1)
        void srand48(long int seedval)
to code in NTV_CORR:
    cdef extern from "stdlib.h":
        void srand(unsigned int seedval)
        int rand()

    cdef inline void srand48(unsigned int seedval) nogil:
        srand(seedval)

    # Returns a double in range [0,1)
    DEF RAND_MAX = 32767
    cdef inline double drand48() nogil:
        return <double>(rand()) / RAND_MAX
Files, classes:
--------------------  
    \backtest\models.pyx  

3) long type
====================  
Problem description:
--------------------  
With gcc compiler: 
   On 64-bit architectures, long is at least an int64_t (8 bytes).
   On 32-bit architectures, long is at least an int32_t (4 bytes).
With Microsoft compilers:
   long is always an int32_t (4 bytes), regardless of an architecture (32/64-bit).
   Microsoft compilers support 'long long' (8 bytes) .. types but it's too long long ...  

An independence from size (e.g. long) allows to support the portable code.
One of the best way to do this - using the int64_t type.
Proposed solution:
--------------------  
Use int64_t type instead of long type.
To import int64_t use:
    from libc.stdint cimport int64_t
Files, classes:
--------------------  
    1) 'timestamp' cases:
        Examples:
        in core/datetime.pxd
            cpdef int64_t to_unix_time_ms(datetime timestamp) except *
            cpdef datetime from_unix_time_ms(int64_t timestamp)
            ...
        in core/time.pxd
            ctypedef int64_t _PyTime_t
            ...
        in order/order_book.pxd
            cdef readonly int64_t update_id
            cdef readonly int64_t timestamp
            ...

    2)  'counts' cases: counts for total msec, microsec ...
        Examples:
        in execution/cache.pyx
            cdef int64_t total_us = round((time.time() - ts) * 1000000)
            ...
        in execution/engine.pyx
            cdef int64_t total_us = round((self._clock.unix_time() - ts) * 1000000)
            ...

    3) 'get_size_of' cases:
        Examples:
        in core/functions.pxd
            cdef int64_t get_size_of(obj) except *
            ...
        in backtest/data_producer.pxd
            cdef int64_t total_size = 0
            ...

    4) converting string to int64_t cases:
        Examples:
        in model/bar.pyx
            from_unix_time_ms(<int64_t>int(pieces[5]))
            ...
        in serialization/parsing.pyx
            return None if time_string == NONE else from_unix_time_ms(<int64_t>int(time_string))
            ...
    5) 'thread_id' cases:
        Examples:
        in common/logging.pxd
            cdef readonly int64_t thread_id
        in common/logging.pyx
            def __init__(
                self,
                datetime timestamp not None,
                LogLevel level,
                LogColor color,
                str text not None,
                int64_t thread_id=0,
            ):

B) External libraries and tools compatibility 'problems'

1) Redis
====================  
I don't know nothing about official support for Windows.
But there is official description how to use Redis by Windows applications 
(installing Redis on Ubuntu v20.04 on top of Windows (WSL2))

Solution (20-50 min):
--------------------  
To run/test NTV_CORR on Windows and use execution DB we have to setup WSL2 on 
Windows then Ubuntu and Redis.
For Redis we use default port.

2) uvloop
====================  
uvloop team want (wanted) to support Windows since 2016 ...
In nautilus_trader uvloop is not mandatory.

Solution (0 min):
--------------------  
Nothing do. Nautilus_trader would just use asyncio with lower performance.

3) MSVC compiler
====================  
To compile (on Windows) *.c files (generated from *.pyx) Cython requires Microsoft Visual C++ 14.0.
see "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
Note:
Microsoft Visual Studio 2015 is the compiler used to build the official Python releases for Windows !!!        

We also have to download from somewhere (e.g. Windows SDK) rc.exe and rcdll.dll (MS resource compiler)
and copy it to ..\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\

Solution (5-20 min):
--------------------  
Load and install 

Testing:

Each test in \tests directory I ran individually for each version

1) For tests:

      - tests/acceptance_tests/test_*.py

      - tests/integration_tests/redis/test_*.py

      - tests/integration_tests/adapters/binance/test_binance_execution.py
      - tests/integration_tests/adapters/ccxt/test_ccxt_providers.py
      - tests/integration_tests/adapters/oanda/test_oanda_factory.py
      - tests/integration_tests/adapters/oanda/test_oanda_providers.py    

      - tests/performance_tests/test_*.py

      - tests/unit_tests/analysis/test_*.py
      - tests/unit_tests/backtest/test_*.py
      - tests/unit_tests/common/test_*.py
      - tests/unit_tests/core/test_*.py
      - tests/unit_tests/data/test_*.py
      - tests/unit_tests/execution/test_*.py
      - tests/unit_tests/indicators/test_*.py
      - tests/unit_tests/live/test_*.py
      - tests/unit_tests/model/test_*.py
      - tests/unit_tests/risk/test_*.py
      - tests/unit_tests/serialization/test_*.py 
      - tests/unit_tests/trading/test_*.py

      NTV_ORIG_Ubuntu, NTV_CORR_Ubuntu and NTV_CORR_Windows give the same outputs and 
      status 'ok'

      Notes:
        - for tests/unit_tests/backtest/test_backtest_models.py test
          the results are different with status 'failed'.
          The reason - pseudorandom number generators ...
        - for tests/performance_tests/test_*.py tests
          1) performance results for NTV_CORR_Ubuntu and NTV_ORIG_Ubuntu are
             practically identical (plus-minus)
          2) performance results for NTV_CORR_Ubuntu and NTV_ORIG_Ubuntu are faster 
             by 10-100% then performance results for NTV_CORR_Windows !!!

2) For tests:

      - tests/integration_tests/live/test_live_node.py
           ImportError: ccxtpro is not installed (*)
      - tests/integration_tests/adapters/binance/test_binance_factory.py
           ImportError: ccxtpro is not installed (*)
      - tests/integration_tests/adapters/bitmex/test_bitmex_execution.py
           Status ok
           Outputs for NTV_CORR_Ubuntu, NTV_ORIG_Ubuntu and NTV_CORR_Windows are different 
      - tests/integration_tests/adapters/bitmex/test_bitmex_factory.py
           ImportError: ccxtpro is not installed (*)
      - tests/integration_tests/adapters/ccxt/test_ccxt_data.py 
           Status ok
           But for NTV_CORR_Ubuntu, NTV_ORIG_Ubuntu (not for NTV_CORR_Windows) 
           after execution all tests the next message is outputed:
           "Fatal Python error: could not acquire lock for <_io.BufferedWriter name='<stdout>'>
            at interpreter shutdown, possibly due to daemon threads"
            ....
      - tests/integration_tests/adapters/ccxt/test_ccxt_execution.py
           Status ok
           Need your explanations 
      - tests/integration_tests/adapters/ccxt/test_ccxt_factory.py
           ImportError: ccxtpro is not installed (*)
      - tests/integration_tests/adapters/ib/test_ib_providers.py   
           ImportError: ccxtpro is not installed (*)
      - tests/integration_tests/adapters/oanda/test_oanda_data.py
           Status ok
           Need your explanations 
      (*) - No subscription to ccxtpro

      Notes:
        I think it's clear these results has no relationship to proposed changes.  

Conclusion:

  At these moment I don't see serious technical problems to support Windows.
  There is only 3 Low-level code compatibility problems.
  Approaches fixing the build errors on Windows see above.  

  Also at these moment I don't see serious maintenence problems to support Windows (???).

  You can choose more flexible policy:
     make proposed changes without declaring Windows support officially or when you wiil be sure  

  I can send you NTV_CORR version for control (say how?)

Thanks for your work !

igorgodel commented 3 years ago

Sorry, I have used the nautilus_trader original version 1.111.0 ( NOT 0.111.0)

cjdsellers commented 3 years ago

Thank you for this comprehensive write up, and for your efforts into investigating Windows compatibility!

We will definitely support Windows if it can be done - and from a quick read of the above, it looks possible.

There was recently a large diff pushed to develop which includes standardizing the platforms internal timestamps to int64_t nanoseconds. This will help resolve the issue with long.

I'll do a detailed review of this issue and we'll move forward in due course.

Feel free to add anything additional as it comes up.

cjdsellers commented 3 years ago

Windows Support Roadmap

cjdsellers commented 3 years ago

backtest/models.pyx

The pseudo-random generator function has been changed to the below - should be compatible with Windows without the mention of long;

from libc.stdlib cimport RAND_MAX
from libc.stdlib cimport rand
from libc.stdlib cimport srand

# Returns a double in range [0, 1.0]
cdef inline double _random_value() nogil:
    return <double>rand() / <double>RAND_MAX
        if random_seed is not None:
            Condition.type(random_seed, int, "random_seed")
            srand(random_seed)
        else:
            srand(random.randint(0, 2147483647))   # int32 max positive value
igorgodel commented 3 years ago

backtest/models.pyx

Ok

Note:
srand(random.randint(0, 2147483647))   # int32 max positive value
is too complicated and contains Python call 'random.randint'
use 
srand(rand())

But in any case, you know, the PRNG questions is not so simple
Even here , when random_seed is None (default value),  
getting 'time' (as arg for srand) will be more efficient
cjdsellers commented 3 years ago
    cdef inline bint _event_success(self, double probability) except *:
        # Return a result indicating whether an event occurred based on the
        # given probability.

        # probability is the probability of the event occurring [0, 1].
        if probability == 0:
            return False
        elif probability == 1:
            return True
        else:
            return probability >= random.random()

For simplicity I've returned the implementation to pure Python.

Performance of calling the C rand() is ~85ns (overhead likely from the performance harness itself). Performance of calling the pure Python impl is ~133ns (when required to call random.random()) otherwise identical to the C impl.

igorgodel commented 3 years ago

backtest/models.pyx PRNG functions

You are right: for timings 85 and 133 ns and for test 250 days 100 trades per day = 25000 trades 250000 (135 - 85 = 50ns) = 0.00125 sec. No questions (about nothing, even for 1000 years).

More importantly in this context: We always have to use the correspondent 'srand' and 'rand' functions (from the same lib).

For backtest\models.pyx we can use Python functions with no loss (practically) !!!

One note:

If you'll use Python functions then

if random_seed is not None:
    Condition.type(random_seed, int, "random_seed")
    random.seed(random_seed)
else:
    # no pass any arg. In this case current system time is used to initialize the rng
    random.seed()

If you'll use 'C' functions then

if random_seed is not None:
    Condition.type(random_seed, int, "random_seed")
    srand(random_seed)
else:
    # pass the return value from millis_now_from_day_start() 
    # (number millisec from the begging of the day, see below)
    srand(<int>millis_now_from_day_start())

millis_now_from_day_start() might be useful in other cases
add it to core\datetime.pyx
cpdef int64_t millis_now_from_day_start() except *:
    cdef datetime now = datetime.now()
    cdef datetime start = now.replace(hour=0, minute=0, second=0, microsecond=0)
    cdef timedelta delta = now - start
    # return value is always < 86_400_000 (= 24 * 60 * 60 * 1000)
    # so we can convert it to int (4 bytes) in a calling function (if we need)
    # For example, use for setting seed value
    return lround(delta.total_seconds() * MILLISECONDS_IN_SECOND)
cjdsellers commented 3 years ago

I've added the random.seed() call in the else case where a user has not supplied a seed.

millis_now_from_day_start is a good suggestion. We can add utility functions to assist users and development.

igorgodel commented 3 years ago

Ok.

igorgodel commented 3 years ago

Congratulations!

The first building the project and running tests under Windows (version 1.114.0) were successful without any extra adjustments and changes in the code and tests! Redis - under Ubuntu, WSL2 (didn't run tests with cctxpro)

cjdsellers commented 3 years ago

Excellent, next step is to setup the Windows CI requirements for the build matrix.

ian-wazowski commented 3 years ago

Great work @igorgodel,

@cjdsellers

But I have building issue under windows 32bits environment (MSVC 32bits compiler 2019, python 32bits)

build/optimized\nautilus_trader\core\functions.c(3983): error C2039: 'nd':  is not a member of 'tagPyArrayObject'.
C:\Anaconda3\envs\nautilus_trader32\lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(721): note: see declaration 'tagPyArrayObject'.
build/optimized\nautilus_trader\core\functions.c(4675): error C2039: 'nd':  is not a member of 'tagPyArrayObject'.
C:\Anaconda3\envs\nautilus_trader32\lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(721): note: see declaration 'tagPyArrayObject'.

Related Issue found in stackoverflow: here

I have not found the exact reason yet, but issue solved by the removing NPY_1_7_API_VERSION define_macros in build.py(L59)

I hope next cython release fix this problem

def _build_extensions() -> List[Extension]:
    # Build Extensions to feed into cythonize()
    # Profiling requires special macro directives
    define_macros = [("NPY_NO_DEPRECATED_API", )] #  HERE "NPY_1_7_API_VERSION")]
    if PROFILING_MODE or ANNOTATION_MODE:
        define_macros.append(("CYTHON_TRACE", "1"))

    return [
        Extension(
            name=str(pyx.relative_to(".")).replace(os.path.sep, ".")[:-4],
            sources=[str(pyx)],
            include_dirs=[".", np.get_include()],
            define_macros=define_macros,
            language="c",
        )
        for pyx in itertools.chain(
            Path("examples").rglob("*.pyx"),
            Path("nautilus_trader").rglob("*.pyx"),
        )
    ]
ian-wazowski commented 3 years ago

Everything worked well except above under 32bits environment.

igorgodel commented 3 years ago

@ian-wazowski The question is a little strange: What Cython version are you using for building the package? (see in your C:\Anaconda3\envs\nautilus_trader32\lib\site-packages...)

igorgodel commented 3 years ago

@ian-wazowski or open your "...build/optimized\nautilus_trader\core\functions.c" and see the first row: / Generated by Cython ????? /

ian-wazowski commented 3 years ago

@igorgodel

cython version: '0.29.21'

/* Generated by Cython 0.29.21 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "define_macros": [
            [
                "NPY_NO_DEPRECATED_API",
                "NPY_1_7_API_VERSION"
            ]
        ],
        "depends": [
            "C:\\Anaconda3\\envs\\nautilus_trader32\\lib\\site-packages\\numpy\\core\\include\\numpy\\arrayobject.h",
            "C:\\Anaconda3\\envs\\nautilus_trader32\\lib\\site-packages\\numpy\\core\\include\\numpy\\ufuncobject.h"
        ],
        "include_dirs": [
            ".",
            "C:\\Anaconda3\\envs\\nautilus_trader32\\lib\\site-packages\\numpy\\core\\include"
        ],
        "language": "c",
        "name": "nautilus_trader.core.functions",
        "sources": [
            "nautilus_trader\\core\\functions.pyx"
        ]
    },
    "module_name": "nautilus_trader.core.functions"
}
END: Cython Metadata */
igorgodel commented 3 years ago

@cjdsellers @ian-wazowski

NumPy-Cython compatibility issue description

(usefully for the project build matrix and user's special building)

The main rule (in short):

1) if dependency = (Cython <= 0.29.22) then

To build a project (successfully):

       a) do not define the macros "NPY_NO_DEPRECATED_API" or
       b) define the macros "NPY_NO_DEPRECATED_API" as [("NPY_NO_DEPRECATED_API",)]
       In both cases we can (!!!) get the message:
            warning:  "Using deprecated NumPy API, disable it by defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"

If we define the macros "NPY_NO_DEPRECATED_API" as [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")] then the compilation will be failed with the next

   ERROR MESSAGES: 
       build/optimized\nautilus_trader\core\functions.c(3347): error C2039: 'nd': is not a member of 'tagPyArrayObject'
       ..\lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(727): note: see declaration of 'tagPyArrayObject'
        or
       ...'dimentions': is not a member of 'tagPyArrayObject'
        or
       ...'strides': is not a member of 'tagPyArrayObject'
       ... 
   necessarily at least (!!!) in such cases when we use in cython code the next
   NDARRAY OPERATIONS:
       - array.ndim
       - array.shape
       - array.strides
       - array.data ... 

2) if dependency = (Cython >= 3.0a1) then

To build a project (successfully):

       a) define the macros "NPY_NO_DEPRECATED_API" as  [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")] or
       b) do not define the macros "NPY_NO_DEPRECATED_API"
          In this case we can (!!!) get the message:
            warning:  "Using deprecated NumPy API, disable it by defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"  

But for Cython >= 3.0a1 we never(!!!) get such errors, see ERROR MESSAGES

Explanation (in short): essential facts for explanation

1) One of the biggest changes in Cython >= 3.0a1 - the definition of the numpy.ndarray class to import PyArrayObject struct from 'C' header file (see \Cython\Includes\numpy__init__.pxd):

    ...
    cdef extern from "numpy/arrayobject.h":
        ...    
        ctypedef class numpy.ndarray [object PyArrayObject, check_size ignore]
        ...

a)
In Cython >= 3.0a1 this definition does not (!!!) contain specific internal data members (see below)
but only methods  to retrieve information about ndim, shape, ..., e.g.:    

        @property
        cdef inline int ndim(self) nogil:
            return PyArray_NDIM(self)
        @property
        cdef inline npy_intp *shape(self) nogil:
            return PyArray_DIMS(self)
        ...

b) In Cython <= 0.29.22 this definition contains only (!!!) specific internal data members to retrieve information about ndim, shape, ..., e.g.:

        cdef:
            char *data
            int ndim "nd"
            npy_intp *shape "dimensions"
            npy_intp *strides
            ...

When we call in *.pyx code, e.g. array.ndim, then
a) Cython >= 3.0a1 compiles this into 'C' code ... object->PyArray_NDIM() 
b) Cython <= 0.29.22 compiles this into 'C' code ... object->nd
where object - pointer to array
...
Important: 
Cython does not (!!!) use macros NPY_NO_DEPRECATED_API or NPY_1_7_API_VERSION to import 
PyArrayObject struct from 'C' header file.

2) Now about Numpy In the header file ...\numpy\core\include\numpy\ndarraytypes.h we can find the most essential code for our topic:

        ...
        typedef struct tagPyArrayObject_fields {
            PyObject_HEAD
            char *data;
            int nd;
            npy_intp *dimensions;
            npy_intp *strides;
            PyObject *base;
            PyArray_Descr *descr;
            int flags;
            PyObject *weakreflist;
        } PyArrayObject_fields;

        #if !defined(NPY_NO_DEPRECATED_API) || (NPY_NO_DEPRECATED_API < NPY_1_7_API_VERSION)
        typedef PyArrayObject_fields PyArrayObject;
        #else
        typedef struct tagPyArrayObject {
                PyObject_HEAD
        } PyArrayObject;
        #endif
        ...

In other words Numpy defines in different ways the PyArrayObject struct depending on the definition of NPY_NO_DEPRECATED_API !!!.

igorgodel commented 3 years ago

Windows support

I found another low-level compatibility problem. Module \live\node.py

AttributeError: "module 'signal' has no attribute 'SIGHUP'"

Windows does not support signal.SIGHUP

cjdsellers commented 3 years ago

Ok, there isn't a clear use case for SIGHUP, so removing.

igorgodel commented 3 years ago

Calling (in def _setup_loop(self)) self._loop.add_signal_handler(...) raises "raise NotImplementedError" see, for example, https://stackoverflow.com/questions/45987985/asyncio-loops-add-signal-handler-in-windows

ian-wazowski commented 3 years ago

@cjdsellers @ian-wazowski

NumPy-Cython compatibility issue description

(usefully for the project build matrix and user's special building)

The main rule (in short):

  1. if dependency = (Cython <= 0.29.22) then To build a project (successfully):

       a) do not define the macros "NPY_NO_DEPRECATED_API" or
       b) define the macros "NPY_NO_DEPRECATED_API" as [("NPY_NO_DEPRECATED_API",)]
       In both cases we can (!!!) get the message:
            warning:  "Using deprecated NumPy API, disable it by defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"

    If we define the macros "NPY_NO_DEPRECATED_API" as [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")] then the compilation will be failed with the next

    ERROR MESSAGES: 
       build/optimized\nautilus_trader\core\functions.c(3347): error C2039: 'nd': is not a member of 'tagPyArrayObject'
       ..\lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(727): note: see declaration of 'tagPyArrayObject'
        or
       ...'dimentions': is not a member of 'tagPyArrayObject'
        or
       ...'strides': is not a member of 'tagPyArrayObject'
       ... 
    necessarily at least (!!!) in such cases when we use in cython code the next
    NDARRAY OPERATIONS:
       - array.ndim
       - array.shape
       - array.strides
       - array.data ... 
  2. if dependency = (Cython >= 3.0a1) then To build a project (successfully):

       a) define the macros "NPY_NO_DEPRECATED_API" as  [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")] or
       b) do not define the macros "NPY_NO_DEPRECATED_API"
          In this case we can (!!!) get the message:
            warning:  "Using deprecated NumPy API, disable it by defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"  

    But for Cython >= 3.0a1 we never(!!!) get such errors, see ERROR MESSAGES

Explanation (in short): essential facts for explanation

  1. One of the biggest changes in Cython >= 3.0a1 - the definition of the numpy.ndarray class to import PyArrayObject struct from 'C' header file (see \Cython\Includes\numpyinit.pxd):

    ...
    cdef extern from "numpy/arrayobject.h":
        ...    
        ctypedef class numpy.ndarray [object PyArrayObject, check_size ignore]
        ...

    a) In Cython >= 3.0a1 this definition does not (!!!) contain specific internal data members (see below) but only methods to retrieve information about ndim, shape, ..., e.g.:

        @property
        cdef inline int ndim(self) nogil:
            return PyArray_NDIM(self)
        @property
        cdef inline npy_intp *shape(self) nogil:
            return PyArray_DIMS(self)
        ...

    b) In Cython <= 0.29.22 this definition contains only (!!!) specific internal data members to retrieve information about ndim, shape, ..., e.g.:

        cdef:
            char *data
            int ndim "nd"
            npy_intp *shape "dimensions"
            npy_intp *strides
            ...

    When we call in *.pyx code, e.g. array.ndim, then a) Cython >= 3.0a1 compiles this into 'C' code ... object->PyArray_NDIM() b) Cython <= 0.29.22 compiles this into 'C' code ... object->nd where object - pointer to array ... Important: Cython does not (!!!) use macros NPY_NO_DEPRECATED_API or NPY_1_7_API_VERSION to import PyArrayObject struct from 'C' header file.

  2. Now about Numpy In the header file ...\numpy\core\include\numpy\ndarraytypes.h we can find the most essential code for our topic:

        ...
        typedef struct tagPyArrayObject_fields {
            PyObject_HEAD
            char *data;
            int nd;
            npy_intp *dimensions;
            npy_intp *strides;
            PyObject *base;
            PyArray_Descr *descr;
            int flags;
            PyObject *weakreflist;
        } PyArrayObject_fields;
    
        #if !defined(NPY_NO_DEPRECATED_API) || (NPY_NO_DEPRECATED_API < NPY_1_7_API_VERSION)
        typedef PyArrayObject_fields PyArrayObject;
        #else
        typedef struct tagPyArrayObject {
                PyObject_HEAD
        } PyArrayObject;
        #endif
        ...

    In other words Numpy defines in different ways the PyArrayObject struct depending on the definition of NPY_NO_DEPRECATED_API !!!.

Sorry for late response, Thank @igorgodel a lot. Very appreciated your kind explanation.

cjdsellers commented 3 years ago

Calling (in def _setup_loop(self)) self._loop.add_signal_handler(...) raises "raise NotImplementedError" see, for example, https://stackoverflow.com/questions/45987985/asyncio-loops-add-signal-handler-in-windows

Just confirming this is fixed on the develop branch now?

Will release 1.116.0 shortly.

cjdsellers commented 3 years ago

@ian-wazowski

How are you going with running the platform in 32-bit? You must have to compile from source yourself?

I know you're on Windows as well. Are you currently hacking around anything since all of the changes?

I think the numpy API related compiler directive could be handled with a flag if you want to compile for 32-bit...?

cjdsellers commented 3 years ago

I'm looking at adding Windows into the build matrix.

windows-latest will be Windows Server 2019.

As you say the best way to install redis will be on top of the WSL.

Which leads me to a question - is it not cleaner to just run NautilusTrader on the WSL?

cjdsellers commented 3 years ago

Windows Support Roadmap

Ok, Windows is now integrated into the build matrix although only runs the unit tests (integration tests depend on Redis - will add soon).

ian-wazowski commented 3 years ago

How are you going with running the platform in 32-bit? You must have to compile from source yourself?

Yes, I compile the source every time. And there is some modifications in source which to solve above problems.

I know you're on Windows as well. Are you currently hacking around anything since all of the changes?

Yes, Currently my modified branch is far from latest main(master) branch. I think I can do some integration works when this version(1.116) released.

I think the numpy API related compiler directive could be handled with a flag if you want to compile for 32-bit...?

Yes, you are right. I did not think of it (I will do that as soon as possible).

Which leads me to a question - is it not cleaner to just run NautilusTrader on the WSL?

Yes, in normal cases, NautilusTrader on the WSL is good environment for development and also live-trading.

But my broker does not support REST or FIX protocol. It has its own way(communication via Window COM). so I had to make nautilus_trader run in python 32-bit interpreter.

cjdsellers commented 3 years ago

If you can bring your branch in line with develop and you can get your 32-bit compilation working with a flag then I'm willing to take a PR for it

cjdsellers commented 3 years ago

Signal handling for Windows platforms has been modified for TradingNode. So .stop() and .dispose() will need to be called directly - will setup KeyboardInterrupt handling at a later time.

All integration tests are now passing for Windows by using Memurai in place of Redis (Redis compatible API).

I'm now happy we can support Windows, MacOS and Linux 64-bit platforms!

I've updated the README and will do another release soon.

cjdsellers commented 3 years ago

@ian-wazowski I had to alter the logic of your INTERPRETER_32BIT_MODE flag as it was producing the warnings on 64-bit platforms I wanted to avoid.

It should still work for you, but let me know if that change presents any issues.

ian-wazowski commented 3 years ago

@cjdsellers

Good!

igorgodel commented 3 years ago

@cjdsellers

Congratulations!

RKMaynard commented 3 years ago

Hi I hope this is the right place for this question.. I have just tried to install on Windows 10 Pro (64 bit) build 19041.928 I pip installed wheel and downloaded the build tools for VS 2019 but got the following when I tried pip install -U nautilus_trader

(..mostly works, then..) Building wheels for collected packages: nautilus-trader, ciso8601, pycares Building wheel for nautilus-trader (PEP 517) ... error

ERROR: Command errored out with exit status 1: command: 'x:\dropbox\repos\projects\eruditis.env\scripts\python.exe' 'x:\dropbox\repos\projects\eruditis.env\lib\site-packages\pip_vendor\pep517_in_process.py' build_wheel 'C:\Users\Ray\AppData\Local\Temp\tmpw95b1ejx' cwd: C:\Users\Ray\AppData\Local\Temp\pip-install-5ojjxncj\nautilus-trader_0063c9011c0043b7836ee8cc8fadf083 Complete output (408 lines):

Error compiling Cython file:

...

cdef class BetfairExecutionClient(LiveExecutionClient): cdef object _client cdef object _stream cdef str _account_currency cpdef public dict venue_order_id_to_client_order_id ^

nautilus_trader\adapters\betfair\execution.pxd:26:10: cpdef variables will not be supported in Cython 3; currently they are no different from cdef variables Traceback (most recent call last): File "C:\Users\Ray\AppData\Local\Temp\pip-build-env-n91ni3jb\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1249, in cythonize_one_helper return cythonize_one(*m) File "C:\Users\Ray\AppData\Local\Temp\pip-build-env-n91ni3jb\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1225, in cythonize_one raise CompileError(None, pyx_file) Cython.Compiler.Errors.CompileError: nautilus_trader\adapters\betfair\execution.pyx

.. there is more but hopefully that gives an idea of the issue

Any thoughts or help would be greatly appreciated!

ian-wazowski commented 3 years ago

Hi I hope this is the right place for this question.. I have just tried to install on Windows 10 Pro (64 bit) build 19041.928 I pip installed wheel and downloaded the build tools for VS 2019 but got the following when I tried pip install -U nautilus_trader

(..mostly works, then..) Building wheels for collected packages: nautilus-trader, ciso8601, pycares Building wheel for nautilus-trader (PEP 517) ... error

ERROR: Command errored out with exit status 1: command: 'x:\dropbox\repos\projects\eruditis.env\scripts\python.exe' 'x:\dropbox\repos\projects\eruditis.env\lib\site-packages\pip_vendor\pep517_in_process.py' build_wheel 'C:\Users\Ray\AppData\Local\Temp\tmpw95b1ejx' cwd: C:\Users\Ray\AppData\Local\Temp\pip-install-5ojjxncj\nautilus-trader_0063c9011c0043b7836ee8cc8fadf083 Complete output (408 lines):

Error compiling Cython file:

...

cdef class BetfairExecutionClient(LiveExecutionClient):

cdef object _client cdef object _stream cdef str _account_currency cpdef public dict venue_order_id_to_client_order_id ^ nautilus_trader\adapters\betfair\execution.pxd:26:10: cpdef variables will not be supported in Cython 3; currently they are no different from cdef variables Traceback (most recent call last): File "C:\Users\Ray\AppData\Local\Temp\pip-build-env-n91ni3jb\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1249, in cythonize_one_helper return cythonize_one(*m) File "C:\Users\Ray\AppData\Local\Temp\pip-build-env-n91ni3jb\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1225, in cythonize_one raise CompileError(None, pyx_file) Cython.Compiler.Errors.CompileError: nautilus_trader\adapters\betfair\execution.pyx

.. there is more but hopefully that gives an idea of the issue

Any thoughts or help would be greatly appreciated!

I had same compile error on windows 32bit.

cjdsellers commented 3 years ago

Thanks for the feedback guys.

That PEP-517 build error has come up before on Read The Docs build server. Its caused by a dependency (or something else) in the Betfair adapter - I believe we're close to figuring it out and patching it.

igorgodel commented 3 years ago

About "Error compiling Cython file" from @RKMaynard

(For info: I don't use: pip install -U nautilus_trader)

@cjdsellers I think the reason is very simple: The file \adapters\betfair\execution.pxd contains the BetfairExecutionClient declaration:

cdef class BetfairExecutionClient(LiveExecutionClient):
    cdef object _client
    cdef object _stream
    cdef str _account_currency
    cpdef public dict venue_order_id_to_client_order_id
    cpdef public set pending_update_order_client_ids
    cpdef public object published_executions
    ...

Change:

1) 'cpdef' to 'cdef' for venue_order_id_to_client_order_id, pending_update_order_client_ids and published_executions 2) Another question: does attribute 'public' really need here. Maybe only - 'readonly'

Remarks: To be honest (if we talk about Cython) I don't understand (unlike the case methods or functions ) the using 'cpdef ' for data member or declaring data in module-level.

RKMaynard commented 3 years ago

Thanks for looking into this guys, this is a great project

@igorgodel you mentioned that you don't use pip install do you have a suggested approach on windows? i am used to pip install and this seemed to nearly work (after a couple of backtracks to get wheel and the build tools)

igorgodel commented 3 years ago

@RKMaynard Agreed - great project

Sorry, I wanted to say 'at this stage'. I am not only the user but also the developer of trading systems ... Now I am building the project and test ... Later I will use 'pip' definitely.

cjdsellers commented 3 years ago

Are there any further build issues for you guys on your local machines (on the latest develop branch)?

eicnix commented 3 years ago

@cjdsellers I just tried the develop branch and received some compilation errors:

(feature-labeling) C:\Users\lukas\nautilus_trader>pip install .
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: c:\users\lukas\anaconda3\envs\feature-labeling\Include\UNKNOWN
sysconfig: c:\users\lukas\anaconda3\envs\feature-labeling\Include
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
WARNING: Ignoring invalid distribution -atplotlib (c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages)
WARNING: Ignoring invalid distribution -atplotlib (c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages)
Processing c:\users\lukas\nautilus_trader
  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
   pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: cython<4.0,>=3.0a6 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (3.0a6)
Collecting redis==3.5.3
  Using cached redis-3.5.3-py2.py3-none-any.whl (72 kB)
Requirement already satisfied: scipy<2.0.0,>=1.6.1 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (1.6.2)
Collecting oandapyV20<0.7.0,>=0.6.3
  Using cached oandapyV20-0.6.3-py3-none-any.whl
Requirement already satisfied: empyrical<0.6.0,>=0.5.5 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (0.5.5)
Collecting ib_insync<0.10.0,>=0.9.65
  Using cached ib_insync-0.9.65-py3-none-any.whl (70 kB)
Collecting pytz<2021.0,>=2020.5
  Using cached pytz-2020.5-py2.py3-none-any.whl (510 kB)
Collecting tabulate<0.9.0,>=0.8.9
  Using cached tabulate-0.8.9-py3-none-any.whl (25 kB)
Collecting ccxt<2.0.0,>=1.48.9
  Using cached ccxt-1.48.86-py2.py3-none-any.whl (2.1 MB)
Requirement already satisfied: pandas<2.0.0,>=1.2.4 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (1.2.4)
Collecting betfairlightweight[speed]<3.0.0,>=2.12.1
  Using cached betfairlightweight-2.12.1-py3-none-any.whl (63 kB)
Collecting msgpack<2.0.0,>=1.0.2
  Using cached msgpack-1.0.2-cp38-cp38-win_amd64.whl (69 kB)
Requirement already satisfied: numpy<2.0.0,>=1.20.2 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (1.20.2)
Collecting psutil<6.0.0,>=5.8.0
  Using cached psutil-5.8.0-cp38-cp38-win_amd64.whl (245 kB)
Requirement already satisfied: requests<2.26.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from betfairlightweight[speed]<3.0.0,>=2.12.1->nautilus-trader==1.116.1) (2.25.1)
Collecting orjson==3.5.1
  Using cached orjson-3.5.1-cp38-none-win_amd64.whl (177 kB)
Collecting ciso8601==2.1.3
  Using cached ciso8601-2.1.3-cp38-cp38-win_amd64.whl
Requirement already satisfied: setuptools>=38.5.1 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (56.0.0)
Requirement already satisfied: certifi>=2018.1.18 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (2020.12.5)
Collecting yarl==1.6.3
  Using cached yarl-1.6.3-cp38-cp38-win_amd64.whl (125 kB)
Collecting aiohttp<3.8,>=3.7.4
  Using cached aiohttp-3.7.4.post0-cp38-cp38-win_amd64.whl (635 kB)
Collecting aiodns<2.1,>=1.1.1
  Using cached aiodns-2.0.0-py2.py3-none-any.whl (4.8 kB)
Collecting cryptography>=2.6.1
  Using cached cryptography-3.4.7-cp36-abi3-win_amd64.whl (1.6 MB)
Requirement already satisfied: idna>=2.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from yarl==1.6.3->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (2.10)
Collecting multidict>=4.0
  Using cached multidict-5.1.0-cp38-cp38-win_amd64.whl (48 kB)
Collecting pycares>=3.0.0
  Using cached pycares-3.1.1-cp38-cp38-win_amd64.whl (70 kB)
Collecting async-timeout<4.0,>=3.0
  Using cached async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Requirement already satisfied: typing-extensions>=3.6.5 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from aiohttp<3.8,>=3.7.4->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (3.7.4.3)
Requirement already satisfied: attrs>=17.3.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from aiohttp<3.8,>=3.7.4->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (20.3.0)
Requirement already satisfied: chardet<5.0,>=2.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from aiohttp<3.8,>=3.7.4->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (4.0.0)
Requirement already satisfied: cffi>=1.12 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from cryptography>=2.6.1->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (1.14.5)
Requirement already satisfied: pycparser in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from cffi>=1.12->cryptography>=2.6.1->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (2.20)
Requirement already satisfied: pandas-datareader>=0.2 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from empyrical<0.6.0,>=0.5.5->nautilus-trader==1.116.1) (0.9.0)
Requirement already satisfied: nest-asyncio in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from ib_insync<0.10.0,>=0.9.65->nautilus-trader==1.116.1) (1.5.1)
Collecting eventkit
  Using cached eventkit-0.8.6-py3-none-any.whl (31 kB)
Requirement already satisfied: python-dateutil>=2.7.3 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from pandas<2.0.0,>=1.2.4->nautilus-trader==1.116.1) (2.8.1)
Requirement already satisfied: lxml in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from pandas-datareader>=0.2->empyrical<0.6.0,>=0.5.5->nautilus-trader==1.116.1) (4.6.3)
Requirement already satisfied: six>=1.5 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from python-dateutil>=2.7.3->pandas<2.0.0,>=1.2.4->nautilus-trader==1.116.1) (1.15.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from requests<2.26.0->betfairlightweight[speed]<3.0.0,>=2.12.1->nautilus-trader==1.116.1) (1.26.4)
Building wheels for collected packages: nautilus-trader
  Building wheel for nautilus-trader (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\users\lukas\anaconda3\envs\feature-labeling\python.exe' 'c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' build_wheel 'C:\Users\lukas\AppData\Local\Temp\tmpdea87eag'
       cwd: C:\Users\lukas\AppData\Local\Temp\pip-req-build-3nmayc75
  Complete output (410 lines):
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False

  Starting build...
  System: Windows 64-bit
  Compiling examples\strategies\ema_cross_cython.pyx because it changed.
  Compiling nautilus_trader\adapters\betfair\data.pyx because it changed.
  Compiling nautilus_trader\adapters\betfair\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\data.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\factories.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\providers.pyx because it changed.
  Compiling nautilus_trader\adapters\ib\data.pyx because it changed.
  Compiling nautilus_trader\adapters\ib\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\ib\providers.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\data.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\factories.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\providers.pyx because it changed.
  Compiling nautilus_trader\analysis\performance.pyx because it changed.
  Compiling nautilus_trader\analysis\reports.pyx because it changed.
  Compiling nautilus_trader\backtest\data_client.pyx because it changed.
  Compiling nautilus_trader\backtest\data_container.pyx because it changed.
  Compiling nautilus_trader\backtest\data_producer.pyx because it changed.
  Compiling nautilus_trader\backtest\engine.pyx because it changed.
  Compiling nautilus_trader\backtest\exchange.pyx because it changed.
  Compiling nautilus_trader\backtest\execution.pyx because it changed.
  Compiling nautilus_trader\backtest\loaders.pyx because it changed.
  Compiling nautilus_trader\backtest\models.pyx because it changed.
  Compiling nautilus_trader\backtest\modules.pyx because it changed.
  Compiling nautilus_trader\common\cache.pyx because it changed.
  Compiling nautilus_trader\common\clock.pyx because it changed.
  Compiling nautilus_trader\common\component.pyx because it changed.
  Compiling nautilus_trader\common\enums.pyx because it changed.
  Compiling nautilus_trader\common\factories.pyx because it changed.
  Compiling nautilus_trader\common\generators.pyx because it changed.
  Compiling nautilus_trader\common\logging.pyx because it changed.
  Compiling nautilus_trader\common\providers.pyx because it changed.
  Compiling nautilus_trader\common\queue.pyx because it changed.
  Compiling nautilus_trader\common\throttler.pyx because it changed.
  Compiling nautilus_trader\common\timer.pyx because it changed.
  Compiling nautilus_trader\common\uuid.pyx because it changed.
  Compiling nautilus_trader\common\c_enums\component_state.pyx because it changed.
  Compiling nautilus_trader\common\c_enums\component_trigger.pyx because it changed.
  Compiling nautilus_trader\core\cache.pyx because it changed.
  Compiling nautilus_trader\core\constants.pyx because it changed.
  Compiling nautilus_trader\core\correctness.pyx because it changed.
  Compiling nautilus_trader\core\datetime.pyx because it changed.
  Compiling nautilus_trader\core\fsm.pyx because it changed.
  Compiling nautilus_trader\core\functions.pyx because it changed.
  Compiling nautilus_trader\core\message.pyx because it changed.
  Compiling nautilus_trader\core\uuid.pyx because it changed.
  Compiling nautilus_trader\data\aggregation.pyx because it changed.
  Compiling nautilus_trader\data\base.pyx because it changed.
  Compiling nautilus_trader\data\cache.pyx because it changed.
  Compiling nautilus_trader\data\client.pyx because it changed.
  Compiling nautilus_trader\data\database.pyx because it changed.
  Compiling nautilus_trader\data\engine.pyx because it changed.
  Compiling nautilus_trader\data\messages.pyx because it changed.
  Compiling nautilus_trader\data\wrangling.pyx because it changed.
  Compiling nautilus_trader\execution\base.pyx because it changed.
  Compiling nautilus_trader\execution\cache.pyx because it changed.
  Compiling nautilus_trader\execution\client.pyx because it changed.
  Compiling nautilus_trader\execution\database.pyx because it changed.
  Compiling nautilus_trader\execution\engine.pyx because it changed.
  Compiling nautilus_trader\execution\messages.pyx because it changed.
  Compiling nautilus_trader\indicators\atr.pyx because it changed.
  Compiling nautilus_trader\indicators\bid_ask_min_max.pyx because it changed.
  Compiling nautilus_trader\indicators\bollinger_bands.pyx because it changed.
  Compiling nautilus_trader\indicators\donchian_channel.pyx because it changed.
  Compiling nautilus_trader\indicators\efficiency_ratio.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_candlesticks.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enum.pyx because it changed.
  Compiling nautilus_trader\indicators\hilbert_period.pyx because it changed.
  Compiling nautilus_trader\indicators\hilbert_snr.pyx because it changed.
  Compiling nautilus_trader\indicators\hilbert_transform.pyx because it changed.
  Compiling nautilus_trader\indicators\keltner_channel.pyx because it changed.
  Compiling nautilus_trader\indicators\keltner_position.pyx because it changed.
  Compiling nautilus_trader\indicators\macd.pyx because it changed.
  Compiling nautilus_trader\indicators\obv.pyx because it changed.
  Compiling nautilus_trader\indicators\pressure.pyx because it changed.
  Compiling nautilus_trader\indicators\roc.pyx because it changed.
  Compiling nautilus_trader\indicators\rsi.pyx because it changed.
  Compiling nautilus_trader\indicators\spread_analyzer.pyx because it changed.
  Compiling nautilus_trader\indicators\stochastics.pyx because it changed.
  Compiling nautilus_trader\indicators\swings.pyx because it changed.
  Compiling nautilus_trader\indicators\volatility_ratio.pyx because it changed.
  Compiling nautilus_trader\indicators\vwap.pyx because it changed.
  Compiling nautilus_trader\indicators\average\ama.pyx because it changed.
  Compiling nautilus_trader\indicators\average\ema.pyx because it changed.
  Compiling nautilus_trader\indicators\average\hma.pyx because it changed.
  Compiling nautilus_trader\indicators\average\ma_factory.pyx because it changed.
  Compiling nautilus_trader\indicators\average\moving_average.pyx because it changed.
  Compiling nautilus_trader\indicators\average\sma.pyx because it changed.
  Compiling nautilus_trader\indicators\average\wma.pyx because it changed.
  Compiling nautilus_trader\indicators\base\indicator.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_body.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_direction.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_size.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_wick.pyx because it changed.
  Compiling nautilus_trader\live\data_client.pyx because it changed.
  Compiling nautilus_trader\live\data_engine.pyx because it changed.
  Compiling nautilus_trader\live\execution_client.pyx because it changed.
  Compiling nautilus_trader\live\execution_engine.pyx because it changed.
  Compiling nautilus_trader\live\node_builder.pyx because it changed.
  Compiling nautilus_trader\live\risk_engine.pyx because it changed.
  Compiling nautilus_trader\model\bar.pyx because it changed.
  Compiling nautilus_trader\model\commands.pyx because it changed.
  Compiling nautilus_trader\model\currencies.pyx because it changed.
  Compiling nautilus_trader\model\currency.pyx because it changed.
  Compiling nautilus_trader\model\data.pyx because it changed.
  Compiling nautilus_trader\model\enums.pyx because it changed.
  Compiling nautilus_trader\model\events.pyx because it changed.
  Compiling nautilus_trader\model\identifiers.pyx because it changed.
  Compiling nautilus_trader\model\instrument.pyx because it changed.
  Compiling nautilus_trader\model\objects.pyx because it changed.
  Compiling nautilus_trader\model\position.pyx because it changed.
  Compiling nautilus_trader\model\tick.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\aggressor_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\asset_class.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\asset_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\bar_aggregation.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\currency_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\depth_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\instrument_close_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\instrument_status.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\liquidity_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\oms_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\orderbook_delta.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\orderbook_level.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\order_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\order_state.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\order_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\position_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\price_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\time_in_force.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\venue_status.pyx because it changed.
  Compiling nautilus_trader\model\order\base.pyx because it changed.
  Compiling nautilus_trader\model\order\bracket.pyx because it changed.
  Compiling nautilus_trader\model\order\limit.pyx because it changed.
  Compiling nautilus_trader\model\order\market.pyx because it changed.
  Compiling nautilus_trader\model\order\stop_limit.pyx because it changed.
  Compiling nautilus_trader\model\order\stop_market.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\book.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\ladder.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\level.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\order.pyx because it changed.
  Compiling nautilus_trader\redis\execution.pyx because it changed.
  Compiling nautilus_trader\risk\engine.pyx because it changed.
  Compiling nautilus_trader\risk\sizing.pyx because it changed.
  Compiling nautilus_trader\serialization\base.pyx because it changed.
  Compiling nautilus_trader\serialization\serializers.pyx because it changed.
  Compiling nautilus_trader\trading\account.pyx because it changed.
  Compiling nautilus_trader\trading\calculators.pyx because it changed.
  Compiling nautilus_trader\trading\filters.pyx because it changed.
  Compiling nautilus_trader\trading\portfolio.pyx because it changed.
  Compiling nautilus_trader\trading\strategy.pyx because it changed.
  Compiling nautilus_trader\trading\trader.pyx because it changed.
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  2/153] Cythonizing nautilus_trader\adapters\betfair\data.pyx
  [ 20/153] Cythonizing nautilus_trader\backtest\engine.pyx
  [ 47/153] Cythonizing nautilus_trader\core\uuid.pyx
  [ 52/153] Cythonizing nautilus_trader\data\database.pyx
  [ 54/153] Cythonizing nautilus_trader\data\messages.pyx
  [ 59/153] Cythonizing nautilus_trader\execution\database.pyx
  [ 87/153] Cythonizing nautilus_trader\indicators\obv.pyx
  [ 95/153] Cythonizing nautilus_trader\indicators\vwap.pyx
  [109/153] Cythonizing nautilus_trader\model\c_enums\instrument_close_type.pyx
  [117/153] Cythonizing nautilus_trader\model\c_enums\orderbook_level.pyx
  [123/153] Cythonizing nautilus_trader\model\currencies.pyx
  [130/153] Cythonizing nautilus_trader\model\objects.pyx
  [132/153] Cythonizing nautilus_trader\model\order\bracket.pyx
  [137/153] Cythonizing nautilus_trader\model\orderbook\book.pyx

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
  from nautilus_trader.model.instrument cimport BettingInstrument

  from nautilus_trader.adapters.betfair.common import BETFAIR_VENUE
  from nautilus_trader.adapters.betfair.parsing import on_market_update

  from nautilus_trader.adapters.betfair.providers cimport BetfairInstrumentProvider
  ^
  ------------------------------------------------------------

  nautilus_trader\adapters\betfair\data.pyx:37:0: 'nautilus_trader\adapters\betfair\providers.pxd' not found
  Traceback (most recent call last):
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1249, in cythonize_one_helper
      return cythonize_one(*m)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1225, in cythonize_one
      raise CompileError(None, pyx_file)
  Cython.Compiler.Errors.CompileError: nautilus_trader\adapters\betfair\data.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [ 10/153] Cythonizing nautilus_trader\adapters\ib\providers.pyx
  [ 19/153] Cythonizing nautilus_trader\backtest\data_producer.pyx
  [ 35/153] Cythonizing nautilus_trader\common\providers.pyx
  [ 39/153] Cythonizing nautilus_trader\common\uuid.pyx
  [ 40/153] Cythonizing nautilus_trader\core\cache.pyx
  [ 41/153] Cythonizing nautilus_trader\core\constants.pyx
  [ 42/153] Cythonizing nautilus_trader\core\correctness.pyx
  [ 44/153] Cythonizing nautilus_trader\core\fsm.pyx
  [ 45/153] Cythonizing nautilus_trader\core\functions.pyx
  [ 63/153] Cythonizing nautilus_trader\indicators\average\ama.pyx
  [ 65/153] Cythonizing nautilus_trader\indicators\average\hma.pyx
  [ 74/153] Cythonizing nautilus_trader\indicators\efficiency_ratio.pyx
  [ 79/153] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_size.pyx
  [ 85/153] Cythonizing nautilus_trader\indicators\keltner_position.pyx
  [ 94/153] Cythonizing nautilus_trader\indicators\volatility_ratio.pyx
  [100/153] Cythonizing nautilus_trader\live\node_builder.pyx
  [142/153] Cythonizing nautilus_trader\model\tick.pyx
  [149/153] Cythonizing nautilus_trader\trading\calculators.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  4/153] Cythonizing nautilus_trader\adapters\ccxt\data.pyx
  [ 36/153] Cythonizing nautilus_trader\common\queue.pyx
  [ 38/153] Cythonizing nautilus_trader\common\timer.pyx
  [ 43/153] Cythonizing nautilus_trader\core\datetime.pyx
  [ 46/153] Cythonizing nautilus_trader\core\message.pyx
  [ 50/153] Cythonizing nautilus_trader\data\cache.pyx
  [ 68/153] Cythonizing nautilus_trader\indicators\average\sma.pyx
  [ 78/153] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_direction.pyx
  [ 84/153] Cythonizing nautilus_trader\indicators\keltner_channel.pyx
  [ 92/153] Cythonizing nautilus_trader\indicators\stochastics.pyx
  [101/153] Cythonizing nautilus_trader\live\risk_engine.pyx
  [140/153] Cythonizing nautilus_trader\model\orderbook\order.pyx
  [146/153] Cythonizing nautilus_trader\serialization\base.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  6/153] Cythonizing nautilus_trader\adapters\ccxt\factories.pyx
  [ 24/153] Cythonizing nautilus_trader\backtest\models.pyx
  [ 25/153] Cythonizing nautilus_trader\backtest\modules.pyx
  [ 61/153] Cythonizing nautilus_trader\execution\messages.pyx
  [ 62/153] Cythonizing nautilus_trader\indicators\atr.pyx
  [ 64/153] Cythonizing nautilus_trader\indicators\average\ema.pyx
  [ 66/153] Cythonizing nautilus_trader\indicators\average\ma_factory.pyx
  [ 67/153] Cythonizing nautilus_trader\indicators\average\moving_average.pyx
  [ 70/153] Cythonizing nautilus_trader\indicators\base\indicator.pyx
  [ 72/153] Cythonizing nautilus_trader\indicators\bollinger_bands.pyx
  [ 86/153] Cythonizing nautilus_trader\indicators\macd.pyx
  [ 96/153] Cythonizing nautilus_trader\live\data_client.pyx
  [150/153] Cythonizing nautilus_trader\trading\filters.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [ 12/153] Cythonizing nautilus_trader\adapters\oanda\execution.pyx
  [ 16/153] Cythonizing nautilus_trader\analysis\reports.pyx
  [ 22/153] Cythonizing nautilus_trader\backtest\execution.pyx
  [ 49/153] Cythonizing nautilus_trader\data\base.pyx
  [ 58/153] Cythonizing nautilus_trader\execution\client.pyx
  [ 91/153] Cythonizing nautilus_trader\indicators\spread_analyzer.pyx
  [105/153] Cythonizing nautilus_trader\model\c_enums\asset_type.pyx
  [113/153] Cythonizing nautilus_trader\model\c_enums\order_side.pyx
  [116/153] Cythonizing nautilus_trader\model\c_enums\orderbook_delta.pyx
  [121/153] Cythonizing nautilus_trader\model\c_enums\venue_status.pyx
  [126/153] Cythonizing nautilus_trader\model\enums.pyx
  [127/153] Cythonizing nautilus_trader\model\events.pyx
  [145/153] Cythonizing nautilus_trader\risk\sizing.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  9/153] Cythonizing nautilus_trader\adapters\ib\execution.pyx
  [ 15/153] Cythonizing nautilus_trader\analysis\performance.pyx
  [ 26/153] Cythonizing nautilus_trader\common\c_enums\component_state.pyx
  [ 30/153] Cythonizing nautilus_trader\common\component.pyx
  [ 55/153] Cythonizing nautilus_trader\data\wrangling.pyx
  [ 71/153] Cythonizing nautilus_trader\indicators\bid_ask_min_max.pyx
  [ 81/153] Cythonizing nautilus_trader\indicators\hilbert_period.pyx
  [ 88/153] Cythonizing nautilus_trader\indicators\pressure.pyx
  [ 99/153] Cythonizing nautilus_trader\live\execution_engine.pyx
  [147/153] Cythonizing nautilus_trader\serialization\serializers.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  3/153] Cythonizing nautilus_trader\adapters\betfair\execution.pyx
  [ 13/153] Cythonizing nautilus_trader\adapters\oanda\factories.pyx
  [ 21/153] Cythonizing nautilus_trader\backtest\exchange.pyx
  [ 60/153] Cythonizing nautilus_trader\execution\engine.pyx
  [102/153] Cythonizing nautilus_trader\model\bar.pyx
  [118/153] Cythonizing nautilus_trader\model\c_enums\position_side.pyx
  [125/153] Cythonizing nautilus_trader\model\data.pyx
  [131/153] Cythonizing nautilus_trader\model\order\base.pyx
  [136/153] Cythonizing nautilus_trader\model\order\stop_market.pyx
  [148/153] Cythonizing nautilus_trader\trading\account.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  7/153] Cythonizing nautilus_trader\adapters\ccxt\providers.pyx
  [ 17/153] Cythonizing nautilus_trader\backtest\data_client.pyx
  [ 37/153] Cythonizing nautilus_trader\common\throttler.pyx
  [ 53/153] Cythonizing nautilus_trader\data\engine.pyx
  [ 89/153] Cythonizing nautilus_trader\indicators\roc.pyx
  [ 97/153] Cythonizing nautilus_trader\live\data_engine.pyx
  [151/153] Cythonizing nautilus_trader\trading\portfolio.pyx

  Error compiling Cython file:
  ------------------------------------------------------------
  ...
  from typing import Dict, List, Optional, Set

  import betfairlightweight
  import orjson

  from nautilus_trader.adapters.betfair.providers cimport BetfairInstrumentProvider
  ^
  ------------------------------------------------------------

  nautilus_trader\adapters\betfair\execution.pyx:26:0: 'nautilus_trader\adapters\betfair\providers.pxd' not found
  Traceback (most recent call last):
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1249, in cythonize_one_helper
      return cythonize_one(*m)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1225, in cythonize_one
      raise CompileError(None, pyx_file)
  Cython.Compiler.Errors.CompileError: nautilus_trader\adapters\betfair\execution.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  5/153] Cythonizing nautilus_trader\adapters\ccxt\execution.pyx
  [ 33/153] Cythonizing nautilus_trader\common\generators.pyx
  [ 48/153] Cythonizing nautilus_trader\data\aggregation.pyx
  [ 69/153] Cythonizing nautilus_trader\indicators\average\wma.pyx
  [ 75/153] Cythonizing nautilus_trader\indicators\fuzzy_candlesticks.pyx
  [103/153] Cythonizing nautilus_trader\model\c_enums\aggressor_side.pyx
  [108/153] Cythonizing nautilus_trader\model\c_enums\depth_type.pyx
  [111/153] Cythonizing nautilus_trader\model\c_enums\liquidity_side.pyx
  [115/153] Cythonizing nautilus_trader\model\c_enums\order_type.pyx
  [119/153] Cythonizing nautilus_trader\model\c_enums\price_type.pyx
  [122/153] Cythonizing nautilus_trader\model\commands.pyx
  [133/153] Cythonizing nautilus_trader\model\order\limit.pyx
  [138/153] Cythonizing nautilus_trader\model\orderbook\ladder.pyx
  [153/153] Cythonizing nautilus_trader\trading\trader.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  8/153] Cythonizing nautilus_trader\adapters\ib\data.pyx
  [ 14/153] Cythonizing nautilus_trader\adapters\oanda\providers.pyx
  [ 18/153] Cythonizing nautilus_trader\backtest\data_container.pyx
  [ 31/153] Cythonizing nautilus_trader\common\enums.pyx
  [ 32/153] Cythonizing nautilus_trader\common\factories.pyx
  [ 51/153] Cythonizing nautilus_trader\data\client.pyx
  [ 83/153] Cythonizing nautilus_trader\indicators\hilbert_transform.pyx
  [ 90/153] Cythonizing nautilus_trader\indicators\rsi.pyx
  [ 98/153] Cythonizing nautilus_trader\live\execution_client.pyx
  [143/153] Cythonizing nautilus_trader\redis\execution.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [ 11/153] Cythonizing nautilus_trader\adapters\oanda\data.pyx
  [ 27/153] Cythonizing nautilus_trader\common\c_enums\component_trigger.pyx
  [ 28/153] Cythonizing nautilus_trader\common\cache.pyx
  [ 34/153] Cythonizing nautilus_trader\common\logging.pyx
  [ 57/153] Cythonizing nautilus_trader\execution\cache.pyx
  [104/153] Cythonizing nautilus_trader\model\c_enums\asset_class.pyx
  [107/153] Cythonizing nautilus_trader\model\c_enums\currency_type.pyx
  [110/153] Cythonizing nautilus_trader\model\c_enums\instrument_status.pyx
  [114/153] Cythonizing nautilus_trader\model\c_enums\order_state.pyx
  [124/153] Cythonizing nautilus_trader\model\currency.pyx
  [129/153] Cythonizing nautilus_trader\model\instrument.pyx
  [135/153] Cythonizing nautilus_trader\model\order\stop_limit.pyx
  [139/153] Cythonizing nautilus_trader\model\orderbook\level.pyx
  [144/153] Cythonizing nautilus_trader\risk\engine.pyx
  multiprocessing.pool.RemoteTraceback:
  """
  Traceback (most recent call last):
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\multiprocessing\pool.py", line 125, in worker
      result = (True, func(*args, **kwds))
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\multiprocessing\pool.py", line 48, in mapstar
      return list(map(*args))
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1249, in cythonize_one_helper
      return cythonize_one(*m)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1225, in cythonize_one
      raise CompileError(None, pyx_file)
  Cython.Compiler.Errors.CompileError: nautilus_trader\adapters\betfair\execution.pyx
  """

  The above exception was the direct cause of the following exception:

  Traceback (most recent call last):
    File "build.py", line 174, in <module>
      build({})
    File "build.py", line 138, in build
      distribution = _build_distribution(extensions)
    File "build.py", line 107, in _build_distribution
      ext_modules=cythonize(
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\Cython\Build\Dependencies.py", line 1093, in cythonize
      result.get(99999)  # seconds
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\multiprocessing\pool.py", line 771, in get
      raise self._value
  Cython.Compiler.Errors.CompileError: nautilus_trader\adapters\betfair\execution.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  1/153] Cythonizing examples\strategies\ema_cross_cython.pyx
  [ 23/153] Cythonizing nautilus_trader\backtest\loaders.pyx
  [ 29/153] Cythonizing nautilus_trader\common\clock.pyx
  [ 56/153] Cythonizing nautilus_trader\execution\base.pyx
  [ 73/153] Cythonizing nautilus_trader\indicators\donchian_channel.pyx
  [ 76/153] Cythonizing nautilus_trader\indicators\fuzzy_enum.pyx
  [ 77/153] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_body.pyx
  [ 80/153] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_wick.pyx
  [ 82/153] Cythonizing nautilus_trader\indicators\hilbert_snr.pyx
  [ 93/153] Cythonizing nautilus_trader\indicators\swings.pyx
  [106/153] Cythonizing nautilus_trader\model\c_enums\bar_aggregation.pyx
  [112/153] Cythonizing nautilus_trader\model\c_enums\oms_type.pyx
  [120/153] Cythonizing nautilus_trader\model\c_enums\time_in_force.pyx
  [128/153] Cythonizing nautilus_trader\model\identifiers.pyx
  [134/153] Cythonizing nautilus_trader\model\order\market.pyx
  [141/153] Cythonizing nautilus_trader\model\position.pyx
  [152/153] Cythonizing nautilus_trader\trading\strategy.pyx
  Traceback (most recent call last):
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 280, in <module>
      main()
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 204, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\poetry\core\masonry\api.py", line 68, in build_wheel
      return unicode(WheelBuilder.make_in(poetry, Path(wheel_directory)))
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 72, in make_in
      wb.build()
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 99, in build
      self._build(zip_file)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 125, in _build
      self._run_build_script(self._package.build_script)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-c1c1lo7a\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 175, in _run_build_script
      subprocess.check_call([self.executable.as_posix(), build_script])
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\subprocess.py", line 364, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['c:/users/lukas/anaconda3/envs/feature-labeling/python.exe', 'build.py']' returned non-zero exit status 1.
  ----------------------------------------
  ERROR: Failed building wheel for nautilus-trader
Failed to build nautilus-trader
ERROR: Could not build wheels for nautilus-trader which use PEP 517 and cannot be installed directly
cjdsellers commented 3 years ago

Thanks for the feedback Lukas,

I believe those errors have been fixed. Could you please try on the latest version of develop and report if you still experience the same error?

eicnix commented 3 years ago

Just tried to build the latest develop and ran into a different issue. So it seems like there is an improvement

pip install .
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: c:\users\lukas\anaconda3\envs\feature-labeling\Include\UNKNOWN
sysconfig: c:\users\lukas\anaconda3\envs\feature-labeling\Include
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
WARNING: Ignoring invalid distribution -atplotlib (c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages)
WARNING: Ignoring invalid distribution -atplotlib (c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages)
Processing c:\users\lukas\nautilus_trader
  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
   pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting msgpack<2.0.0,>=1.0.2
  Using cached msgpack-1.0.2-cp38-cp38-win_amd64.whl (69 kB)
Collecting pytz<2021.0,>=2020.5
  Using cached pytz-2020.5-py2.py3-none-any.whl (510 kB)
Collecting redis==3.5.3
  Using cached redis-3.5.3-py2.py3-none-any.whl (72 kB)
Collecting ib_insync<0.10.0,>=0.9.65
  Downloading ib_insync-0.9.66-py3-none-any.whl (70 kB)
     |████████████████████████████████| 70 kB 2.2 MB/s
Collecting ccxt<2.0.0,>=1.48.9
  Downloading ccxt-1.48.90-py2.py3-none-any.whl (2.1 MB)
     |████████████████████████████████| 2.1 MB 3.3 MB/s
Requirement already satisfied: pandas<2.0.0,>=1.2.4 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (1.2.4)
Collecting psutil<6.0.0,>=5.8.0
  Using cached psutil-5.8.0-cp38-cp38-win_amd64.whl (245 kB)
Collecting tabulate<0.9.0,>=0.8.9
  Using cached tabulate-0.8.9-py3-none-any.whl (25 kB)
Collecting betfairlightweight[speed]<3.0.0,>=2.12.1
  Using cached betfairlightweight-2.12.1-py3-none-any.whl (63 kB)
Requirement already satisfied: numpy<2.0.0,>=1.20.2 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (1.20.2)
Collecting oandapyV20<0.7.0,>=0.6.3
  Using cached oandapyV20-0.6.3-py3-none-any.whl
Requirement already satisfied: scipy<2.0.0,>=1.6.1 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (1.6.2)
Requirement already satisfied: cython<4.0,>=3.0a6 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (3.0a6)
Requirement already satisfied: empyrical<0.6.0,>=0.5.5 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from nautilus-trader==1.116.1) (0.5.5)
Requirement already satisfied: requests<2.26.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from betfairlightweight[speed]<3.0.0,>=2.12.1->nautilus-trader==1.116.1) (2.25.1)
Collecting orjson==3.5.1
  Using cached orjson-3.5.1-cp38-none-win_amd64.whl (177 kB)
Collecting ciso8601==2.1.3
  Using cached ciso8601-2.1.3-cp38-cp38-win_amd64.whl
Collecting aiohttp<3.8,>=3.7.4
  Using cached aiohttp-3.7.4.post0-cp38-cp38-win_amd64.whl (635 kB)
Collecting cryptography>=2.6.1
  Using cached cryptography-3.4.7-cp36-abi3-win_amd64.whl (1.6 MB)
Collecting aiodns<2.1,>=1.1.1
  Using cached aiodns-2.0.0-py2.py3-none-any.whl (4.8 kB)
Requirement already satisfied: certifi>=2018.1.18 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (2020.12.5)
Collecting yarl==1.6.3
  Using cached yarl-1.6.3-cp38-cp38-win_amd64.whl (125 kB)
Requirement already satisfied: setuptools>=38.5.1 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (56.0.0)
Requirement already satisfied: idna>=2.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from yarl==1.6.3->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (2.10)
Collecting multidict>=4.0
  Using cached multidict-5.1.0-cp38-cp38-win_amd64.whl (48 kB)
Collecting pycares>=3.0.0
  Using cached pycares-3.1.1-cp38-cp38-win_amd64.whl (70 kB)
Requirement already satisfied: attrs>=17.3.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from aiohttp<3.8,>=3.7.4->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (20.3.0)
Requirement already satisfied: chardet<5.0,>=2.0 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from aiohttp<3.8,>=3.7.4->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (4.0.0)
Collecting async-timeout<4.0,>=3.0
  Using cached async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Requirement already satisfied: typing-extensions>=3.6.5 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from aiohttp<3.8,>=3.7.4->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (3.7.4.3)
Requirement already satisfied: cffi>=1.12 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from cryptography>=2.6.1->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (1.14.5)
Requirement already satisfied: pycparser in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from cffi>=1.12->cryptography>=2.6.1->ccxt<2.0.0,>=1.48.9->nautilus-trader==1.116.1) (2.20)
Requirement already satisfied: pandas-datareader>=0.2 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from empyrical<0.6.0,>=0.5.5->nautilus-trader==1.116.1) (0.9.0)
Requirement already satisfied: nest-asyncio in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from ib_insync<0.10.0,>=0.9.65->nautilus-trader==1.116.1) (1.5.1)
Collecting eventkit
  Using cached eventkit-0.8.6-py3-none-any.whl (31 kB)
Requirement already satisfied: python-dateutil>=2.7.3 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from pandas<2.0.0,>=1.2.4->nautilus-trader==1.116.1) (2.8.1)
Requirement already satisfied: lxml in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from pandas-datareader>=0.2->empyrical<0.6.0,>=0.5.5->nautilus-trader==1.116.1) (4.6.3)
Requirement already satisfied: six>=1.5 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from python-dateutil>=2.7.3->pandas<2.0.0,>=1.2.4->nautilus-trader==1.116.1) (1.15.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages (from requests<2.26.0->betfairlightweight[speed]<3.0.0,>=2.12.1->nautilus-trader==1.116.1) (1.26.4)
Building wheels for collected packages: nautilus-trader
  Building wheel for nautilus-trader (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\users\lukas\anaconda3\envs\feature-labeling\python.exe' 'c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' build_wheel 'C:\Users\lukas\AppData\Local\Temp\tmp2wkyh3kb'
       cwd: C:\Users\lukas\AppData\Local\Temp\pip-req-build-yhqk1_nu
  Complete output (1074 lines):
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False

  Starting build...
  System: Windows 64-bit
  Compiling examples\strategies\ema_cross_cython.pyx because it changed.
  Compiling nautilus_trader\adapters\betfair\data.pyx because it changed.
  Compiling nautilus_trader\adapters\betfair\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\betfair\factory.pyx because it changed.
  Compiling nautilus_trader\adapters\betfair\providers.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\data.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\factories.pyx because it changed.
  Compiling nautilus_trader\adapters\ccxt\providers.pyx because it changed.
  Compiling nautilus_trader\adapters\ib\data.pyx because it changed.
  Compiling nautilus_trader\adapters\ib\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\ib\providers.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\data.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\execution.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\factories.pyx because it changed.
  Compiling nautilus_trader\adapters\oanda\providers.pyx because it changed.
  Compiling nautilus_trader\analysis\performance.pyx because it changed.
  Compiling nautilus_trader\analysis\reports.pyx because it changed.
  Compiling nautilus_trader\backtest\data_client.pyx because it changed.
  Compiling nautilus_trader\backtest\data_container.pyx because it changed.
  Compiling nautilus_trader\backtest\data_producer.pyx because it changed.
  Compiling nautilus_trader\backtest\engine.pyx because it changed.
  Compiling nautilus_trader\backtest\exchange.pyx because it changed.
  Compiling nautilus_trader\backtest\execution.pyx because it changed.
  Compiling nautilus_trader\backtest\loaders.pyx because it changed.
  Compiling nautilus_trader\backtest\models.pyx because it changed.
  Compiling nautilus_trader\backtest\modules.pyx because it changed.
  Compiling nautilus_trader\common\cache.pyx because it changed.
  Compiling nautilus_trader\common\clock.pyx because it changed.
  Compiling nautilus_trader\common\component.pyx because it changed.
  Compiling nautilus_trader\common\enums.pyx because it changed.
  Compiling nautilus_trader\common\factories.pyx because it changed.
  Compiling nautilus_trader\common\generators.pyx because it changed.
  Compiling nautilus_trader\common\logging.pyx because it changed.
  Compiling nautilus_trader\common\providers.pyx because it changed.
  Compiling nautilus_trader\common\queue.pyx because it changed.
  Compiling nautilus_trader\common\throttler.pyx because it changed.
  Compiling nautilus_trader\common\timer.pyx because it changed.
  Compiling nautilus_trader\common\uuid.pyx because it changed.
  Compiling nautilus_trader\common\c_enums\component_state.pyx because it changed.
  Compiling nautilus_trader\common\c_enums\component_trigger.pyx because it changed.
  Compiling nautilus_trader\core\cache.pyx because it changed.
  Compiling nautilus_trader\core\constants.pyx because it changed.
  Compiling nautilus_trader\core\correctness.pyx because it changed.
  Compiling nautilus_trader\core\datetime.pyx because it changed.
  Compiling nautilus_trader\core\fsm.pyx because it changed.
  Compiling nautilus_trader\core\functions.pyx because it changed.
  Compiling nautilus_trader\core\message.pyx because it changed.
  Compiling nautilus_trader\core\uuid.pyx because it changed.
  Compiling nautilus_trader\data\aggregation.pyx because it changed.
  Compiling nautilus_trader\data\base.pyx because it changed.
  Compiling nautilus_trader\data\cache.pyx because it changed.
  Compiling nautilus_trader\data\client.pyx because it changed.
  Compiling nautilus_trader\data\database.pyx because it changed.
  Compiling nautilus_trader\data\engine.pyx because it changed.
  Compiling nautilus_trader\data\messages.pyx because it changed.
  Compiling nautilus_trader\data\wrangling.pyx because it changed.
  Compiling nautilus_trader\execution\base.pyx because it changed.
  Compiling nautilus_trader\execution\cache.pyx because it changed.
  Compiling nautilus_trader\execution\client.pyx because it changed.
  Compiling nautilus_trader\execution\database.pyx because it changed.
  Compiling nautilus_trader\execution\engine.pyx because it changed.
  Compiling nautilus_trader\execution\messages.pyx because it changed.
  Compiling nautilus_trader\indicators\atr.pyx because it changed.
  Compiling nautilus_trader\indicators\bid_ask_min_max.pyx because it changed.
  Compiling nautilus_trader\indicators\bollinger_bands.pyx because it changed.
  Compiling nautilus_trader\indicators\donchian_channel.pyx because it changed.
  Compiling nautilus_trader\indicators\efficiency_ratio.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_candlesticks.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enum.pyx because it changed.
  Compiling nautilus_trader\indicators\hilbert_period.pyx because it changed.
  Compiling nautilus_trader\indicators\hilbert_snr.pyx because it changed.
  Compiling nautilus_trader\indicators\hilbert_transform.pyx because it changed.
  Compiling nautilus_trader\indicators\keltner_channel.pyx because it changed.
  Compiling nautilus_trader\indicators\keltner_position.pyx because it changed.
  Compiling nautilus_trader\indicators\macd.pyx because it changed.
  Compiling nautilus_trader\indicators\obv.pyx because it changed.
  Compiling nautilus_trader\indicators\pressure.pyx because it changed.
  Compiling nautilus_trader\indicators\roc.pyx because it changed.
  Compiling nautilus_trader\indicators\rsi.pyx because it changed.
  Compiling nautilus_trader\indicators\spread_analyzer.pyx because it changed.
  Compiling nautilus_trader\indicators\stochastics.pyx because it changed.
  Compiling nautilus_trader\indicators\swings.pyx because it changed.
  Compiling nautilus_trader\indicators\volatility_ratio.pyx because it changed.
  Compiling nautilus_trader\indicators\vwap.pyx because it changed.
  Compiling nautilus_trader\indicators\average\ama.pyx because it changed.
  Compiling nautilus_trader\indicators\average\ema.pyx because it changed.
  Compiling nautilus_trader\indicators\average\hma.pyx because it changed.
  Compiling nautilus_trader\indicators\average\ma_factory.pyx because it changed.
  Compiling nautilus_trader\indicators\average\moving_average.pyx because it changed.
  Compiling nautilus_trader\indicators\average\sma.pyx because it changed.
  Compiling nautilus_trader\indicators\average\wma.pyx because it changed.
  Compiling nautilus_trader\indicators\base\indicator.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_body.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_direction.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_size.pyx because it changed.
  Compiling nautilus_trader\indicators\fuzzy_enums\candle_wick.pyx because it changed.
  Compiling nautilus_trader\live\data_client.pyx because it changed.
  Compiling nautilus_trader\live\data_engine.pyx because it changed.
  Compiling nautilus_trader\live\execution_client.pyx because it changed.
  Compiling nautilus_trader\live\execution_engine.pyx because it changed.
  Compiling nautilus_trader\live\node_builder.pyx because it changed.
  Compiling nautilus_trader\live\risk_engine.pyx because it changed.
  Compiling nautilus_trader\model\bar.pyx because it changed.
  Compiling nautilus_trader\model\commands.pyx because it changed.
  Compiling nautilus_trader\model\currencies.pyx because it changed.
  Compiling nautilus_trader\model\currency.pyx because it changed.
  Compiling nautilus_trader\model\data.pyx because it changed.
  Compiling nautilus_trader\model\enums.pyx because it changed.
  Compiling nautilus_trader\model\events.pyx because it changed.
  Compiling nautilus_trader\model\identifiers.pyx because it changed.
  Compiling nautilus_trader\model\instrument.pyx because it changed.
  Compiling nautilus_trader\model\objects.pyx because it changed.
  Compiling nautilus_trader\model\position.pyx because it changed.DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  2/155] Cythonizing nautilus_trader\adapters\betfair\data.pyx
  [ 24/155] Cythonizing nautilus_trader\backtest\execution.pyx
  [ 54/155] Cythonizing nautilus_trader\data\database.pyx
  [ 56/155] Cythonizing nautilus_trader\data\messages.pyx
  [ 60/155] Cythonizing nautilus_trader\execution\client.pyx
  [101/155] Cythonizing nautilus_trader\live\execution_engine.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  7/155] Cythonizing nautilus_trader\adapters\ccxt\execution.pyx
  [ 32/155] Cythonizing nautilus_trader\common\component.pyx
  [ 55/155] Cythonizing nautilus_trader\data\engine.pyx
  [102/155] Cythonizing nautilus_trader\live\node_builder.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [ 11/155] Cythonizing nautilus_trader\adapters\ib\execution.pyx
  [ 14/155] Cythonizing nautilus_trader\adapters\oanda\execution.pyx
  [ 15/155] Cythonizing nautilus_trader\adapters\oanda\factories.pyx
  [ 23/155] Cythonizing nautilus_trader\backtest\exchange.pyx
  [ 63/155] Cythonizing nautilus_trader\execution\messages.pyx
  [ 65/155] Cythonizing nautilus_trader\indicators\average\ama.pyx
  [ 72/155] Cythonizing nautilus_trader\indicators\base\indicator.pyx
  [ 75/155] Cythonizing nautilus_trader\indicators\donchian_channel.pyx
  [ 80/155] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_direction.pyx
  [ 85/155] Cythonizing nautilus_trader\indicators\hilbert_transform.pyx
  [ 91/155] Cythonizing nautilus_trader\indicators\roc.pyx
  [ 96/155] Cythonizing nautilus_trader\indicators\volatility_ratio.pyx
  [105/155] Cythonizing nautilus_trader\model\c_enums\aggressor_side.pyx
  [109/155] Cythonizing nautilus_trader\model\c_enums\currency_type.pyx
  [114/155] Cythonizing nautilus_trader\model\c_enums\oms_type.pyx
  [119/155] Cythonizing nautilus_trader\model\c_enums\orderbook_level.pyx
  [122/155] Cythonizing nautilus_trader\model\c_enums\time_in_force.pyx
  [128/155] Cythonizing nautilus_trader\model\enums.pyx
  [129/155] Cythonizing nautilus_trader\model\events.pyx
  [152/155] Cythonizing nautilus_trader\trading\filters.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  6/155] Cythonizing nautilus_trader\adapters\ccxt\data.pyx
  [ 27/155] Cythonizing nautilus_trader\backtest\modules.pyx
  [ 50/155] Cythonizing nautilus_trader\data\aggregation.pyx
  [ 71/155] Cythonizing nautilus_trader\indicators\average\wma.pyx
  [ 82/155] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_wick.pyx
  [ 86/155] Cythonizing nautilus_trader\indicators\keltner_channel.pyx
  [ 92/155] Cythonizing nautilus_trader\indicators\rsi.pyx
  [ 99/155] Cythonizing nautilus_trader\live\data_engine.pyx
  [143/155] Cythonizing nautilus_trader\model\position.pyx
  [151/155] Cythonizing nautilus_trader\trading\calculators.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  1/155] Cythonizing examples\strategies\ema_cross_cython.pyx
  [ 20/155] Cythonizing nautilus_trader\backtest\data_container.pyx
  [ 38/155] Cythonizing nautilus_trader\common\queue.pyx
  [ 40/155] Cythonizing nautilus_trader\common\timer.pyx
  [ 48/155] Cythonizing nautilus_trader\core\message.pyx
  [ 57/155] Cythonizing nautilus_trader\data\wrangling.pyx
  [ 68/155] Cythonizing nautilus_trader\indicators\average\ma_factory.pyx
  [ 70/155] Cythonizing nautilus_trader\indicators\average\sma.pyx
  [ 78/155] Cythonizing nautilus_trader\indicators\fuzzy_enum.pyx
  [ 79/155] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_body.pyx
  [ 83/155] Cythonizing nautilus_trader\indicators\hilbert_period.pyx
  [ 88/155] Cythonizing nautilus_trader\indicators\macd.pyx
  [100/155] Cythonizing nautilus_trader\live\execution_client.pyx
  [140/155] Cythonizing nautilus_trader\model\orderbook\ladder.pyx
  [150/155] Cythonizing nautilus_trader\trading\account.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [ 12/155] Cythonizing nautilus_trader\adapters\ib\providers.pyx
  [ 17/155] Cythonizing nautilus_trader\analysis\performance.pyx
  [ 36/155] Cythonizing nautilus_trader\common\logging.pyx
  [ 61/155] Cythonizing nautilus_trader\execution\database.pyx
  [103/155] Cythonizing nautilus_trader\live\risk_engine.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  3/155] Cythonizing nautilus_trader\adapters\betfair\execution.pyx
  [ 21/155] Cythonizing nautilus_trader\backtest\data_producer.pyx
  [ 41/155] Cythonizing nautilus_trader\common\uuid.pyx
  [ 42/155] Cythonizing nautilus_trader\core\cache.pyx
  [ 44/155] Cythonizing nautilus_trader\core\correctness.pyx
  [ 52/155] Cythonizing nautilus_trader\data\cache.pyx
  [ 67/155] Cythonizing nautilus_trader\indicators\average\hma.pyx
  [ 76/155] Cythonizing nautilus_trader\indicators\efficiency_ratio.pyx
  [ 81/155] Cythonizing nautilus_trader\indicators\fuzzy_enums\candle_size.pyx
  [ 84/155] Cythonizing nautilus_trader\indicators\hilbert_snr.pyx
  [ 90/155] Cythonizing nautilus_trader\indicators\pressure.pyx
  [ 95/155] Cythonizing nautilus_trader\indicators\swings.pyx
  [106/155] Cythonizing nautilus_trader\model\c_enums\asset_class.pyx
  [108/155] Cythonizing nautilus_trader\model\c_enums\bar_aggregation.pyx
  [113/155] Cythonizing nautilus_trader\model\c_enums\liquidity_side.pyx
  [118/155] Cythonizing nautilus_trader\model\c_enums\orderbook_delta.pyx
  [125/155] Cythonizing nautilus_trader\model\currencies.pyx
  [130/155] Cythonizing nautilus_trader\model\identifiers.pyx
  [135/155] Cythonizing nautilus_trader\model\order\limit.pyx
  [142/155] Cythonizing nautilus_trader\model\orderbook\order.pyx
  [144/155] Cythonizing nautilus_trader\model\tick.pyx
  [149/155] Cythonizing nautilus_trader\serialization\serializers.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  8/155] Cythonizing nautilus_trader\adapters\ccxt\factories.pyx
  [ 26/155] Cythonizing nautilus_trader\backtest\models.pyx
  [ 28/155] Cythonizing nautilus_trader\common\c_enums\component_state.pyx
  [ 30/155] Cythonizing nautilus_trader\common\cache.pyx
  [ 34/155] Cythonizing nautilus_trader\common\factories.pyx
  [ 58/155] Cythonizing nautilus_trader\execution\base.pyx
  [ 87/155] Cythonizing nautilus_trader\indicators\keltner_position.pyx
  [ 93/155] Cythonizing nautilus_trader\indicators\spread_analyzer.pyx
  [116/155] Cythonizing nautilus_trader\model\c_enums\order_state.pyx
  [126/155] Cythonizing nautilus_trader\model\currency.pyx
  [132/155] Cythonizing nautilus_trader\model\objects.pyx
  [136/155] Cythonizing nautilus_trader\model\order\market.pyx
  [146/155] Cythonizing nautilus_trader\risk\engine.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [ 10/155] Cythonizing nautilus_trader\adapters\ib\data.pyx
  [ 13/155] Cythonizing nautilus_trader\adapters\oanda\data.pyx
  [ 25/155] Cythonizing nautilus_trader\backtest\loaders.pyx
  [ 33/155] Cythonizing nautilus_trader\common\enums.pyx
  [ 35/155] Cythonizing nautilus_trader\common\generators.pyx
  [ 45/155] Cythonizing nautilus_trader\core\datetime.pyx
  [ 51/155] Cythonizing nautilus_trader\data\base.pyx
  [ 59/155] Cythonizing nautilus_trader\execution\cache.pyx
  [112/155] Cythonizing nautilus_trader\model\c_enums\instrument_status.pyx
  [123/155] Cythonizing nautilus_trader\model\c_enums\venue_status.pyx
  [131/155] Cythonizing nautilus_trader\model\instrument.pyx
  [141/155] Cythonizing nautilus_trader\model\orderbook\level.pyx
  [145/155] Cythonizing nautilus_trader\redis\execution.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  4/155] Cythonizing nautilus_trader\adapters\betfair\factory.pyx
  [ 22/155] Cythonizing nautilus_trader\backtest\engine.pyx
  [ 49/155] Cythonizing nautilus_trader\core\uuid.pyx
  [ 53/155] Cythonizing nautilus_trader\data\client.pyx
  [ 74/155] Cythonizing nautilus_trader\indicators\bollinger_bands.pyx
  [ 89/155] Cythonizing nautilus_trader\indicators\obv.pyx
  [ 94/155] Cythonizing nautilus_trader\indicators\stochastics.pyx
  [104/155] Cythonizing nautilus_trader\model\bar.pyx
  [111/155] Cythonizing nautilus_trader\model\c_enums\instrument_close_type.pyx
  [117/155] Cythonizing nautilus_trader\model\c_enums\order_type.pyx
  [121/155] Cythonizing nautilus_trader\model\c_enums\price_type.pyx
  [127/155] Cythonizing nautilus_trader\model\data.pyx
  [133/155] Cythonizing nautilus_trader\model\order\base.pyx
  [137/155] Cythonizing nautilus_trader\model\order\stop_limit.pyx
  [148/155] Cythonizing nautilus_trader\serialization\base.pyx
  [155/155] Cythonizing nautilus_trader\trading\trader.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  5/155] Cythonizing nautilus_trader\adapters\betfair\providers.pyx
  [ 19/155] Cythonizing nautilus_trader\backtest\data_client.pyx
  [ 37/155] Cythonizing nautilus_trader\common\providers.pyx
  [ 39/155] Cythonizing nautilus_trader\common\throttler.pyx
  [ 62/155] Cythonizing nautilus_trader\execution\engine.pyx
  [ 97/155] Cythonizing nautilus_trader\indicators\vwap.pyx
  [107/155] Cythonizing nautilus_trader\model\c_enums\asset_type.pyx
  [110/155] Cythonizing nautilus_trader\model\c_enums\depth_type.pyx
  [115/155] Cythonizing nautilus_trader\model\c_enums\order_side.pyx
  [120/155] Cythonizing nautilus_trader\model\c_enums\position_side.pyx
  [124/155] Cythonizing nautilus_trader\model\commands.pyx
  [134/155] Cythonizing nautilus_trader\model\order\bracket.pyx
  [138/155] Cythonizing nautilus_trader\model\order\stop_market.pyx
  [147/155] Cythonizing nautilus_trader\risk\sizing.pyx
  [154/155] Cythonizing nautilus_trader\trading\strategy.pyx
  DEBUG_MODE=False, PROFILING_MODE=False, ANNOTATION_MODE=False, INTERPRETER_32BIT_MODE=False
  [  9/155] Cythonizing nautilus_trader\adapters\ccxt\providers.pyx
  [ 16/155] Cythonizing nautilus_trader\adapters\oanda\providers.pyx
  [ 18/155] Cythonizing nautilus_trader\analysis\reports.pyx
  [ 29/155] Cythonizing nautilus_trader\common\c_enums\component_trigger.pyx
  [ 31/155] Cythonizing nautilus_trader\common\clock.pyx
  [ 43/155] Cythonizing nautilus_trader\core\constants.pyx
  [ 46/155] Cythonizing nautilus_trader\core\fsm.pyx
  [ 47/155] Cythonizing nautilus_trader\core\functions.pyx
  [ 64/155] Cythonizing nautilus_trader\indicators\atr.pyx
  [ 66/155] Cythonizing nautilus_trader\indicators\average\ema.pyx
  [ 69/155] Cythonizing nautilus_trader\indicators\average\moving_average.pyx
  [ 73/155] Cythonizing nautilus_trader\indicators\bid_ask_min_max.pyx
  [ 77/155] Cythonizing nautilus_trader\indicators\fuzzy_candlesticks.pyx
  [ 98/155] Cythonizing nautilus_trader\live\data_client.pyx
  [139/155] Cythonizing nautilus_trader\model\orderbook\book.pyx
  [153/155] Cythonizing nautilus_trader\trading\portfolio.pyx

  Compiling nautilus_trader\model\tick.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\aggressor_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\asset_class.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\asset_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\bar_aggregation.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\currency_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\depth_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\instrument_close_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\instrument_status.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\liquidity_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\oms_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\orderbook_delta.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\orderbook_level.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\order_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\order_state.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\order_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\position_side.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\price_type.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\time_in_force.pyx because it changed.
  Compiling nautilus_trader\model\c_enums\venue_status.pyx because it changed.
  Compiling nautilus_trader\model\order\base.pyx because it changed.
  Compiling nautilus_trader\model\order\bracket.pyx because it changed.
  Compiling nautilus_trader\model\order\limit.pyx because it changed.
  Compiling nautilus_trader\model\order\market.pyx because it changed.
  Compiling nautilus_trader\model\order\stop_limit.pyx because it changed.
  Compiling nautilus_trader\model\order\stop_market.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\book.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\ladder.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\level.pyx because it changed.
  Compiling nautilus_trader\model\orderbook\order.pyx because it changed.
  Compiling nautilus_trader\redis\execution.pyx because it changed.
  Compiling nautilus_trader\risk\engine.pyx because it changed.
  Compiling nautilus_trader\risk\sizing.pyx because it changed.
  Compiling nautilus_trader\serialization\base.pyx because it changed.
  Compiling nautilus_trader\serialization\serializers.pyx because it changed.
  Compiling nautilus_trader\trading\account.pyx because it changed.
  Compiling nautilus_trader\trading\calculators.pyx because it changed.
  Compiling nautilus_trader\trading\filters.pyx because it changed.
  Compiling nautilus_trader\trading\portfolio.pyx because it changed.
  Compiling nautilus_trader\trading\strategy.pyx because it changed.
  Compiling nautilus_trader\trading\trader.pyx because it changed.
  factories.c
  providers.c
  providers.c
  data.c
  execution.c
  data.c
  providers.c
  execution.c
  ema_cross_cython.c
  factory.c
  data.c
  build/optimized\nautilus_trader\adapters\ib\providers.c(3958): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\adapters\ccxt\providers.c(3949): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\adapters\ccxt\data.c(17960): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  execution.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ib\data.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ib\data.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\data.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\data.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ib\execution.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ib\execution.cp38-win_amd64.exp
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\providers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\providers.cp38-win_amd64.exp
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ib\providers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ib\providers.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\examples\strategies\ema_cross_cython.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\examples\strategies\ema_cross_cython.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\providers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\providers.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\data.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\data.cp38-win_amd64.exp
  Generating code
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\execution.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\execution.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\factories.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\ccxt\factories.cp38-win_amd64.exp
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\execution.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\execution.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\factory.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\betfair\factory.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  factories.c
  reports.c
  data_client.c
  execution.c
  data_producer.c
  data.c
  providers.c
  engine.c
  data_container.c
  performance.c
  exchange.c
  build/optimized\nautilus_trader\analysis\reports.c(8453): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\backtest\data_producer.c(8629): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\analysis\reports.c(8567): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of databuild/optimized\nautilus_trader\backtest\data_producer.c(8647): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data

  build/optimized\nautilus_trader\analysis\reports.c(8579): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\backtest\data_producer.c(9969): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of databuild/optimized\nautilus_trader\analysis\reports.c(8722): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data

  execution.c
  build/optimized\nautilus_trader\backtest\data_producer.c(9981): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\backtest\data_producer.c(10519): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\backtest\data_producer.c(11053): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data   Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\execution.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\execution.cp38-win_amd64.exp

  build/optimized\nautilus_trader\backtest\data_producer.c(11089): warning C4244: 'function': conversion from 'uint64_t' to 'double', possible loss of data
  Generating code
  build/optimized\nautilus_trader\backtest\data_producer.c(11237): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\backtest\data_producer.c(11350): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\backtest\data_producer.c(11463): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\analysis\performance.c(8373): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\providers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\providers.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\data_client.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\data_client.cp38-win_amd64.exp
  Finished generating code
  Generating code
  build/optimized\nautilus_trader\backtest\engine.c(17479): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\backtest\engine.c(17491): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data   Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\analysis\reports.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\analysis\reports.cp38-win_amd64.exp

  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\exchange.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\exchange.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\data_container.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\data_container.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\data_producer.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\data_producer.cp38-win_amd64.exp
  Generating code
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\factories.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\factories.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\execution.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\execution.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\analysis\performance.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\analysis\performance.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\data.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\adapters\oanda\data.cp38-win_amd64.exp
  Generating code
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\engine.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  loaders.c
  models.c
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\models.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\models.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\loaders.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\loaders.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  cache.c
  Finished generating code
  Finished generating code
  Finished generating code
  modules.c
  clock.c
  build/optimized\nautilus_trader\backtest\modules.c(11319): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\backtest\modules.c(12528): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\common\clock.c(6524): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\common\clock.c(7704): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\common\clock.c(7847): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  Finished generating code
  enums.c
  component.c
  logging.c
  factories.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\cache.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\cache.cp38-win_amd64.exp
  generators.c
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\clock.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\clock.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\modules.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\backtest\modules.cp38-win_amd64.exp
  Generating code
  Generating code
  providers.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\enums.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\enums.cp38-win_amd64.exp
  Generating code
  Finished generating code
  queue.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\providers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\providers.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\factories.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\factories.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\generators.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\generators.cp38-win_amd64.exp
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\component.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\component.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  throttler.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\logging.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\logging.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\queue.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\queue.cp38-win_amd64.exp
  Generating code
  timer.c
  uuid.c
  component_state.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\throttler.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\throttler.cp38-win_amd64.exp
  Generating code
  build/optimized\nautilus_trader\common\timer.c(5404): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\common\timer.c(9014): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of dataFinished generating code

  build/optimized\nautilus_trader\common\timer.c(9825): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of dataFinished generating code

  component_trigger.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\uuid.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\uuid.cp38-win_amd64.exp
  Finished generating code
  Generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\timer.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\timer.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\c_enums\component_state.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\c_enums\component_state.cp38-win_amd64.exp
  Generating code
  cache.c
  Finished generating code
  Finished generating code
  constants.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\c_enums\component_trigger.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\common\c_enums\component_trigger.cp38-win_amd64.exp
  Generating code
  correctness.c
  datetime.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\cache.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\cache.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  fsm.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\constants.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\constants.cp38-win_amd64.exp
  Generating code
  functions.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\datetime.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\datetime.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\fsm.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\fsm.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\correctness.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\correctness.cp38-win_amd64.exp
  uuid.c
  Generating code
  message.c
  build/optimized\nautilus_trader\core\functions.c(4003): error C2039: 'nd': is not a member of 'tagPyArrayObject'
  C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(727): note: see declaration of 'tagPyArrayObject'
  build/optimized\nautilus_trader\core\functions.c(4050): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\core\functions.c(4284): error C2039: 'nd': is not a member of 'tagPyArrayObject'
  C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(727): note: see declaration of 'tagPyArrayObject'
  build/optimized\nautilus_trader\core\functions.c(4331): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\core\functions.c(4726): error C2039: 'nd': is not a member of 'tagPyArrayObject'
  C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(727): note: see declaration of 'tagPyArrayObject'
  build/optimized\nautilus_trader\core\functions.c(4773): warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
  aggregation.c
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\uuid.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\uuid.cp38-win_amd64.exp
  Generating code
  base.c
  Finished generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\message.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\core\message.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\aggregation.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\aggregation.cp38-win_amd64.exp
  Generating code
  Finished generating code
  cache.c
  client.c
  build/optimized\nautilus_trader\data\cache.c(7791): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  messages.c
  build/optimized\nautilus_trader\data\cache.c(8232): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of datadatabase.c

  engine.c
  build/optimized\nautilus_trader\data\cache.c(8673): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\base.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\base.cp38-win_amd64.exp
  Generating code
  Finished generating code
  build/optimized\nautilus_trader\data\cache.c(11815): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  wrangling.c
  base.c
  build/optimized\nautilus_trader\data\cache.c(11985): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\data\cache.c(12155): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\database.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\database.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\client.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\client.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\messages.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\messages.cp38-win_amd64.exp
  Generating code
  Generating code
  cache.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\cache.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\cache.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\base.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\base.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\wrangling.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\wrangling.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\data\engine.cp38-win_amd64.exp
  build/optimized\nautilus_trader\execution\cache.c(10536): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of dataGenerating code
  client.c

  build/optimized\nautilus_trader\execution\cache.c(10782): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  database.c
  build/optimized\nautilus_trader\execution\cache.c(11028): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of dataFinished generating code

  build/optimized\nautilus_trader\execution\cache.c(11502): warning C4244: '=': conversion from 'int64_t' to 'double', possible loss of data
  engine.c
  build/optimized\nautilus_trader\execution\cache.c(28502): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  atr.c
  build/optimized\nautilus_trader\execution\cache.c(28767): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\execution\cache.c(29032): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of datamessages.c

  build/optimized\nautilus_trader\execution\cache.c(29786): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of dataFinished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\client.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\client.cp38-win_amd64.exp
  Generating code

     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\database.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\database.cp38-win_amd64.exp
  build/optimized\nautilus_trader\execution\cache.c(30051): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of dataGenerating code

  build/optimized\nautilus_trader\execution\cache.c(30316): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\atr.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\atr.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\engine.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\messages.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\messages.cp38-win_amd64.exp
  Generating code
  Finished generating code
  bid_ask_min_max.c
  bollinger_bands.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\cache.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\execution\cache.cp38-win_amd64.exp
  Generating code
  Finished generating code
  build/optimized\nautilus_trader\indicators\bid_ask_min_max.c(3258): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
  build/optimized\nautilus_trader\indicators\bid_ask_min_max.c(3273): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of dataFinished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\bollinger_bands.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\bollinger_bands.cp38-win_amd64.exp
  Generating code

  efficiency_ratio.c
  donchian_channel.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\bid_ask_min_max.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\bid_ask_min_max.cp38-win_amd64.exp
  Finished generating code
  Generating code
  Finished generating code
  fuzzy_candlesticks.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\efficiency_ratio.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\efficiency_ratio.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\donchian_channel.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\donchian_channel.cp38-win_amd64.exp
  Generating code
  Finished generating code
  fuzzy_enum.c
  Finished generating code
  hilbert_snr.c
  Finished generating code
  Finished generating code
  hilbert_period.c
  hilbert_transform.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enum.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enum.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_candlesticks.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_candlesticks.cp38-win_amd64.exp
  Generating code
  Finished generating code
  keltner_channel.c
  keltner_position.c
  Finished generating code
  macd.c
  obv.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\hilbert_snr.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\hilbert_snr.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\hilbert_transform.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\hilbert_transform.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\hilbert_period.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\hilbert_period.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\keltner_position.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\keltner_position.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\keltner_channel.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\keltner_channel.cp38-win_amd64.exp
  Generating code
  pressure.c
  roc.c
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\macd.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\macd.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\obv.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\obv.cp38-win_amd64.exp
  Generating code
  Finished generating code
  rsi.c
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\pressure.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\pressure.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\roc.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\roc.cp38-win_amd64.exp
  Generating code
  spread_analyzer.c
  Finished generating code
  Finished generating code
  Finished generating code
  stochastics.c
  swings.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\rsi.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\rsi.cp38-win_amd64.exp
  Generating code
  volatility_ratio.c
  Finished generating code
  Finished generating code
  vwap.c
  build/optimized\nautilus_trader\indicators\swings.c(3276): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\stochastics.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\stochastics.cp38-win_amd64.exp
  Finished generating code
  ama.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\spread_analyzer.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\spread_analyzer.cp38-win_amd64.exp
  Generating code
  Generating code
  ema.c
  build/optimized\nautilus_trader\indicators\vwap.c(3033): warning C4244: 'function': conversion from 'int64_t' to 'double', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\swings.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\swings.cp38-win_amd64.exp
  Generating code
  hma.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\volatility_ratio.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\volatility_ratio.cp38-win_amd64.exp
  Generating code
  moving_average.c
  ma_factory.c
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\vwap.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\vwap.cp38-win_amd64.exp
  Generating code
  Finished generating code
  sma.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\ama.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\ama.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\ema.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\ema.cp38-win_amd64.exp
  Generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\moving_average.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\moving_average.cp38-win_amd64.exp
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\hma.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\hma.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\ma_factory.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\ma_factory.cp38-win_amd64.exp
  Generating code
  Finished generating code
  wma.c
  indicator.c
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\sma.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\sma.cp38-win_amd64.exp
  candle_body.c
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\wma.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\average\wma.cp38-win_amd64.exp
  Finished generating code
  Generating code
  candle_direction.c
  Finished generating code
  Finished generating code
  candle_wick.c
  candle_size.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\base\indicator.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\base\indicator.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_body.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_body.cp38-win_amd64.exp
  Generating code
  data_client.c
  data_engine.c
  execution_engine.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_direction.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_direction.cp38-win_amd64.exp
  Generating code
  execution_client.c
  node_builder.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_wick.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_wick.cp38-win_amd64.exp
  build/optimized\nautilus_trader\live\execution_engine.c(10717): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of dataGenerating code
  Finished generating code

  Finished generating code
  risk_engine.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_size.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\indicators\fuzzy_enums\candle_size.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\execution_engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\execution_engine.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\data_engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\data_engine.cp38-win_amd64.exp
  Generating code
  Generating code
  bar.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\node_builder.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\node_builder.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  commands.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\data_client.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\data_client.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\risk_engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\risk_engine.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\execution_client.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\live\execution_client.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\bar.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\bar.cp38-win_amd64.exp
  Generating code
  currencies.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\commands.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\commands.cp38-win_amd64.exp
  Generating code
  currency.c
  Finished generating code
  data.c
  build/optimized\nautilus_trader\model\data.c(2571): warning C4244: '=': conversion from 'Py_hash_t' to 'int', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\currency.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\currency.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\currencies.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\currencies.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\data.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\data.cp38-win_amd64.exp
  Generating code
  enums.c
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\enums.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\enums.cp38-win_amd64.exp
  Generating code
  Finished generating code
  events.c
  identifiers.c
  instrument.c
  objects.c
  Finished generating code
  position.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\objects.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\objects.cp38-win_amd64.exp
  Generating code
  Finished generating code
  aggressor_side.c
  Finished generating code
  build/optimized\nautilus_trader\model\position.c(5017): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  tick.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\events.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\events.cp38-win_amd64.exp
  Generating code
  asset_class.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\instrument.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\instrument.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\position.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\position.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\identifiers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\identifiers.cp38-win_amd64.exp
  Generating code
  Finished generating code
  bar_aggregation.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\aggressor_side.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\aggressor_side.cp38-win_amd64.exp
  Generating code
  asset_type.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\tick.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\tick.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\asset_class.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\asset_class.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\bar_aggregation.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\bar_aggregation.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\asset_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\asset_type.cp38-win_amd64.exp
  Generating code
  currency_type.c
  depth_type.c
  Finished generating code
  Finished generating code
  instrument_close_type.c
  Finished generating code
  instrument_status.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\currency_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\currency_type.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\depth_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\depth_type.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\instrument_close_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\instrument_close_type.cp38-win_amd64.exp
  Generating code
  Generating code
  liquidity_side.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\instrument_status.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\instrument_status.cp38-win_amd64.exp
  Generating code
  orderbook_level.c
  oms_type.c
  orderbook_delta.c
  Finished generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\liquidity_side.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\liquidity_side.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\oms_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\oms_type.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\orderbook_level.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\orderbook_level.cp38-win_amd64.exp
  Generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\orderbook_delta.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\orderbook_delta.cp38-win_amd64.exp
  Generating code
  order_side.c
  Finished generating code
  order_state.c
  Finished generating code
  Finished generating code
  order_type.c
  position_side.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\order_side.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\order_side.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\order_state.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\order_state.cp38-win_amd64.exp
  Generating code
  Finished generating code
  price_type.c
  Finished generating code
  Finished generating code
  time_in_force.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\position_side.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\position_side.cp38-win_amd64.exp
  venue_status.c
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\order_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\order_type.cp38-win_amd64.exp
  Generating code
  base.c
  bracket.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\price_type.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\price_type.cp38-win_amd64.exp
  Generating code
  limit.c
  Finished generating code
  build/optimized\nautilus_trader\model\order\base.c(5311): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\time_in_force.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\time_in_force.cp38-win_amd64.exp
  Generating code
  market.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\venue_status.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\c_enums\venue_status.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\bracket.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\bracket.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\limit.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\limit.cp38-win_amd64.exp
  Generating code
  stop_limit.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\base.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\base.cp38-win_amd64.exp
  Generating code
  Finished generating code
  stop_market.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\market.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\market.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\stop_limit.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\stop_limit.cp38-win_amd64.exp
  Generating code
  book.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\stop_market.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\order\stop_market.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  ladder.c
  Finished generating code
  level.c
  Finished generating code
  order.c
  execution.c
  build/optimized\nautilus_trader\model\orderbook\ladder.c(4303): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of dataFinished generating code

  Finished generating code
  engine.c
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\book.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\book.cp38-win_amd64.exp
  Generating code
  sizing.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\order.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\order.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\ladder.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\ladder.cp38-win_amd64.exp
  base.c
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\level.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\model\orderbook\level.cp38-win_amd64.exp
  Generating code
  serializers.c
  Finished generating code
  account.c
  filters.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\risk\sizing.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\risk\sizing.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\risk\engine.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\risk\engine.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\serialization\base.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\serialization\base.cp38-win_amd64.exp
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\redis\execution.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\redis\execution.cp38-win_amd64.exp
  Generating code
  Generating code
  calculators.c
  Finished generating code
  build/optimized\nautilus_trader\trading\account.c(7782): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\serialization\serializers.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\serialization\serializers.cp38-win_amd64.exp
  build/optimized\nautilus_trader\trading\calculators.c(5443): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of dataGenerating code
  Finished generating code

     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\filters.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\filters.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\account.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\account.cp38-win_amd64.exp
  Generating code
  Finished generating code
  portfolio.c
  strategy.c
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\calculators.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\calculators.cp38-win_amd64.exp
  Generating code
  Finished generating code
  trader.c
  build/optimized\nautilus_trader\trading\strategy.c(25270): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of databuild/optimized\nautilus_trader\trading\trader.c(11704): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data

  build/optimized\nautilus_trader\trading\strategy.c(25982): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\trading\strategy.c(27752): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\trading\strategy.c(28609): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
  build/optimized\nautilus_trader\trading\strategy.c(29468): warning C4244: '=': conversion from 'Py_ssize_t' to 'int', possible loss of data
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\portfolio.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\portfolio.cp38-win_amd64.exp
  Generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\trader.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\trader.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  Finished generating code
     Creating library build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\strategy.cp38-win_amd64.lib and object build\temp.win-amd64-3.8\Release\build/optimized\nautilus_trader\trading\strategy.cp38-win_amd64.exp
  Generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Finished generating code
  Traceback (most recent call last):
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\_msvccompiler.py", line 412, in compile
      self.spawn(args)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\_msvccompiler.py", line 518, in spawn
      return super().spawn(cmd)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\ccompiler.py", line 910, in spawn
      spawn(cmd, dry_run=self.dry_run)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\spawn.py", line 38, in spawn
      _spawn_nt(cmd, search_path, dry_run=dry_run)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\spawn.py", line 80, in _spawn_nt
      raise DistutilsExecError(
  distutils.errors.DistutilsExecError: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29910\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "build.py", line 174, in <module>
      build({})
    File "build.py", line 144, in build
      cmd.run()
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run
      _build_ext.build_ext.run(self)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\command\build_ext.py", line 340, in run
      self.build_extensions()
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\Cython\Distutils\old_build_ext.py", line 195, in build_extensions
      _build_ext.build_ext.build_extensions(self)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\command\build_ext.py", line 447, in build_extensions
      self._build_extensions_parallel()
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\command\build_ext.py", line 469, in _build_extensions_parallel
      fut.result()
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\concurrent\futures\_base.py", line 432, in result
      return self.__get_result()
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\concurrent\futures\_base.py", line 388, in __get_result
      raise self._exception
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\concurrent\futures\thread.py", line 57, in run
      result = self.fn(*self.args, **self.kwargs)
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\command\build_ext.py", line 528, in build_extension
      objects = self.compiler.compile(sources,
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\distutils\_msvccompiler.py", line 414, in compile
      raise CompileError(msg)
  distutils.errors.CompileError: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29910\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
  Traceback (most recent call last):
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 280, in <module>
      main()
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 204, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\poetry\core\masonry\api.py", line 68, in build_wheel
      return unicode(WheelBuilder.make_in(poetry, Path(wheel_directory)))
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 72, in make_in
      wb.build()
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 99, in build
      self._build(zip_file)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 125, in _build
      self._run_build_script(self._package.build_script)
    File "C:\Users\lukas\AppData\Local\Temp\pip-build-env-tjkwb71o\overlay\Lib\site-packages\poetry\core\masonry\builders\wheel.py", line 175, in _run_build_script
      subprocess.check_call([self.executable.as_posix(), build_script])
    File "c:\users\lukas\anaconda3\envs\feature-labeling\lib\subprocess.py", line 364, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['c:/users/lukas/anaconda3/envs/feature-labeling/python.exe', 'build.py']' returned non-zero exit status 1.
  ----------------------------------------
  ERROR: Failed building wheel for nautilus-trader
Failed to build nautilus-trader
ERROR: Could not build wheels for nautilus-trader which use PEP 517 and cannot be installed directly
WARNING: Ignoring invalid distribution -atplotlib (c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages)
WARNING: Ignoring invalid distribution -atplotlib (c:\users\lukas\anaconda3\envs\feature-labeling\lib\site-packages)
cjdsellers commented 3 years ago

The above build error related to a Cython macro NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION

Regarding the compiler warning: #warning "Using deprecated NumPy API" https://stackoverflow.com/questions/52749662/using-deprecated-numpy-api From the Cython docs: "For the time being, it is just a warning that you can ignore."

Therefor to get a PEP-517 build working with pip install the above macro has been removed along with the now redundant INTERPRETER_32BIT_MODE env variable.

We'll tolerate the compiler warning until the next Cython release where it is meant to be fixed.

I'm closing this issue as Windows support is now largely completed.

Please open further specific issues as they come up though!