# Pingpong

This strategy can be used for pairs that move up and down between a predictable price range for longer periods. You set fixed prices at which Gunbot should buy and sell, Gunbot will buy or sell as soon as the exact target is hit or exceeded.

To refine this strategy, other indicators are available to be used as confirmation for both buying and selling. For example you could have Gunbot buy at a specific price only when RSI is 30 or lower.

This strategy can be also used to trade purely on signals from confirming indicators, by setting unrealistic buy and sell prices.

{% hint style="warning" %}
Gain protection is optional for this strategy.

Be aware that this can lead to sell orders below your break-even point. When you want to allow sell orders at loss, make sure to set a negative value for `GAIN.`
{% endhint %}

## Trading example

![](https://user-images.githubusercontent.com/2372008/47226031-c4df8f80-d3bf-11e8-9b8d-485d04365ac2.PNG)

*Example of how trading with this strategy can perform.* [*Details and settings*](https://www.tradingview.com/chart/BTCUSD/u0VqADZY-Pingpong-Gunbot-trading-strategy/)

## Strategy parameters

Following settings options are available for `pp` and can be set in the strategy configurator of the GUI or the strategies section of the config.js file.

These settings are global and apply to all pairs running this strategy. When you want a specific parameter to be different for one or more pairs, use an override at the pair level.

Using the `BUY_METHOD` and `SELL_METHOD` parameters you can combine different methods for buying and selling. This strategy page assumes both `BUY_METHOD` and `SELL_METHOD` are set to `pp`. Accepted values are all strategy names as listed [here](/wiki/trading-strategy-options/about-gunbot-strategies/trading-methods.md#available-buy-and-sell-methods).

## Buy settings

Buy settings are the primary trigger for buy orders. These parameters control the execution of buy orders when using `pp` as buy method.

### Buy enabled

{% tabs %}
{% tab title="Description" %}
Set this to false to prevent Gunbot from placing buy orders.
{% endtab %}

{% tab title="Values" %}
**Values:** true or false

**Default value:** true
{% endtab %}

{% tab title="Order types" %}

| Affects      | Does not affect |
| ------------ | --------------- |
| Strategy buy | Strategy sell   |
| DCA buy      | Stop limit      |
| RT buy       | Close           |
| RT buyback   | RT sell         |
| {% endtab %} |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `BUY_ENABLED`
{% endtab %}
{% endtabs %}

### PP Buy

{% tabs %}
{% tab title="Description" %}
This sets the exact target price for placing a buy order. A buy order will be placed as soon as this price is hit or an even better price is available.

For example: when trading a BTC-x pair with `PP_BUY` set to 0.00123456, a buy order will be placed in the first cycle where the ask price is 0.00123456 or lower.
{% endtab %}

{% tab title="Values" %}
**Values:** numerical – represents a price in base currency.

**Default value:** 0
{% endtab %}

{% tab title="Order types" %}

| Affects      | Does not affect |
| ------------ | --------------- |
| Strategy buy | Strategy sell   |
|              | Stop limit      |
|              | Close           |
|              | RT sell         |
|              | DCA buy         |
|              | RT buy          |
|              | RT buyback      |
| {% endtab %} |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `PP_BUY`
{% endtab %}
{% endtabs %}

### NBA

{% tabs %}
{% tab title="Description" %}
"Never Buy Above". Use this to only allow buy orders below the last sell rate.

This sets the minimum percentage difference between the last sell order and the next buy. The default setting of 0 disables this option.

When set to 1, Gunbot will only place a buy order when the strategy buy criteria meet and price is at least 1% below the last sell price.
{% endtab %}

{% tab title="Values" %}
**Values:** numerical, represents a percentage.

**Default value:** 0
{% endtab %}

{% tab title="Order types" %}

| Affects      | Does not affect |
| ------------ | --------------- |
| Strategy buy | Strategy sell   |
|              | Stop limit      |
|              | Close           |
|              | RT sell         |
|              | DCA buy         |
|              | RT buy          |
|              | RT buyback      |
| {% endtab %} |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `NBA`
{% endtab %}
{% endtabs %}

## Sell settings

Sell settings are the primary trigger for sell orders. These parameters control the execution of sell orders when using `pp` as sell method.

### Sell enabled

{% tabs %}
{% tab title="Description" %}
Set this to false to prevent Gunbot from placing sell orders.
{% endtab %}

{% tab title="Values" %}
**Values:** true or false

**Default value:** true
{% endtab %}

{% tab title="Order types" %}

| Affects       | Does not affect |
| ------------- | --------------- |
| Strategy sell | Strategy buy    |
| Stop limit    | RT buy          |
| RT sell       | RT buyback      |
|               | Close           |
|               | DCA buy         |
| {% endtab %}  |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `SELL_ENABLED`
{% endtab %}
{% endtabs %}

### PP Sell

{% tabs %}
{% tab title="Description" %}
This sets the exact target price for placing a sell order. A sell order will be placed as soon as this price is hit or an even better price is available.

For example: when trading a BTC-x pair with `PP_SELL` set to 0.00123456, a sell order will be placed in the first cycle where the bid price is 0.00123456 or higher.
{% endtab %}

{% tab title="Values" %}
**Values:** numerical – represents a price in base currency.

**Default value:** 0
{% endtab %}

{% tab title="Order types" %}

| Affects       | Does not affect |
| ------------- | --------------- |
| Strategy sell | Strategy buy    |
|               | Stop limit      |
|               | Close           |
|               | RT sell         |
|               | DCA buy         |
|               | RT buy          |
|               | RT buyback      |
| {% endtab %}  |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `PP_SELL`
{% endtab %}
{% endtabs %}

### Double Check Gain

{% tabs %}
{% tab title="Description" %}
Disable this to allow sell orders below the break-even point.
{% endtab %}

{% tab title="Values" %}
**Values:** true or false

**Default value:** true
{% endtab %}

{% tab title="Order types" %}

| Affects       | Does not affect |
| ------------- | --------------- |
| Strategy sell | Strategy buy    |
|               | RT buy          |
|               | RT buyback      |
|               | RT sell         |
|               | Close           |
|               | DCA buy         |
|               | Stop limit      |
|               |                 |
| {% endtab %}  |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `DOUBLE_CHECK_GAIN`
{% endtab %}
{% endtabs %}

### Gain

{% tabs %}
{% tab title="Description" %}
This sets the minimum target for selling when `DOUBLE_CHECK_GAIN` is enabled.
{% endtab %}

{% tab title="Values" %}
**Values:** numerical – represents a percentage.

**Default value:** 0.5
{% endtab %}

{% tab title="Order types" %}

| Affects       | Does not affect |
| ------------- | --------------- |
| Strategy sell | Strategy buy    |
|               | RT buy          |
|               | RT buyback      |
|               | RT sell         |
|               | Close           |
|               | DCA buy         |
|               | Stop limit      |
|               |                 |
| {% endtab %}  |                 |

{% tab title="Name" %}
Parameter name in `config.js`: `GAIN`
{% endtab %}
{% endtabs %}

## Indicator settings

As `pp` is purely price based, there are no indicators that directly influence trading with `pp`.

## TrailMe settings

Parameters to configure additional trailing for various types of orders. Trailing works just like it does for the TSSL strategy, the difference being the starting point of trailing.

Orders resulting from trailing are only placed when the main strategy criteria are met, and confirming indicators (if any) allow the order. All these conditions must occur in the same cycle.

{% content-ref url="/pages/-LdImDes90oTiTX1\_cN0" %}
[TrailMe](/wiki/trading-strategy-options/trailme.md)
{% endcontent-ref %}

## Balance settings

{% content-ref url="/pages/-LdImDeo7cuhK6swFdm8" %}
[Balance settings](/wiki/trading-strategy-options/balance-settings.md)
{% endcontent-ref %}

## Confirming indicator + advanced indicator settings

{% content-ref url="/pages/-LdImDepHj\_60UR6\_wOq" %}
[Confirming indicators](/wiki/trading-strategy-options/confirming-indicators.md)
{% endcontent-ref %}

## Dollar cost avg settings

{% content-ref url="/pages/-LdImDeq-khvOlP-iu-u" %}
[Dollar Cost Avg (DCA)](/wiki/trading-strategy-options/dollar-cost-avg-dca.md)
{% endcontent-ref %}

## Reversal trading settings

{% content-ref url="/pages/-LdImDer8NYjL6noX8I1" %}
[Reversal trading (RT)](/wiki/trading-strategy-options/reversal-trading-rt.md)
{% endcontent-ref %}

## Misc settings

{% content-ref url="/pages/-LdImDetHjnk2MHsgMk6" %}
[Misc settings](/wiki/trading-strategy-options/misc-settings.md)
{% endcontent-ref %}

## Placeholders

The following parameters in `config.js` have no function for this strategy and act as placeholder.

| Parameter             | Description  |
| --------------------- | ------------ |
| `ATRX`                | Placeholder. |
| `ATR_PERIOD`          | Placeholder. |
| `BUYLVL1`             | Placeholder. |
| `BUYLVL2`             | Placeholder. |
| `BUYLVL3`             | Placeholder. |
| `BUYLVL`              | Placeholder. |
| `BUY_LEVEL`           | Placeholder. |
| `BUY_RANGE`           | Placeholder. |
| `DISPLACEMENT`        | Placeholder. |
| `FAST_SMA`            | Placeholder. |
| `HIGH_BB`             | Placeholder. |
| `ICHIMOKU_PROTECTION` | Placeholder. |
| `KIJUN_CLOSE`         | Placeholder. |
| `KIJUN_PERIOD`        | Placeholder. |
| `KIJUN_STOP`          | Placeholder. |
| `KUMO_CLOSE`          | Placeholder. |
| `KUMO_SENTIMENTS`     | Placeholder. |
| `KUMO_STOP`           | Placeholder. |
| `LEVERAGE`            | Placeholder. |
| `LONG_LEVEL`          | Placeholder. |
| `LOW_BB`              | Placeholder. |
| `MACD_LONG`           | Placeholder. |
| `MACD_SHORT`          | Placeholder. |
| `MACD_SIGNAL`         | Placeholder. |
| `MAKER_FEES`          | Placeholder. |
| `MEAN_REVERSION`      | Placeholder. |
| `PRE_ORDER_GAP`       | Placeholder. |
| `PRE_ORDER`           | Placeholder. |
| `RENKO_ATR`           | Placeholder. |
| `RENKO_BRICK_SIZE`    | Placeholder. |
| `RENKO_PERIOD`        | Placeholder. |
| `ROE_CLOSE`           | Placeholder. |
| `ROE_LIMIT`           | Placeholder. |
| `ROE_TRAILING`        | Placeholder. |
| `ROE`                 | Placeholder. |
| `SELLLVL1`            | Placeholder. |
| `SELLLVL2`            | Placeholder. |
| `SELLLVL3`            | Placeholder. |
| `SELLLVL`             | Placeholder. |
| `SELL_RANGE`          | Placeholder. |
| `SENKOUSPAN_PERIOD`   | Placeholder. |
| `SHORT_LEVEL`         | Placeholder. |
| `SLOW_SMA`            | Placeholder. |
| `TAKE_BUY`            | Placeholder. |
| `TAKE_PROFIT`         | Placeholder. |
| `TBUY_RANGE`          | Placeholder. |
| `TENKAN_CLOSE`        | Placeholder. |
| `TENKAN_PERIOD`       | Placeholder. |
| `TENKAN_STOP`         | Placeholder. |
| `TP_PROFIT_ONLY`      | Placeholder. |
| `TP_RANGE`            | Placeholder. |
| `TSSL_TARGET_ONLY`    | Placeholder. |
| `USE_RENKO`           | Placeholder. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gunthy.gitbook.io/wiki/trading-strategy-options/regular-strategies-spot-trading/pingpong.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
