catalyst icon indicating copy to clipboard operation
catalyst copied to clipboard

CCXT integration documentation (or tutorial) request

Open jbheron opened this issue 7 years ago • 4 comments

Dear Catalyst Maintainers,

Before I tell you about my issue, let me describe my environment:

Environment

  • Operating System: *nix Mac
  • Python Version: python 3.6.1
  • Python Bitness: 64
  • How did you install Catalyst: I haven't yet. 😬
  • Python packages:
altgraph==0.10.2
bdist-mpkg==0.5.0
bonjour-py==0.3
decorator==4.1.2
elasticsearch==5.4.0
elasticsearch-dsl==5.3.0
enum34==1.1.6
envtpl==0.5.3
functools32==3.2.3.post2
ipython-genutils==0.2.0
Jinja2==2.9.6
jsonschema==2.6.0
jupyter-core==4.3.0
macholib==1.5.1
MarkupSafe==1.0
matplotlib==1.3.1
modulegraph==0.10.4
nbformat==4.3.0
numpy==1.8.0rc1
plotly==2.0.8
py2app==0.7.3
pyobjc-core==2.5.1
pyobjc-framework-Accounts==2.5.1
pyobjc-framework-AddressBook==2.5.1
pyobjc-framework-AppleScriptKit==2.5.1
pyobjc-framework-AppleScriptObjC==2.5.1
pyobjc-framework-Automator==2.5.1
pyobjc-framework-CFNetwork==2.5.1
pyobjc-framework-Cocoa==2.5.1
pyobjc-framework-Collaboration==2.5.1
pyobjc-framework-CoreData==2.5.1
pyobjc-framework-CoreLocation==2.5.1
pyobjc-framework-CoreText==2.5.1
pyobjc-framework-DictionaryServices==2.5.1
pyobjc-framework-EventKit==2.5.1
pyobjc-framework-ExceptionHandling==2.5.1
pyobjc-framework-FSEvents==2.5.1
pyobjc-framework-InputMethodKit==2.5.1
pyobjc-framework-InstallerPlugins==2.5.1
pyobjc-framework-InstantMessage==2.5.1
pyobjc-framework-LatentSemanticMapping==2.5.1
pyobjc-framework-LaunchServices==2.5.1
pyobjc-framework-Message==2.5.1
pyobjc-framework-OpenDirectory==2.5.1
pyobjc-framework-PreferencePanes==2.5.1
pyobjc-framework-PubSub==2.5.1
pyobjc-framework-QTKit==2.5.1
pyobjc-framework-Quartz==2.5.1
pyobjc-framework-ScreenSaver==2.5.1
pyobjc-framework-ScriptingBridge==2.5.1
pyobjc-framework-SearchKit==2.5.1
pyobjc-framework-ServiceManagement==2.5.1
pyobjc-framework-Social==2.5.1
pyobjc-framework-SyncServices==2.5.1
pyobjc-framework-SystemConfiguration==2.5.1
pyobjc-framework-WebKit==2.5.1
pyOpenSSL==0.13.1
pyparsing==2.0.1
python-dateutil==1.5
pytz==2013.7
PyYAML==3.12
requests==2.13.0
scipy==0.13.0b1
six==1.4.1
traitlets==4.3.2
urllib3==1.22
xattr==0.6.4
zope.interface==4.1.1

Now that you know a little about me, let me tell you about the issue I am having:

Description of Issue

Congrats on the ccxt integration, that seems like a wonderful step forward in terms of interoperability of Catalyst with a larger number of exchanges, particularly for live-trading. I read that note about the integration in the Release Notes, but would love to know a little more.

In that regard, this issue is perhaps a docs issue. Specifically, here are some examples of the type of help I would hope for this issue to address:

  • Examples of how to use ccxt with Catalyst

  • Limitations of using ccxt

  • Recommendations for using ccxt

  • Short guide/tut/video to using ccxt with a straightforward example (such as adding data from two exchanges with ccxt)

  • What did you expect to happen? Please see above

  • What happened instead? Just a mention of ccxt integration.

Here is how you can reproduce this issue on your machine:

Reproduction Steps

...

What steps have you taken to resolve this already?

googling? ...

Anything else?

...

Sincerely, $ whoami

jbheron avatar Jan 03 '18 23:01 jbheron

Great point! We like the level of activity of the CCXT project. We respect their development team. This is a decision which we hope will allow our platform to stay current with exchanges on the long run. In practice, CCXT lives in the background but I agree that there are considerations worth documenting. We'll be able to develop this documentation very shortly, probably next week.

fredfortier avatar Jan 04 '18 00:01 fredfortier

Wonderful! Well, as a technical writer (at Ripple), I'm happy to review the docs you prepare, and I really appreciate the quick response. Looking forward to a little better understanding of the integration (as I'm not a developer, more hack-n-slash key masher). :-)

jbheron avatar Jan 04 '18 00:01 jbheron

Oh nice! We'd certainly appreciate that! Let me get back to you in a few days.

In a nutshell, the Catalyst API is similar to the Quantopian Zipline API. We actually expanded upon their documentation. Placing orders, fetching data, etc is done with the Catalyst API which sometimes uses CCXT in the background. That said, in context of an algorithm, it is possible to access a CCXT exchange object directly: ccxt_exchange = context.exchanges['binance'].api. This is only useful for advanced use cases. In most cases the Catalyst API is sufficient and essential for seamless performance tracking.

fredfortier avatar Jan 04 '18 01:01 fredfortier

+1

goushijie avatar Mar 13 '19 12:03 goushijie