POST
https://api.cryptohopper.com/v1/strategy
Creates a strategy from a list of indicators. When strategy_id is one of the user's strategies, that strategy is overwritten instead.
OAuth scope:
read manage About scopes
Each config item needs id, name, chartperiod, params, type, candle_pattern and keep_signal, and may also have description, necessary, min_buys, min_sells, signal_when, signal_when_value, candle_value and exclusive; any other key makes the config invalid. config may also be sent as a JSON string. image must be a URL that starts with http; otherwise a random default image is used.
Example request
curl -X POST "https://api.cryptohopper.com/v1/strategy" \
-H "access-token: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"RSI and SAR","description":"Buys on RSI oversold with a SAR trend filter","image":"https://example.com/strategy.jpg","config":[{"id":"121","name":"RSI with region crossovers (RSI)","type":"buy","params":{"candle_value":{"type":"select","name":"OHLCV Value","options":["open","close","high","low","volume"],"default":"close"},"period":{"type":"number","step":1,"min":1,"max":500,"name":"RSI Period","default":14},"oversold":{"type":"number","step":0.01,"min":0,"max":100,"name":"Oversold threshold","default":30},"overbought":{"type":"number","step":0.01,"min":0,"max":100,"name":"Overbought threshold","default":70},"region_type":{"type":"select","name":"Signal on region","options":["in","out"],"default":"in"}},"chartperiod":"900","candle_pattern":0,"necessary":1,"keep_signal":0}],"min_buys":1,"min_sells":0}'
const response = await fetch('https://api.cryptohopper.com/v1/strategy', {
method: 'POST',
headers: {
"access-token": "YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "RSI and SAR",
"description": "Buys on RSI oversold with a SAR trend filter",
"image": "https://example.com/strategy.jpg",
"config": [
{
"id": "121",
"name": "RSI with region crossovers (RSI)",
"type": "buy",
"params": {
"candle_value": {
"type": "select",
"name": "OHLCV Value",
"options": [
"open",
"close",
"high",
"low",
"volume"
],
"default": "close"
},
"period": {
"type": "number",
"step": 1,
"min": 1,
"max": 500,
"name": "RSI Period",
"default": 14
},
"oversold": {
"type": "number",
"step": 0.01,
"min": 0,
"max": 100,
"name": "Oversold threshold",
"default": 30
},
"overbought": {
"type": "number",
"step": 0.01,
"min": 0,
"max": 100,
"name": "Overbought threshold",
"default": 70
},
"region_type": {
"type": "select",
"name": "Signal on region",
"options": [
"in",
"out"
],
"default": "in"
}
},
"chartperiod": "900",
"candle_pattern": 0,
"necessary": 1,
"keep_signal": 0
}
],
"min_buys": 1,
"min_sells": 0
})
});
const data = await response.json();
import requests
response = requests.post(
"https://api.cryptohopper.com/v1/strategy",
headers={
"access-token": "YOUR_ACCESS_TOKEN"
},
json={
"name": "RSI and SAR",
"description": "Buys on RSI oversold with a SAR trend filter",
"image": "https://example.com/strategy.jpg",
"config": [
{
"id": "121",
"name": "RSI with region crossovers (RSI)",
"type": "buy",
"params": {
"candle_value": {
"type": "select",
"name": "OHLCV Value",
"options": [
"open",
"close",
"high",
"low",
"volume"
],
"default": "close"
},
"period": {
"type": "number",
"step": 1,
"min": 1,
"max": 500,
"name": "RSI Period",
"default": 14
},
"oversold": {
"type": "number",
"step": 0.01,
"min": 0,
"max": 100,
"name": "Oversold threshold",
"default": 30
},
"overbought": {
"type": "number",
"step": 0.01,
"min": 0,
"max": 100,
"name": "Overbought threshold",
"default": 70
},
"region_type": {
"type": "select",
"name": "Signal on region",
"options": [
"in",
"out"
],
"default": "in"
}
},
"chartperiod": "900",
"candle_pattern": 0,
"necessary": 1,
"keep_signal": 0
}
],
"min_buys": 1,
"min_sells": 0
},
)
data = response.json()
$ch = curl_init('https://api.cryptohopper.com/v1/strategy');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'access-token: YOUR_ACCESS_TOKEN',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'RSI and SAR',
'description' => 'Buys on RSI oversold with a SAR trend filter',
'image' => 'https://example.com/strategy.jpg',
'config' => [
[
'id' => '121',
'name' => 'RSI with region crossovers (RSI)',
'type' => 'buy',
'params' => [
'candle_value' => [
'type' => 'select',
'name' => 'OHLCV Value',
'options' => [
'open',
'close',
'high',
'low',
'volume',
],
'default' => 'close',
],
'period' => [
'type' => 'number',
'step' => 1,
'min' => 1,
'max' => 500,
'name' => 'RSI Period',
'default' => 14,
],
'oversold' => [
'type' => 'number',
'step' => 0.01,
'min' => 0,
'max' => 100,
'name' => 'Oversold threshold',
'default' => 30,
],
'overbought' => [
'type' => 'number',
'step' => 0.01,
'min' => 0,
'max' => 100,
'name' => 'Overbought threshold',
'default' => 70,
],
'region_type' => [
'type' => 'select',
'name' => 'Signal on region',
'options' => [
'in',
'out',
],
'default' => 'in',
],
],
'chartperiod' => '900',
'candle_pattern' => 0,
'necessary' => 1,
'keep_signal' => 0,
],
],
'min_buys' => 1,
'min_sells' => 0,
]),
]);
$data = json_decode(curl_exec($ch), true);
Parameters
Headers
| Name | Type | Required | Description |
|---|---|---|---|
access-token |
string | Required | The OAuth access token of the user. |
Response
{
"data": {
"strategy_id": 369001,
"message": "Strategy has been saved."
}
}