Git Product home page Git Product logo

cryptoprofitswitcher's Introduction

Screenshot

Crypto Profit Switcher is an extensible open-source .Net Core console application that helps you to always mine the most profitable coin on a pool or an algorithm on NiceHash.

Screenshot

Screenshot

Features

  • Profit switching: Between pool mined coins and NiceHash algorithms
  • GPUs + CPU: It supports mining with multiple GPUs (mainly AMD) and CPU.
  • Benchmarking: It helps you to find the expected hashrate.
  • Easy Configuration: Only one config file.
  • Performance: Resource friendly with 0%-CPU usage
  • Miners: TeamRedMiner, XmRig, Claymore's Dual Ethereum
  • Profit data: It supports a lot of profit providers e.g. CryptUnit, WhatToMine, NiceHash etc.
  • Manual mode: You can switch between automatic mode and manual mode

How to use?

  1. Download and extract the latest release of the app (Latest release)
  2. Edit the config.json to configure it.
  3. Start the app and profit.

How does it work?

  1. The app loads the configuration from the file config.json.
  2. It downloads the miners if they have not been downloaded already.
  3. It will benchmark all enabled algorithms that don't have a valid expected hashrate.
  4. It starts to mine the most profitable combination of device, algorithm and pool.

How to configure it?

All you need to do, is to edit the JSON file config.json.

Config

Property Valid Values Explanation
ProcessPriority Normal | AboveNormal | BelowNormal | High | RealTime Sets the process priority
ProfitSwitchStrategy MaximizeFiat | PreferLowDifficulty MaximizeFiat: Will select the miner pool combination that has the most profit in USD per day.
PreferLowDifficulty: It will multiplicate the profit in USD per day with the relative coin difficulty and maximize this new value. If the profit provider of a pool does not have data about the relative difficulty, it will use a default value of 1.
EnableCaching true | false Enable or disable caching of JSON Api calls
EnableLogging true | false Enable or disable logging to a file
EnableManualModeByDefault true | false Set if the manual mode is enabled by default
DisableBenchmarking true | false Set if benchmarking on start should be disabled.
DisableDownloadMiners true | false Set if downloading of miners on start should be disabled.
StartMinerMinimized true | false Set if the miner should start minimized
MinerStartDelay integer number Delay in seconds before miner start
DisplayUpdateInterval integer number Time in seconds between display update
ProfitCheckInterval integer number Time in seconds between profit checks
ProfitSwitchInterval integer number Time in seconds between profit switch checks
ProfitSwitchThreshold decimal number Threshold between current profit and highest profit before switching (e.g. 0 means switch immediately, 0.1 means switch when the most profitable is 10% percent more profitable than current)
Algorithms array of Algorithm objects See Algorithm

Algorithm

Property Valid Values Explanation
DisplayName string Self defined name of the algorithm
Enabled true | false Set if algorithm is enabled
DeviceConfigs array of DeviceConfig objects See Device Config
Pools array of Pool objects See Pool

Device Config

Property Valid Values Explanation
DeviceType CPU | AMD | NVIDIA Type of the device
DeviceId string Most likely the index of the GPU
Enabled true | false Set if device config is enabled
ExpectedHashrate decimal number Expected hash rate in H/s
PrepareScript Path or empty A script that will be executed before the miner starts
Miner TeamRedMiner | XmRig | Claymore Type of the miner
MinerPath Path Path to the executable of the miner
MinerArguments arguments Arguments that will be forwarded to the miner. These should include the algorithm but not information about the pool or devices.
MinerDeviceSpecificArguments arguments Arguments like eth_config or cn_config that are device specific.
MinerApiPort integer number Port of the miner api or use 0 for auto port selection.

Pool

Property Valid Values Explanation
UniqueName string Self defined unique name. Used for the UI and identification of the pool
Enabled true | false Set if pool is enabled
ProfitTimeframe Live | Day Sets the time frame of the profit data
ProfitProvider NiceHashApi | CryptunitApi | MoneroOceanApi | MineXmrApi | MinerRocksApi | HeroMinersApi | WhatToMineApi Sets the profit provider
ProfitProviderInfo string see Profit provider info
PreferFactor decimal number On the determination of the most profitable pool, the actual estimated profit will be multiplied by this.
PoolUrl string Pool url including the port number
PoolUser string Pool user, most likely a wallet address
PoolPassword string Pool password, most likely empty or x.

Profit provider info

This value gives the profit provider information for which coin or algorithm you want to get the profit data. This value differs between the profit providers:

Profit provider Profit provider info
NiceHashApi The API-ID of the algorithm (see the value of order in https://api2.nicehash.com/main/api/v2/mining/algorithms
CryptunitApi The ticker value of the coin (see the value of ticker in https://www.cryptunit.com/api/coins
MinerRocksApi The name of the subdomain for the coin e.g. for https://monero.miner.rocks/ it would be monero.
HeroMinersApi The name of the subdomain for the coin e.g. for https://monero.herominers.com/ it would be monero.
WhatToMineApi The key to the coin in https://whattomine.com/coins.json e.g. for Ethereum it would be Ethereum.
MoneroOceanApi Not needed -> defaults to XMR
MineXmrApi Not needed -> defaults to XMR
NimiqApi Not needed -> defaults to Nimiq

Default configuration

If you download the latest release, there will be a default configuration, that is optimized for this config:

  • CPU: AMD Ryzen 9 3900X
  • GPU: AMD Vega 64 + AMD Vega 56

How can I help?

You can help me to make the app better. I'm open for pull requests. It is pretty easy to add support for more miners or profit providers. I did not test the app on Linux, so that would be something that would be helpful to do.

If you really liked the app you can donate me crypto coins (e.g. Monero) to one of the wallet addresses in the default config file. You could also mine to a wallet address of mine, for example while benchmarking.

BTW: There are no fees from my side in this app :)

Credits

cryptoprofitswitcher's People

Contributors

cryptoprofitswitcher 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

Watchers

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

cryptoprofitswitcher's Issues

Expected hashrate

Would it be possible to get the live hashrate from the miner sw instead of a fixed value? i think that would make the profit switching more accurate.

Thanks!

Couldn't save to cache - more details

Couldn't save to cache: System.NullReferenceException: Object reference not set to an instance of an object.
at CryptonightProfitSwitcher.Helpers.GetJsonFromUrl(String url, Settings settings, DirectoryInfo appRootFolder, CancellationToken ct)

Italo Coin Support

Italo forked at block 55.000. Mining the coin with CryptoknightHeavy I do get rejected shares with SRBMiner. So the algorithm inside the coin folder should be something like CryptoknightItalo. Please add support.

Bittube not working

I keep getting invalid shares with Bittube, is everything ok for you guys?

Thanks

Error Logging

Could you add something that would log errors? Often I come back and the screen is black and must restart, or it crashes (including or not including the PC itself) and would be nice to be able to work out reasons.

Is there any possibility the page file could have issues switching coins so often?

Option to switch based on coin reward ignoring price

I'd love to basically ignore the btc or usd price and just base the switching on coin reward.
Something like comparing live with the weighted 24hr avg and selecting the coin with the greatest positive variance.

maybe something like this
decimal wavg24 coin reward = (coin.GetExpectedHashrate(settings) * (86400 / lastStats.pool.stats.diffs["wavg24h"])) * reward;

decimal live coin reward = (coin.GetExpectedHashrate(settings) * (86400 / lastStats.network.difficulty)) * reward;

[Help wanted] Better Linux support

In the linux version XmrStak folder is almost empty. I copy the files in the windows version and beside that I'm seeing this issue:

CURRENT STATUS: 
Couldn't get data from: http://127.0.0.1:4000/api.json
Error message: One or more errors occurred. (An error occurred while sending the request.)
Couldn't get current hashrate: One or more errors occurred. (An error occurred while sending the request.)
 Mining:     MoneroOcean at 0H/s Cooldown:   Ready to switch.
 Switching:  MaximizeFiat
 Watchdog:   1 consecutive overshot(s) out of 10 allowed.

 Will refresh automatically in 40 seconds.

I'm running ubuntu 18.04 LTS
Linux workstation 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Configurable profit switching

Would be useful to have configurable profit switching rules
i.e. to to be able to decide how important is exchange rate

I use MaximizeCoins strategy but dont want to mine coins which value went down significantly.

MoneroOcean

Hey mate, just checked out your software and it's reaaaally cool. One addition I would make, would be using this pool: https://moneroocean.stream

It profit-switches between many cryptonight-v7 coins and pays you in Monero.

new version, problem.

Hi, I try to install the new version but I have an error:

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.IO.FileSystem, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Abortado (core' generado)`

Linux Ubuntu 16.04
driver amd 18.10
kernel 4.15

The previous version works perfectly.
Thanks

ubuntu server

Congratulations, I've used the program for a couple of weeks and it's perfect. The program has been tested on linux Xubuntu 16.04x64. But I can not use it in linux server, is it possible to use it in linux server? :)

Thanks. :) ๐Ÿ‘

NVIDIA not supported?

Hi, I have one NVIDIA card together with my Vegas...

I added 3 config files for XmrStak:
nvidia_v7.txt
nvidia_lite.txt
nvidia_heavy.txt

Also changed the coin config file to use them but no luck...

Was this xmr-stak compiled without NVIDIA support?

Thanks and btw, GREAT WORK you did here!

Couldn't save to cache: Object reference not set to an instance of an object.

Been running fairly well for several days.. Sometimes it stops mining but I couldn't determine why.

Now I see this error every time it runs, it still runs but thought I would let you know.

Couldn't save to cache: Object reference not set to an instance of an object.

EDIT: Please let me know if you need any further details (OS, software versions, etc.)

run on linux?

any change to run this on linux? since powershell and dotnetcore are available in ubuntu, it could be usefull to dockerize this

Slows, Freezes, Dies....

Since latest 5.5.1 app freeze/stop on profit check coins in the begining of app boot...
I tried everything new windows 10 1709, 1803, 1809, drivers 18.6.1, huges pages, powershell admin/user, partitions, uefi, owners clear cache ..... everything ....but this fucking code keeps on freezing/stop before SRBMiner allowed to be launch....

FIX THIS PLEASE OR GIVE A SOLUTION OR CLUES!!!!!!!

Screenshot Mining Haven: "SRBMiner keep mining during cryptonightprofitswitcher.exe is having tea....i waited for 30 min...CPS still on the moon! "

capture d ecran 3

Logo design

I'm sorry sir, my github account was suspended, I will now open it up pr again.

logotype

Error running on linux

im on Linux Manjaro 64bit

here the log record

Unhandled exception. System.PlatformNotSupportedException: Operation is not supported on this platform.
   at System.ConsolePal.get_CursorVisible()
   at System.Console.get_CursorVisible()
   at CryptoProfitSwitcher.Program.WriteInfo(String text) in /home/user/CryptoProfitSwitcher-7.3.0/Program.cs:line 1040
   at CryptoProfitSwitcher.Program.InitConfig() in /home/user/CryptoProfitSwitcher-7.3.0/Program.cs:line 115
   at CryptoProfitSwitcher.Program.Main(String[] args) in /home/user/CryptoProfitSwitcher-7.3.0/Program.cs:line 47

MoneroV miner rocks

MoneroV miner rocks api request doesn't work anymore...

I suggest it to be removed from miner rocks api settings.

Thanks

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.