[pshaiBot] Native Scalper

1 89 Views No Comments 2 weeks ago
  • This is an example bot using HaasScript’s new native orders!

    Hope you will find it educational.

    HaasScript Code
    EnableHighSpeedUpdates(true)
    HideOrderSettings()
    
    local tp = Input('1. Take-Profit %', 0.2)
    local sl = Input('2. Stop-Loss %', 0.1)
    local rsi_len = Input('3. RSI Length', 9)
    local rsi_os = Input('4. RSI Oversold', 30)
    local rsi_ob = Input('4. RSI Overbought', 70)
    
    local cp = CurrentPrice()
    local c = ClosePrices()
    local rsi = RSI(c, rsi_len)
    
    local bot_pos = GetPositionDirection()
    local tpid = Load('tpid', '')
    local slid = Load('slid', '')
    local target = Load('target', 0)
    local stop = Load('stop', 0)
    
    
    if tpid != '' and IsOrderFilled(tpid) then
        CancelOrder(slid)
        tpid = ''
        slid = ''
    end
    if slid != '' and IsOrderFilled(slid) then
        CancelOrder(tpid)
        tpid = ''
        slid = ''
    end
    
    if bot_pos == NoPosition and IsAnyOrderOpen() == false then
        if rsi < rsi_os then
            PlaceGoLongOrder(cp.bid, TradeAmount(), {note='LE', type=MarketOrderType})
            target = Round(AddPerc(cp.bid, tp), 0)
            stop = Round(SubPerc(cp.bid, sl), 0)
    
        elseif rsi > rsi_ob then
            PlaceGoShortOrder(cp.ask, TradeAmount(), {note='SE', type=MarketOrderType})
            target = Round(SubPerc(cp.ask, tp), 0)
            stop = Round(AddPerc(cp.ask, sl), 0)
        end
    else
        if IsAnyOrderOpen() == false then
            if bot_pos == PositionLong then
                tpid = PlaceExitLongOrder(target, GetPositionAmount(), {note='L-TP', type=TakeProfitLimitOrderType, timeout=999999, price2=target})
                slid = PlaceExitLongOrder(stop, GetPositionAmount(), {note='L-SL', type=StopLimitOrderType, timeout=999999, price2=stop})
            else
                tpid = PlaceExitShortOrder(target, GetPositionAmount(), {note='S-TP', type=TakeProfitLimitOrderType, timeout=999999, price2=target})
                slid = PlaceExitShortOrder(stop, GetPositionAmount(), {note='S-SL', type=StopLimitOrderType, timeout=999999, price2=stop})
            end
        end
    end 
    
    if tpid != '' and IsOrderOpen(tpid) then
        Plot(0, 'tp', OrderContainer(tpid).price, {id=tpid, c=Green})
    end
    
    if slid != '' and IsOrderOpen(slid) then
        Plot(0, 'sl', OrderContainer(slid).price, {id=slid, c=Red})
    end
    
    Save('tpid', tpid)
    Save('slid', slid)
    Save('target', target)
    Save('stop', stop)
Login or Register to Comment

Unlock your crypto trading potential

Create a free account and enjoy everything we have to offer.

Join for Free