initial commit
This commit is contained in:
12
.idea/CoinTrader.iml
generated
Normal file
12
.idea/CoinTrader.iml
generated
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="projectConfiguration" value="Nosetests" />
|
||||
<option name="PROJECT_TEST_RUNNER" value="Nosetests" />
|
||||
</component>
|
||||
</module>
|
||||
4
.idea/misc.xml
generated
Normal file
4
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5.2 (C:\Users\mjjo\Anaconda3\python.exe)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/CoinTrader.iml" filepath="$PROJECT_DIR$/.idea/CoinTrader.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
354
.idea/workspace.xml
generated
Normal file
354
.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,354 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="34e0547d-48bb-4f25-8662-baac76f69578" name="Default" comment="" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="api_test.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/api_test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="100">
|
||||
<caret line="40" column="29" lean-forward="false" selection-start-line="40" selection-start-column="10" selection-end-line="40" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="e#438#448#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="main.py" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/main.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="190">
|
||||
<caret line="10" column="21" lean-forward="false" selection-start-line="10" selection-start-column="5" selection-end-line="10" selection-end-column="21" />
|
||||
<folding>
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="decoder.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/Anaconda3/Lib/json/decoder.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="394">
|
||||
<caret line="357" column="23" lean-forward="false" selection-start-line="357" selection-start-column="23" selection-end-line="357" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="datamgr.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/datamgr.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="209">
|
||||
<caret line="11" column="30" lean-forward="false" selection-start-line="11" selection-start-column="30" selection-end-line="11" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="xcoin_api_client.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/xcoin_api_client.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="366">
|
||||
<caret line="91" column="0" lean-forward="false" selection-start-line="91" selection-start-column="0" selection-end-line="91" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#115#125#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="sched.py" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/Anaconda3/Lib/sched.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="298">
|
||||
<caret line="74" column="8" lean-forward="false" selection-start-line="74" selection-start-column="8" selection-end-line="74" selection-end-column="8" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Python Script" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>usec_Time</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/datamgr.py" />
|
||||
<option value="$PROJECT_DIR$/api_test.py" />
|
||||
<option value="$PROJECT_DIR$/main.py" />
|
||||
<option value="$PROJECT_DIR$/xcoin_api_client.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="x" value="1" />
|
||||
<option name="width" value="1366" />
|
||||
<option name="height" value="775" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
<manualOrder />
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scratches" />
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="CoinTrader" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="CoinTrader" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.main">
|
||||
<configuration default="false" name="main" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="CoinTrader" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="CoinTrader" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Tox" factoryName="Tox">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="CoinTrader" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Doctests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="CoinTrader" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Nosetests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="CoinTrader" />
|
||||
<option name="_new_regexPattern" value="""" />
|
||||
<option name="_new_additionalArguments" value="""" />
|
||||
<option name="_new_target" value=""."" />
|
||||
<option name="_new_targetType" value=""PATH"" />
|
||||
<method />
|
||||
</configuration>
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="Python.main" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="Python.main" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false">
|
||||
<option name="remove_strategy" value="false" />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="34e0547d-48bb-4f25-8662-baac76f69578" name="Default" comment="" />
|
||||
<created>1514737524011</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1514737524011</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="1" y="0" width="1366" height="775" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24961714" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32899022" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32899022" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3995657" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<option name="time" value="3" />
|
||||
</breakpoint-manager>
|
||||
<watches-manager>
|
||||
<configuration name="PythonConfigurationType">
|
||||
<watch expression="result" />
|
||||
</configuration>
|
||||
</watches-manager>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$USER_HOME$/Anaconda3/Lib/sched.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="298">
|
||||
<caret line="74" column="8" lean-forward="false" selection-start-line="74" selection-start-column="8" selection-end-line="74" selection-end-column="8" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/datamgr.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="209">
|
||||
<caret line="11" column="30" lean-forward="false" selection-start-line="11" selection-start-column="30" selection-end-line="11" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/api_test.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="100">
|
||||
<caret line="40" column="29" lean-forward="false" selection-start-line="40" selection-start-column="10" selection-end-line="40" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="e#438#448#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/Anaconda3/Lib/json/decoder.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="394">
|
||||
<caret line="357" column="23" lean-forward="false" selection-start-line="357" selection-start-column="23" selection-end-line="357" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/xcoin_api_client.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="366">
|
||||
<caret line="91" column="0" lean-forward="false" selection-start-line="91" selection-start-column="0" selection-end-line="91" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#115#125#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/main.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="190">
|
||||
<caret line="10" column="21" lean-forward="false" selection-start-line="10" selection-start-column="5" selection-end-line="10" selection-end-column="21" />
|
||||
<folding>
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
67
api_test.py
Normal file
67
api_test.py
Normal file
@@ -0,0 +1,67 @@
|
||||
#! /usr/bin/env python
|
||||
# XCoin API-call sample script (for Python 3.X)
|
||||
#
|
||||
# @author btckorea
|
||||
# @date 2017-04-11
|
||||
#
|
||||
#
|
||||
# First, Build and install pycurl with the following commands::
|
||||
# (if necessary, become root)
|
||||
#
|
||||
# https://pypi.python.org/pypi/pycurl/7.43.0#downloads
|
||||
#
|
||||
# tar xvfz pycurl-7.43.0.tar.gz
|
||||
# cd pycurl-7.43.0
|
||||
# python setup.py --libcurl-dll=libcurl.so install
|
||||
# python setup.py --with-openssl install
|
||||
# python setup.py install
|
||||
|
||||
import sys
|
||||
from xcoin_api_client import *
|
||||
import pprint
|
||||
|
||||
|
||||
api_key = "api_connect_key"
|
||||
api_secret = "api_secret_key"
|
||||
|
||||
api = XCoinAPI(api_key, api_secret)
|
||||
|
||||
rgParams = {
|
||||
"order_currency": "xrp",
|
||||
"payment_currency": "KRW"
|
||||
};
|
||||
|
||||
|
||||
#
|
||||
# public api
|
||||
#
|
||||
# /public/ticker
|
||||
# /public/recent_ticker
|
||||
# /public/orderbook
|
||||
# /public/recent_transactions
|
||||
|
||||
result = api.xcoinApiCall("/public/ticker/" + rgParams["order_currency"], rgParams)
|
||||
print("status: " + result["status"])
|
||||
print("last: " + result["data"]["closing_price"])
|
||||
print("sell: " + result["data"]["sell_price"])
|
||||
print("buy: " + result["data"]["buy_price"])
|
||||
|
||||
|
||||
#
|
||||
# private api
|
||||
#
|
||||
# endpoint => parameters
|
||||
# /info/current
|
||||
# /info/account
|
||||
# /info/balance
|
||||
# /info/wallet_address
|
||||
|
||||
#result = api.xcoinApiCall("/info/account", rgParams);
|
||||
#print("status: " + result["status"]);
|
||||
#print("created: " + result["data"]["created"]);
|
||||
#print("account id: " + result["data"]["account_id"]);
|
||||
#print("trade fee: " + result["data"]["trade_fee"]);
|
||||
#print("balance: " + result["data"]["balance"]);
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
12
datamgr.py
Normal file
12
datamgr.py
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
class Tick:
|
||||
def __init__(self):
|
||||
self.time = None
|
||||
self.price = None
|
||||
|
||||
|
||||
class DataMgr:
|
||||
def __init__(self):
|
||||
self.tick_list = None
|
||||
|
||||
def insert(self, time, price, ask):
|
||||
26
main.py
Normal file
26
main.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from xcoin_api_client import *
|
||||
import sched
|
||||
import time
|
||||
|
||||
api_key = "api_connect_key"
|
||||
api_secret = "api_secret_key"
|
||||
api = XCoinAPI(api_key, api_secret)
|
||||
|
||||
rgParams = {
|
||||
"order_currency": "xrp",
|
||||
"payment_currency": "KRW"
|
||||
}
|
||||
|
||||
scheduler = sched.scheduler(time.time, time.sleep)
|
||||
timer_delay = 0.2
|
||||
|
||||
|
||||
def main(arg):
|
||||
result = api.xcoinApiCall("/public/recent_transactions/" + rgParams["order_currency"], rgParams)
|
||||
if result is not None:
|
||||
print("["+time.strftime("%H:%M:%S")+"]" + " status: " + result["status"] + " last: " + result["data"]["closing_price"])
|
||||
|
||||
scheduler.enter(timer_delay, 1, main, (arg, ))
|
||||
|
||||
scheduler.enter(timer_delay, 1, main, (scheduler, ))
|
||||
scheduler.run()
|
||||
92
xcoin_api_client.py
Normal file
92
xcoin_api_client.py
Normal file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
# XCoin API-call related functions
|
||||
#
|
||||
# @author btckorea
|
||||
# @date 2017-04-12
|
||||
#
|
||||
# Compatible with python3 version.
|
||||
|
||||
import sys
|
||||
import time
|
||||
import math
|
||||
import base64
|
||||
import hmac, hashlib
|
||||
import urllib.parse
|
||||
import pycurl
|
||||
import json
|
||||
|
||||
|
||||
class XCoinAPI:
|
||||
api_url = "https://api.bithumb.com"
|
||||
api_key = ""
|
||||
api_secret = ""
|
||||
|
||||
def __init__(self, api_key, api_secret):
|
||||
self.api_key = api_key
|
||||
self.api_secret = api_secret
|
||||
self.contents = bytearray()
|
||||
|
||||
def body_callback(self, buf):
|
||||
self.contents.extend(buf)
|
||||
|
||||
def microtime(self, get_as_float=False):
|
||||
if get_as_float:
|
||||
return time.time()
|
||||
else:
|
||||
return '%f %d' % math.modf(time.time())
|
||||
|
||||
def usec_time(self):
|
||||
mt = self.microtime(False)
|
||||
mt_array = mt.split(" ")[:2]
|
||||
return mt_array[1] + mt_array[0][2:5]
|
||||
|
||||
def xcoinApiCall(self, endpoint, rgParams):
|
||||
# 1. Api-Sign and Api-Nonce information generation.
|
||||
# 2. Request related information from the Bithumb API server.
|
||||
#
|
||||
# - nonce: it is an arbitrary number that may only be used once.
|
||||
# - api_sign: API signature information created in various combinations values.
|
||||
|
||||
endpoint_item_array = {
|
||||
"endpoint": endpoint
|
||||
}
|
||||
|
||||
self.contents = bytearray()
|
||||
uri_array = dict(endpoint_item_array, **rgParams) # Concatenate the two arrays.
|
||||
str_data = urllib.parse.urlencode(uri_array)
|
||||
|
||||
nonce = self.usec_time()
|
||||
|
||||
data = endpoint + chr(0) + str_data + chr(0) + nonce
|
||||
utf8_data = data.encode('utf-8')
|
||||
|
||||
key = self.api_secret
|
||||
utf8_key = key.encode('utf-8')
|
||||
|
||||
h = hmac.new(bytes(utf8_key), utf8_data, hashlib.sha512)
|
||||
hex_output = h.hexdigest()
|
||||
utf8_hex_output = hex_output.encode('utf-8')
|
||||
|
||||
api_sign = base64.b64encode(utf8_hex_output)
|
||||
utf8_api_sign = api_sign.decode('utf-8')
|
||||
|
||||
curl_handle = pycurl.Curl()
|
||||
curl_handle.setopt(pycurl.POST, 1)
|
||||
curl_handle.setopt(pycurl.POSTFIELDS, str_data)
|
||||
|
||||
url = self.api_url + endpoint
|
||||
curl_handle.setopt(curl_handle.URL, url)
|
||||
curl_handle.setopt(curl_handle.HTTPHEADER, ['Api-Key: ' + self.api_key, 'Api-Sign: ' + utf8_api_sign, 'Api-Nonce: ' + nonce])
|
||||
curl_handle.setopt(curl_handle.WRITEFUNCTION, self.body_callback)
|
||||
curl_handle.perform()
|
||||
|
||||
# response_code = curl_handle.getinfo(pycurl.RESPONSE_CODE); # Get http response status code.
|
||||
|
||||
curl_handle.close()
|
||||
|
||||
try:
|
||||
result = json.loads(self.contents.decode('utf-8'))
|
||||
except:
|
||||
result = None
|
||||
|
||||
return result
|
||||
Reference in New Issue
Block a user