Ejemplo n.º 1
0
class PumpDumpCyriptopia:
    API = ()

    def __init__(self):
        # setup api
        KEY, SECRET = self.get_secret()
        self.API = Api(KEY, SECRET)

    def get_secret(self):
        return str(config.api_key), str(config.secret)

    def pumpDump(self,
                 SYMBOL,
                 percentageOfBtc=100,
                 profitPercentage=100,
                 buyingPercentage=60):
        # do before entering coin to save the API call during the pump
        BALANCE_BTC, ERROR = self.API.get_balance('BTC')
        if ERROR is not None:
            print ERROR
        PUMP_BALANCE = BALANCE_BTC["Available"] * (percentageOfBtc / 100)
        COIN_PRICE, ERROR = self.API.get_market(SYMBOL + "_BTC")
        if ERROR is not None:
            print ERROR

        ASK_PRICE = COIN_PRICE['AskPrice']

        COIN_SUMMARY, ERROR = self.API.get_market(SYMBOL + "_BTC")
        if ERROR is not None:
            print ERROR

        LAST_PRICE = COIN_SUMMARY['LastPrice']
        CLOSE_PRICE = COIN_SUMMARY['Close']

        ASK_BUY = ASK_PRICE + (buyingPercentage / 100 * ASK_PRICE)
        ASK_SELL = ASK_PRICE + (profitPercentage / 100 * ASK_PRICE)

        # calculates the number of PUMP_COIN(s) to buy, taking into
        # consideration Cryptopia's 0.20% fee.
        c_fee = 0.00201
        cryptoipa_fee = PUMP_BALANCE * c_fee
        NUM_COINS = float((PUMP_BALANCE - cryptoipa_fee)) / ASK_BUY

        if LAST_PRICE > CLOSE_PRICE + 0.20 * CLOSE_PRICE:
            print '\nYou joined too late or this was pre-pumped! \
                       Close Price : {:.8f} . Last Price : {:.8f}'.format(
                CLOSE_PRICE, LAST_PRICE)
            return

        BUY_PRICE = ASK_BUY * NUM_COINS
        SELL_PRICE = ASK_SELL * NUM_COINS
        PROFIT = SELL_PRICE - BUY_PRICE

        print '\n[+] Buy order placed for {:.8f} {} coins at {:.8f} BTC \
                  each for a total of {} BTC'.format(NUM_COINS, SYMBOL,
                                                     ASK_BUY, BUY_PRICE)

        # TRADE, ERROR = self.API.submit_trade(SYMBOL + '/BTC', 'Buy', ASK_BUY, NUM_COINS)
        if ERROR is not None:
            print ERROR

        print '\n[+] Placing sell order at {:.8f} (+{}%)...'.format(
            ASK_SELL, profitPercentage)

        COINS_OWNED, ERROR = self.API.get_balance(SYMBOL)
        if ERROR is not None:
            print ERROR

        COINS_OWNED = COINS_OWNED['Available']
        while COINS_OWNED == 0:
            time.sleep(0.1)
            COINS_OWNED, ERROR = self.API.get_balance(SYMBOL)
            if ERROR is not None:
                print ERROR
                break
            COINS_OWNED = COINS_OWNED['Available']

        TRADE, ERROR = self.API.submit_trade(SYMBOL + '/BTC', 'Sell', ASK_SELL,
                                             NUM_COINS)
        if ERROR is not None:
            print ERROR

        print '\n[+] Sell order placed of {:.8f} {} coins at {:.8f} BTC each for \
                  a total of {:.8f} BTC'.format(NUM_COINS, SYMBOL, ASK_SELL,
                                                SELL_PRICE)

        print '[*] PROFIT if sell order fills: {:.8f} BTC'.format(PROFIT)
Ejemplo n.º 2
0
def sigint_handler():
    """Handler for ctrl+c"""
    print('\n[!] CTRL+C pressed. Exiting...')
    sys.exit(0)


EXIT_CYCLE = False
while not EXIT_CYCLE:

    # setup api
    KEY, SECRET = get_secret("secrets.json")
    API = Api(KEY, SECRET)

    # do before entering coin to save the API call during the pump
    BALANCE_BTC, ERROR = API.get_balance('BTC')
    if ERROR is not None:
        print(ERROR)
        break
    AVAILABLE_BTC = BALANCE_BTC['Available']

    signal.signal(signal.SIGINT, sigint_handler)
    print('Crypto Crew Technologies Welcomes you to our Pump Trade Bot!\n')
    print('Buy and Sell orders will be instantly placed on Cryptopia at \
           a specified % above the ASK price.\n')

    TRAINING = input("   Live Mode (1) = Real orders will be placed.'\n\
                         Training Mode (2) = No real orders will be placed.\n\n\
                         Enter 1 for Live Mode or 2 for Training Mode - (1 or 2) ?: "
                     )
    ALLOW_ORDERS = False  # Set to True to enable limit trading...
    print '\n[!] CTRL+C pressed. Exiting...'
    sys.exit(0)


EXIT_CYCLE = False
while not EXIT_CYCLE:

    # setup api
    KEY, SECRET = get_secret("secrets.json")
    API = Api(KEY, SECRET)

    COIN = raw_input("Choisissez le coin à observer : \
           \nSoyez précis !\nEcrivez en majuscule (ex : WISH)\n")

    # do before entering coin to save the API call during the pump
    BALANCE, ERROR = API.get_balance(COIN)
    if ERROR is not None:
        print "L'erreur suivante a été retournée : \n" + ERROR
        AVAILABLE = 0

    # AVAILABLE = BALANCE['Available']

    signal.signal(signal.SIGINT, sigint_handler)

    ALLOW_ORDERS = True

    print 'Vous avez', AVAILABLE, COIN, 'disponible(s).'

    PAIRS, ERROR = API.get_tradepairs()

    print 'Choisissez votre paire :'
Ejemplo n.º 4
0
    return str(secrets_json['key']), str(secrets_json['secret'])

def sigint_handler():
    """Handler for ctrl+c"""
    print '\n[!] CTRL+C pressed. Exiting...'
    sys.exit(0)

EXIT_CYCLE = False
while not EXIT_CYCLE:
    # setup api
    KEY, SECRET = get_secret("secrets.json")
    API = Api(KEY, SECRET)

    # do before entering coin to save the API call during the pump
    BALANCE_BTC, ERROR = API.get_balance('BTC')
    if ERROR is not None:
        print ERROR
        break
    AVAILABLE_BTC = BALANCE_BTC['Available']

    # Set to True to enable limit trading...
    ALLOW_ORDERS = False


    signal.signal(signal.SIGINT, sigint_handler)
    print 'Crypto Crew Technologies Welcomes you to our Pump Trade Bot!'
    print '\nBuy and Sell orders will be instantly placed on Cryptopia at \
           a specified % above the ASK price.\n'

    TRAINING = raw_input("   Live Mode (1) = Real orders will be placed.'\n\
Ejemplo n.º 5
0
    config['CONF_FILE'] = os.path.join(os.path.dirname(__file__),'trading.conf')
    parser = configparser.ConfigParser(allow_no_value=True)
    # These avoid error if not exists in conf
    parser.set(configparser.DEFAULTSECT, 'public_key', None)
    parser.set(configparser.DEFAULTSECT, 'private_key', None)
    parser.read(config['CONF_FILE'])
    if not parser.has_section(exchange):
        parser.add_section(exchange)
        save = (input("Save? Y/N").lower() == 'y') or True # always save
        #if not config[exchange][0]:
        key0 = input("Insert PUBLIC API KEY for exchange "+exchange+" ")
        key1 = input("Insert PRIVATE API KEYfor exchange "+exchange+" ")
        parser.set(exchange,'public_key', key0)
        parser.set(exchange,'private_key', key1)
    if save:
        with open(config['CONF_FILE'], 'w+') as conf:
            parser.write(conf)
    config[exchange] = (parser.get(exchange,'public_key'),parser.get(exchange,'private_key'))
    return config

exchange = "cryptopia"
config = readConfig(exchange)
cryptopia = Api(*config[exchange])

#call a request to the api, like balance in BTC...
balance, error = cryptopia.get_balance('CREA')
if error:
    print ('ERROR: %s' % error)
else:
    print ('Request successful. My Balance: {}'.format(balance))
Ejemplo n.º 6
0
def main():

    ''' Program driver: Input your configuration below '''

    # Replace with your API key and API secret.
    # Do not host this file anywhere publicly
    # or your key/secret will be scraped by a bot.
    # API KEY and SECRET CAN BE FOUND AT https://www.cryptopia.co.nz/Security
    # Remember to check 'Enable API'
    # Remember to check 'Enable Withdrawal'
    # Remember to check 'AddressBook Withdraw Only'
    API_KEY = 'Your API key'
    API_SECRET = 'Your API secret'

    # Replace with your wallet address.
    # Make sure you add this wallet address to your withdraw address book in https://www.cryptopia.co.nz/Security
    WALLET_ADDRESS = 'Wallet Address'

    # Replace with coin you want to check balance of and sell to BTC.
    SELL_CURRENCY = 'LTC'

    # Symbol of currency you wish to withdraw from the exchange
    WITHDRAW_CURRENCY = 'BTC'

    # Sell balance threshold i.e. balance of SELL_CURRENCY must be above SELL_THRESHOLD to sell.
    SELL_THRESHOLD = .0005

    # Withdraw balance threshold i.e. balance of WITHDRAW_CURRENCY must be above WITHDRAW_THRESHOLD to withdraw.
    WITHDRAW_THRESHOLD = .0011

    # How often to execute the script? i.e. input of 5 will run the script every 5 seconds
    SECONDS_TO_SLEEP = 10

    # ----------------    DO change values ABOVE ---------------------------
    # ---------------- DON'T change values BELOW ----------------------

    # Initialize API with key and secret values
    api = Api(API_KEY, API_SECRET)

    # Balance check loop
    script_running = True
    market = SELL_CURRENCY + '/BTC'
    while script_running:
        print "\n--------------------------------\n"
        print 'Starting next cycle...'

        # Check if balances meet requirements to sell
        print "\n--------------------------------\n"
        print 'Preparing to check balance of ' + SELL_CURRENCY + ' you have deposited to the exchange...'
        balance, error = api.get_balance(SELL_CURRENCY)
        if error:
            print 'Error getting balance for ' + SELL_CURRENCY + '.'
            print 'Error message: ' + error + '.'
        else:
            print 'You have a balance of ' + str(balance['Available']) + ' ' + SELL_CURRENCY + '.'
            # Check if balance is above sell threshold
            if balance['Available'] > SELL_THRESHOLD:
                # Request SELL_CURRENCY/BTC market data
                url = 'https://www.cryptopia.co.nz/api/GetMarkets/BTC'
                response = requests.get(url).json()
                data = response['Data']

                # Find SELL_CURRENCY/BTC row
                for item in data:
                    if item['Label'] == market:
                        rate = item['AskPrice']
                        break

                # Check if minimum trading limit is met
                min_check = '{0:f}'.format(rate*balance['Available'])
                min_to_meet_limit = '{0:f}'.format((.0005*balance['Available'])/(rate*balance['Available']))
                print '\nPreparing to check if minimum trading limit is met...'
                if rate*balance['Available'] < .0005:
                    print 'Sorry, minimum trading limit is the equivalent of .0005 BTC.'
                    print 'You are currently attempting to trade the equivalent of ' + str(min_check) + ' BTC.'
                    print 'You would need to trade at least ' + str(min_to_meet_limit) + ' ' + SELL_CURRENCY + '.\n'
                else:
                    # Create sell order.
                    print 'Minimum trading limit met.'
                    print 'Creating sell order for ' + str(balance['Available']) + \
                        ' ' + SELL_CURRENCY + ' at market asking price of ' + \
                        str(rate) + ' BTC to 1 ' + SELL_CURRENCY + '.'
                    result, error = api.submit_trade(market, 'Sell', rate, balance['Available'])
                    if error:
                        print 'Error while attempting to create sell order.'
                        print 'Error message: ' + error + '.'
                    else:
                        print 'Sell order successful.'

        # Check if balances meet requirements to withdraw
        print "\n--------------------------------\n"
        print 'Preparing to check balance of ' + WITHDRAW_CURRENCY + ' you have deposited to the exchange...'
        balance, error = api.get_balance(WITHDRAW_CURRENCY)
        if error:
            print 'Error getting balance for ' + WITHDRAW_CURRENCY + '.'
            print 'Error message: ' + error + '.'
        else:
            print 'You have a balance of ' + str(balance['Available']) + ' ' + WITHDRAW_CURRENCY + '.'
            # Check if balance is above withdraw threshold
            if balance['Available'] > WITHDRAW_THRESHOLD:
                # Check if balance is above minimum withdraw limit
                if balance['Available'] < .0011:
                    print 'Sorry, minimum withdrawal limit is .0011 BTC.'
                    print 'You are currently attempting to withdraw ' + str(balance['Available']) + ' BTC.'
                else:
                    print 'Withdrawing ' + str(balance['Available']) + WITHDRAW_CURRENCY + \
                        ' to wallet address: ' + WALLET_ADDRESS + '.'
                    result, error = api.submit_withdraw(WITHDRAW_CURRENCY, WALLET_ADDRESS, balance['Available'])
                    if error:
                        print 'Error while attempting to withdraw to wallet.'
                        print 'Error message: ' + error + '.'
                    else:
                        print 'Withdraw order successful.'

        # Sleep for allotted time.
        print "\n--------------------------------\n"
        print "Cycle complete, sleeping for " + str(SECONDS_TO_SLEEP) + " seconds."
        time.sleep(SECONDS_TO_SLEEP)
    return str(secrets_json['key']), str(secrets_json['secret'])

def sigint_handler():
    """Handler for ctrl+c"""
    print '\n[!] CTRL+C pressed. Exiting...'
    sys.exit(0)

EXIT_CYCLE = False
while not EXIT_CYCLE:

    # setup api
    KEY, SECRET = get_secret("secrets.json")
    API = Api(KEY, SECRET)

    # do before entering coin to save the API call during the pump
    BALANCE_BTC, ERROR = API.get_balance('BTC')
    if ERROR is not None:
        print ERROR
        break
    AVAILABLE_BTC = BALANCE_BTC['Available']

    # Set to True to enable limit trading...
    ALLOW_ORDERS = False


    signal.signal(signal.SIGINT, sigint_handler)
    print 'Crypto Crew Technologies Welcomes you to our Pump Trade Bot!'
    print '\nBuy and Sell orders will be instantly placed on Cryptopia at \
           a specified % above the ASK price.\n'

    TRAINING = raw_input("   Live Mode (1) = Real orders will be placed.'\n\