GithubHelp home page GithubHelp logo

mehtadone / cryptogrambot Goto Github PK

View Code? Open in Web Editor NEW
105.0 31.0 41.0 1.94 MB

A simple telegram bot that sends your balance updates from coinigy, send trade notifications from Poloniex and Bittrex and creates you a trade export for your own spreadsheet magicary.

License: MIT License

C# 100.00%

cryptogrambot's Introduction

THIS PROJECT IS NO LONGER MAINTAINED - CryptoGramBot

A telegram bot that sends your balance updates from coinigy, send trade notifications from Poloniex and Bittrex and creates you a trade export for your own spreadsheet magicary.

Donations Welcome

  • BTC: 1LVtLb6Vo79nyPBp252GSJVDMPToGvjFN6
  • DASH: XoQepSjoTEriBV7bLo1bdTVjbdy1AJW11B
  • ETH: 0x20A660DB0Abb84f62c532E5881C90e0Ef0e29638
  • LTC: LYGuFsyHSYFpmEiW4SKPedt6KsvL2ZqeEW

Installation

  1. Get your Bot ID, you need to chat to the BotFather. See here and here

  2. Open a new chat to your bot and talk to him. Say hi. He won't respond just yet.

  3. If you would like to add commands, do this now. See Bot Commands below. Note they will only show on a new chat with the bot or by clearing history and clicking "/start"

  4. Open a chat to this bot. This should show you your chat id.

  5. Download the lastest version of the zip from here and unzip to a folder. Download CryptoGramBot.zip and not the source files if you want to run without building.

  6. Fill in your config in appsettings.json. Bot ID is WITHOUT Bot and choose whether you want enable each service (true or false). NOTE: Create a new API key at your exchange, do not use an existing API key.

  7. Give CryptoGramBot the correct execute permissions via chmod if on linux

  8. Start on command line with "dotnet CryptoGramBot.dll"

Bot Commands

To add bot commands so they pop up when you type /, you need to let the BotFather know of the commands. You will need to make sure the commands correspond with what you have enabled on the appsettings.json file as clicking "/total_coinigy" when you do not have coinigy enabled will not do anything.

  1. Open a chat to the BotFather again
  2. Type /mybots
  3. Click the bot you created for CryptoGramBag
  4. Click "Edit Bot"
  5. Click "Edit Commands"
  6. Paste a selection from the following below you want commands for:
trade_export - an excel export of all trades
profit - profit information for pair

list_coinigy_accounts - list coinigy account names
total_coinigy - total balance from all acounts

upload_bittrex_trades - upload bittrex order export
trex_balance - bittrex account summary

polo_balance - poloniex account summary
polo_reset_trades - reset trades database from poloniex

  1. Clear history on your telegram bot to pick up the commands

Upgrade

  • Stop your bot
  • Copy everything over in the new zip EXCEPT logs, database and appsettings.json
  • Check to see if there are any new properties in the new appsettings.json and add then to your existing one.
  • Start your bot

Usage

  • Type /help when the bot is running

Tips

This app needs to be run all the time to have the bot running. I might look at creating a windows service for this for windows users. For linux, there are a couple of options.

  • I use screen. Type "screen -S telegram" to create a new screen. Run the bot like above and CTRL-A-D to dettach from the screen. "screen -r telegram" to reattach. Screen cheatsheet
  • Another option is tmux. "tmux start session" then start the bot. Ctrl+b+d to dettach. tmux cheatsheet

Done

  • Use a combination of bittrex, poloniex and/or Coinigy
  • Coinigy 24 hour PnL with profit and loss in BTC and USD
  • Bittrex Trade notifications with % profit if a sell
  • Poloniex Trade notifications with % profit if a sell
  • Bittrex balance information
  • Bittrex wallet information and % change since bought.
  • Bittrex csv order export upload
  • Excel trade history export
  • Price drop notifications when a balance drops more than 30%. Used for bag management. Runs 4 times a day.
  • Dust notifications
  • Pair profit
  • Open order notifications
  • Deposit and withdrawal notification
  • Low BTC notifications
  • Reset polo trades through a command

Todo

  • Show deposits and withdrawals to show accurate profit and loss.
  • Profit calculations are wrong on a sell if we don't have the data in the database.

Support

Screenshots

Screenshot 1 Screenshot 1

cryptogrambot's People

Contributors

aateeque avatar dependabot[bot] avatar joemccann avatar mehtadone avatar tash649 avatar username77 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cryptogrambot's Issues

bittrex api restrictions

Please make sure bot obeys bittrex API call limits - no more than 1 API call per second.

Thanks!

Error in getting balances from bittrex: Object reference not set to an instance of an object.

Attached log file:

2017-12-30 00:58:18.356 +01:00 [Information] Send Message:
Could not process your command. Check your logs
2017-12-30 01:33:45.619 +01:00 [Information] Services
Coinigy: False
Bittrex: True
Binance: False
Poloniex: False
Bag Management: True
Dust Notifications: True
Low BTC Notifications: False
2017-12-30 01:33:45.681 +01:00 [Information] Created Coinigy Config
2017-12-30 01:33:45.683 +01:00 [Information] Created General Config
2017-12-30 01:33:45.684 +01:00 [Information] Created Telegram Config
2017-12-30 01:33:45.686 +01:00 [Information] Created bittrex Config
2017-12-30 01:33:45.687 +01:00 [Information] Created binance config
2017-12-30 01:33:45.689 +01:00 [Information] Created Poloniex config
2017-12-30 01:33:45.690 +01:00 [Information] Created Bag Management Config
2017-12-30 01:33:45.692 +01:00 [Information] Created dust notification Config
2017-12-30 01:33:45.692 +01:00 [Information] Created low btc Config
2017-12-30 01:33:52.949 +01:00 [Information] Send Message:
Welcome to CryptoGramBot. I am currently querying for your trade history. Type /help for commands.

2017-12-30 01:33:53.598 +01:00 [Error] Error in getting balances from bittrex: Object reference not set to an instance of an object.
2017-12-30 01:38:55.672 +01:00 [Error] Error in getting balances from bittrex: Object reference not set to an instance of an object.
2017-12-30 01:40:33.654 +01:00 [Error] Error received Request timed out

dotnet CryptoGramBot.dll does not exist

Not sure why cos I a noob, but command prompt says that dotnet CryptoGramBot.dll does not exist?

C:\Users\Administrator\Documents\CryptoGramBot-master (1)\CryptoGramBot-master>dotnet CryptoGramBot.dll
The application to execute does not exist: 'C:\Users\Administrator\Documents\CryptoGramBot-master (1)\CryptoGramBot-master\CryptoGramBot.dll'

C:\Users\Administrator\Documents\CryptoGramBot-master (1)\CryptoGramBot-master>pause
Press any key to continue . . .

Duplicate Trades coming from API throwing exceptions

[19:25:34 ERR] An exception occurred in the database while iterating the results of a query for context type 'CryptoGram
Bot.Data.CryptoGramBotDbContext'.
System.InvalidOperationException: Sequence contains more than one element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source) at lambda_method(Closure , QueryContext ) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass17_01.b__0(QueryCon
text qc)

more than 30 trades

Can we have option in config to set the bot when have more than 30 trades to send them all on chunks like 20 trades per chunk? I want to be able to recieve all trades even they are more than 30 in last minute.

Thanks!

Cannot calculate profit

/profit BTC-XXX returns the following:

[16:16:06 INF] Adding pnl for BTC-OMG to database
[16:16:06 INF] Send Message:
1/3/18 4:16 PM
Profit information for 0
Average buy price: 0
Total PnL: 0 1

Buy/SellNotifications not working on Poloniex

The bot will happily report hourly balances but i could not convince it to msg me on trades on poloniex.

Not sure what logs to provide, here is my config:

  "General": {
    "DatabaseLocation": "database\\cryptogrambot.sqlite"
  },
  "Coinigy": {
    "Enabled": "true",
    "SendHourlyUpdates": "false",
    "Key": "xxx",
    "Secret": "xxx",
    "Endpoint": "https://api.coinigy.com/api/v1/"
  },
  "Telegram": {
    "BotToken": "xxx",
    "ChatId": "xxx"
  },
  "Bittrex": {
    "Enabled": "false",
    "Key": "",
    "Secret": "",
    "SendHourlyUpdates": "false",
    "SellNotifications": "false",
    "BuyNotifications": "false"
  },
  "Poloniex": {
    "Enabled": "true",
    "Key": "xxx",
    "Secret": "xxx",
    "SendHourlyUpdates": "false",
    "SellNotifications": "true",
    "BuyNotifications": "true"
  },
  "BagManagement": {
    "Enabled": "false",
    "PercentageDrop": "30"
  },
  "DustNotification": {
    "Enabled": "true",
    "BtcAmount": "0.0005"
  }
}``` 

[Feature Request] Multiple account per exchange

It'd be nice to have the possibility to add multiple accounts per exchange, for example when you trade on Polo with both BTC and USDT you could have a single TG bot that handles all of your accounts. It could be specified, for example, as follows:

...
{
	"Poloniex": {
		"accounts": [{
				"Name": "Polo-BTC",
				"Enabled": "true",
				"Key": "INSERT HERE",
				"Secret": "INSERT HERE",
				"SendHourlyUpdates": "false",
				"DailyNotifications": "17:00",
				"SellNotifications": "true",
				"DepositNotification": "true",
				"WithdrawalNotification": "true",
				"BuyNotifications": "true"
			},
			{
				"Name": "Polo-USDT",
				"Enabled": "true",
				"Key": "INSERT HERE",
				"Secret": "INSERT HERE",
				"SendHourlyUpdates": "false",
				"DailyNotifications": "17:00",
				"SellNotifications": "true",
				"DepositNotification": "true",
				"WithdrawalNotification": "true",
				"BuyNotifications": "true"
			}
		]
	}
}
...

Keep up the good work, this is a very nice project!

Adding €

Maybe it´s possible for future updates to add € as currency? So by choosing USD or Euro in config your trades come by telegram according to it.

Thanks - great tool!

CryptoGramBot.dll not found?

I get an error: [PM2][ERROR] script not found : /var/opt/CryptoGramBot/CryptoGramBot.dll

When I look at the files list here to download, i can't see a CryptoGramBot.dll. How do I start this using pm2 now?

Crash on startup when running under PM2 on Windows 10

Narrowed it down to the following line:
Console.Title = me.Username;

This seems to be causing an exception when running under PM2 as there is no console window.
Can be caught and silently ignored to allow the app to run.

How to fix this error:

How to fix this error:

An error occurred when I used Bittrex commands

/trex_btc_balance - bittrex account summar

Please help me fix this!

2017-10-17 15:41:55.330 +07:00 [Error] Woops. System.Exception: Request failed: INVALID_MARKET
at BittrexSharp.Bittrex.d__13.MoveNext() in C:\projects\telecoinigy\BittrexSharp\Bittrex.cs:line 83
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at BittrexSharp.Bittrex.d__24.MoveNext() in C:\projects\telecoinigy\BittrexSharp\Bittrex.cs:line 246
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CryptoGramBot.Services.Exchanges.BittrexService.d__10.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Exchanges\BittrexService.cs:line 168
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CryptoGramBot.Services.Exchanges.BittrexService.d__5.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Exchanges\BittrexService.cs:line 56
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CryptoGramBot.EventBus.Handlers.Bittrex.BittrexBalanceCheckHandler.d__4.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\EventBus\Handlers\Bittrex\BittrexBalanceCheckHandler.cs:line 32
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Enexure.MicroBus.EventHandlerShim2.<Handle>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Enexure.MicroBus.PipelineRunBuilder.<RunTasks>d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Enexure.MicroBus.PipelineRunBuilder.<RunHandlers>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Enexure.MicroBus.PipelineRunBuilder.<>c__DisplayClass7_0.<<BuildNextHandler>b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Enexure.MicroBus.MicroBus.<RunPipelineAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at CryptoGramBot.Services.Telegram.TelegramMessageSendingService.<BittrexBalance>d__3.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Telegram\TelegramMessageSendingService.cs:line 29 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at CryptoGramBot.Services.Telegram.TelegramMessageRecieveService.<CheckMessage>d__12.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Telegram\TelegramMessageRecieveService.cs:line 121 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at CryptoGramBot.Services.Telegram.TelegramMessageRecieveService.<BotOnMessageReceivedAsync>d__10.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Telegram\TelegramMessageRecieveService.cs:line 83 2017-10-17 15:41:55.629 +07:00 [Information] Send Message: Could not process your command. Check your logs 2017-10-17 15:43:10.180 +07:00 [Information] 24 Hour pnl difference for bittrex 2017-10-17 15:43:11.953 +07:00 [Error] Woops. System.Exception: Request failed: INVALID_MARKET at BittrexSharp.Bittrex.<request>d__13.MoveNext() in C:\projects\telecoinigy\BittrexSharp\Bittrex.cs:line 83 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at BittrexSharp.Bittrex.<GetTicker>d__24.MoveNext() in C:\projects\telecoinigy\BittrexSharp\Bittrex.cs:line 246 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at CryptoGramBot.Services.Exchanges.BittrexService.<GetPrice>d__10.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Exchanges\BittrexService.cs:line 168 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at CryptoGramBot.Services.Exchanges.BittrexService.<GetBalance>d__5.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Exchanges\BittrexService.cs:line 56 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at CryptoGramBot.EventBus.Handlers.Bittrex.BittrexBalanceCheckHandler.<Handle>d__4.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\EventBus\Handlers\Bittrex\BittrexBalanceCheckHandler.cs:line 32 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Enexure.MicroBus.EventHandlerShim2.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Enexure.MicroBus.PipelineRunBuilder.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Enexure.MicroBus.PipelineRunBuilder.d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Enexure.MicroBus.PipelineRunBuilder.<>c__DisplayClass7_0.<b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Enexure.MicroBus.MicroBus.d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CryptoGramBot.Services.Telegram.TelegramMessageSendingService.d__3.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Telegram\TelegramMessageSendingService.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CryptoGramBot.Services.Telegram.TelegramMessageRecieveService.d__12.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Telegram\TelegramMessageRecieveService.cs:line 121
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CryptoGramBot.Services.Telegram.TelegramMessageRecieveService.d__10.MoveNext() in C:\projects\telecoinigy\CryptoGramBot\Services\Telegram\TelegramMessageRecieveService.cs:line 83
2017-10-17 15:43:12.243 +07:00 [Information] Send Message:
Could not process your command. Check your logs

Trade Ability

do you think about to the give bot trade abilitys? like: /trade_polo BTC_FLDC BTCAmount
ore Buy/Sell ability... /trade_polo BTC_FLDC BTCAMOUNT PERCENTAGE so the bot buy BTC_FLDC on poloniex and instant sell @ PERCENTAGE of average buy
like /trade_polo BTC_FLDC 0.5 3... so it buy for 0.5BTC at current price, and sell +3%

Poloniex USDT balance trouble

The current balance in USDT from Poloniex, does not come in daily messages. But with Bittrex has no problem. ver 0.192
image

TradingCurrency/24 log

Im change TradingCurrency to ETH coz i trade in ETH/alts and now bot shows no btc on acc, but 0.02 btc stiil on acc =)
I understand that he does not show, because there was no ETH/BTC traid, but anyway.

[Feature Request] Print the version at startup

Between Gunbot (and maintaining separate instances for the TradingView instance) and GunthyGUI, I'm finding that I need to update binaries on a pretty regular basis. It'd be a nice-to-have to have it print out its version number at start up so I can get a quick glance on whether or not I updated it correctly. (That, or implement an /about or /version command to the bot to let it announce its version.)

Thank you! I really enjoy having the notifications and profit margin calculation, great work!

Trade volume updates

I would like to get a message that shows the number of trades in the last hour, or any variable. This would allow a quick check on activity, and if something needs a reset or adjustment.

Weekly Summery

Hi,

it would be nice to have the possibility to get a weekly summery for our accounts.
Maybe you have time for this ! :)

Thanks mate

[Configuration] Disable "No Spam"

By default, if I have a lot of trades queued up I get:

There are more than 30 poloniex trades to send. Not going to send them to avoid spamming you

I actually want to receive them. How can I disable this? Is there a configuration option? @mehtadone

[Bug] system lag

after update the system lags.
need to stop dotnet service and restart bot

Feature Request] Use External Source for BTC Exchange rate, and introduce support for currencies other than USD

So this is a 2 part request really...

  1. Optionally use an external source for the BTC/USD price, for example xe.com, coindesk BPI, Blockchain.info, Localbitcoins or a different exchange. (Using the bot users own api access, which would also need some way for them to enter)
    Personally I would use either xe.com or localbitcoins as the source.

  2. Sources other than the exchanges have prices available in the users local currency, so this should be useable, along with their correct currency symbol in all messages sent by the bot.

eg:
Thu, 23 Nov 2017 20:03:21 GMT
New Bittrex order
Sell BTC-POWR
Total: 0.0512748 BTC
Rate: 0.00009721 BTC
Profit: 0.0014 BTC (£8.58)
Bought on: 23/11/2017 19:38
Percentage: 2.798%

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.