// true
}
[http://underscorejs.org/](http://underscorejs.org/)
```js
function main() {
var sum = _.reduce([1, 2, 3], function(memo, num){return memo + num}, 0)
Log(sum)
}
C++
bibliothèquehttps://nlohmann.github.io/json/
void main() {
json table = R"({"type": "table", "title": "Position Information", "cols": ["Column1", "Column2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
LogStatus("`" + table.dump() + "`");
LogStatus("Fist line message\n`" + table.dump() + "`\nThird line message");
json arr = R"([])"_json;
arr.push_back(table);
arr.push_back(table);
LogStatus("`" + arr.dump() + "`");
table = R"({
"type" : "table",
"title" : "Position Operation",
"cols" : ["Column1", "Column2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close position"}]
]
})"_json;
LogStatus("`" + table.dump() + "`", "\n`" + R"({"type": "button", "cmd": "coverAll", "name": "close position"})"_json.dump() + "`");
}
Parmi les paramètres des fonctions suivantes,Records[Close]
représente le prix de clôture dans les données de ligne k entrantes,Array()
représente un tableau, etArray(outInteger)
représente le retour d'un tableau de données entières.
Exemple de code d'appelCCI
indicateur:
function main() {
var records = exchange.GetRecords()
var cci = talib.CCI(records, 14)
Log(cci)
}
import talib
def main():
records = exchange.GetRecords()
# the parameter "14" can be default
cci = talib.CCI(records.High, records.Low, records.Close, 14)
Log(cci)
void main() {
auto records = exchange.GetRecords();
auto cci = talib.CCI(records, 14);
Log(cci);
}
Pattern Recognition
:
Indicateur | Définition |
---|---|
Le CDL2CROWS | Deux corbeaux |
CDL2CROWS ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
CDL3BLACKCROWS (en anglais seulement) | Trois corbeaux noirs |
CDL3BLACKCROWS ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
CDL3 à l'intérieur | Trois à l'intérieur vers le haut/vers le bas |
CDL3INSIDE ((Records[Open,High,Low,Close]) = Array ((outInteger) | |
CDL3LINESTRIKE | Une grève de trois lignes |
CDL3LINESTRIKE ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
CDL3À L'extérieur | Trois à l'extérieur vers le haut/vers le bas |
CDL3OUTSIDE ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
CDL3 étoile du sud | Trois étoiles dans le sud |
CDL3STARSINSOUTH ((Records [Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
CDL3SOLDIERS blancs | Trois soldats blancs qui avancent |
CDL3WHITESOLDIERS ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
C'est une chanson. | Un bébé abandonné |
CDLABANDONEDBABY ((Enregistrements [ouvrir, haute, basse, proche],Pénétration = 0,3) = Matrice ((extraintégrale) | |
Je ne peux pas faire ça. | Bloc préalable |
CDLADVANCEBLOCK ((Records[Open,High,Low,Close]) = Array ((outInteger) est un ensemble de nombres | |
Le CDLBELTHOLD | Maintien de la ceinture |
CDLBELTHOLD ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Le CDLBRAKAWAY est terminé. | Séparation |
CDLBREAKAWAY ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
C' est le CDLCLOOSING MARUBOZU | La fermeture de Marubozu |
CDLCLOSINGMARUBOZU ((Enregistrements [ouvrir, haute, basse, proche]) = Matrice ((extraintégrale) | |
C' est le CDLCONCEALBABYSWALL | Comment cacher une baby-swallow |
CDLCONCEALBABYSWALL ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
CDL contre-attaque | Contre-attaque |
CDLCOUNTERATTACK ((Enregistrements [Ouvert, haut, bas, fermé]) = Matrice ((extraintégrale) | |
C' est le CDDARKCLOUDCOVER | Couverture nuageuse |
CDLDARKCLOUDCOVER ((Records[Open,High,Low,Close],Pénétration = 0.5) = Array ((outInteger) | |
Le CDLDOJI | Le Doji |
CDLDOJI ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Le CDLDOJISTAR | Étoile de Doji |
CDLDOJISTAR ((Records[Open,High,Low,Close]) = Array ((outInteger) est un ensemble de nombres entiers. | |
Le CDDRAGONFLYDOJI est un jeu vidéo. | La libellule Doji |
CDLDRAGONFLYDOJI ((Enregistrements [ouvrir, haute, basse, proche]) = Array ((outInteger) | |
Le dépistage | Le schéma engloutissant |
CDLENGULFING ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Je vais vous dire ce qu'il faut faire. | Étoile du Doji |
CDLEVENINGDOJISTAR ((Records[Open,High,Low,Close],Pénétration = 0.3) = Array ((outInteger) | |
Cdleveningstar est une star | Étoile du soir |
CDLEVENINGSTAR ((Records[Open,High,Low,Close],Pénétration = 0.3) = Array ((outInteger) | |
CDLGAPSIDESIDEBlanc | Lignes blanches côte à côte en hauteur/en bas |
CDLGAPSIDESIDESWHITE ((Enregistrements [ouvrir, haute, basse, fermé]) = Matrice ((extraintégrale) | |
Le CDLGravestonedoji | Le Doji de la pierre tombale |
CDLGRAVESTONEDOJI ((Enregistrements [ouvrir, haute, basse, proche]) = Matrice ((extraintégrale) | |
Le CDLHAMMER | Le marteau |
CDLHAMMER ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
C' est le CDLHANGINGMAN. | Le pendu |
CDLHANGINGMAN ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Le CDLHARAMI | Modèle Harami |
CDLHARAMI ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Les microbes sont des micro-organismes | Modèle Harami croisé |
CDLHARAMICROSS ((Enregistrements [ouvrir, hauteur, basseur, fermeture]) = Array ((extérieurInteger) | |
CDLHIGHWAVE | Une bougie à ondes élevées |
CDLHIGHWAVE ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Je ne sais pas. | Le modèle Hikkake |
CDLHIKKAKE ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Je vous en prie. | Modèle de Hikkake modifié |
CDLHIKKAKEMOD ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Le CDLHOMINGPIGEON | Pigeon volant |
CDLHOMINGPIGEON ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
C' est le CDLIDENTICAL3CROWS. | Trois corbeaux identiques |
CDLIDENTICAL3CROWS ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Le CDLINNECK | Modèle dans le cou |
CDLINNECK ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
CDLINVERTEDHAMMER est une marque américaine. | Marteau renversé |
CDLINVERTEDHAMMER ((Records[Open,High,Low,Close]) = Array ((outInteger) est le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est égal à | |
Le CDLKICK | Je frappe. |
CDLKICKING ((Records[Open,High,Low,Close]) = Array ((outInteger) est le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est égal au nombre de fois où le nombre de fois où le nombre est indiqué est égal au nombre de fois où le nombre de fois où le nombre est indiqué est égal au nombre de fois où le nombre est indiqué est égal au nombre de fois où il est indiqué | |
Législation concernant le dépôt de la demande | Coup de pied - taureau/ours déterminé par le marubozu plus long |
CDLKICKINGBYLENGTH ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Je vous en prie. | Bas de l'échelle |
CDLLADDERBOTTOM ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Je ne sais pas. | Le Dojz aux pattes longues |
CDLLONGLEGGEDDOJI ((Enregistrements [ouvrir, haute, basse, proche]) = Matrice ((extraintégrale) | |
CDLLONGLINE | Bougie de ligne longue |
CDLLONGLINE ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
CdLMARUBOZU | Le Marubozu |
CDLMARUBOZU ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Le CDLMATCHINGLOW | Faible correspondance |
CDLMATCHINGLOW ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier qui correspond à un nombre entier. | |
Le code de dépôt | Maintien du tapis |
CDLMATHOLD ((Records[Open,High,Low,Close],Pénétration = 0.5) = Array ((outInteger) | |
Le CD du matin. | Étoile du matin. |
CDLMORNINGDOJISTAR ((Enregistrements [ouvrir, haute, basse, proche],Pénétration = 0.3) = Matrice ((extraintégrale) | |
Le CDLMORNINGSTAR | Étoile du matin |
CDLMORNINGSTAR ((Enregistrements [ouvrir, hauteur, basseur, fermeture],Pénétration = 0,3) = Array ((outInteger) | |
Je ne sais pas. | Modèle sur le cou |
CDLONNECK ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Le dépistage | Le modèle de perçage |
CDLPIERCING ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Je ne sais pas. | L' homme de la rickshaw |
CDLRICKSHAWMAN ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
MÉTHODES de dépistage de l'infection | Trois méthodes de hausse/baisse |
CDLRISEFALL3METHODS ((Enregistrements [ouvrir, hauteur, basseur, fermeture]) = Array ((extérieurInteger) | |
Ligne de séparation | Les lignes de séparation |
CDLSEPARATINGLINES ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de lignes séparées | |
Je vous en prie. | Étoile filante |
CDLSHOOTINGSTAR ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
CDLShorte ligne | Bougie de ligne courte |
CDLSHORTLINE ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers | |
Le CDL SPINNINGTOP | Le tourbillon |
CDLSPINNINGTOP ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Modèle défini | Modèle bloqué |
CDLSTALLEDPATTERN ((Records[Open,High,Low,Close]) = Array ((outInteger) est le nombre d'enregistrements dans le tableau | |
Le CDLSTICKSANDWICH | Un sandwich au bâton |
CDLSTICKSANDWICH ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Le CDLTAKURI | Takuri (Dragonfly Doji avec une très longue ombre inférieure) |
CDLTAKURI ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Le CDLTASUKIGAP | La faille de Tasuki |
CDLTASUKIGAP ((Enregistrements [Ouvrir, Haute, Basse, Fermer]) = Array ((extérieurInteger) | |
Le CDL est en train d'échouer | Le modèle de poussée |
CDLTHRUSTING ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers. | |
Le CDLTRISTAR | Modèle Tristar |
CDLTRISTAR ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier composé d'une série de nombres | |
Je ne peux pas. | La rivière Unique 3 |
CDLUNIQUE3RIVER ((Records[Open,High,Low,Close]) = Array ((outInteger) est un nombre entier | |
Je ne sais pas si c'est le cas. | Le trou à l'envers Deux corbeaux |
CDLUPSIDEGAP2CROWS ((Enregistrements [ouvrir, hauteur, basseur, fermeture]) = Array ((extérieurInteger) | |
MÉTHODES de dépistage du CDLXSIDE | La différence entre la hausse et la baisse Trois méthodes |
CDLXSIDEGAP3METHODS ((Records[Open,High,Low,Close]) = Array ((outInteger) est une série de nombres entiers |
Volume Indicators
:
Indicateur | Définition |
---|---|
AD | Chaikin ligne A/D |
AD ((Records[High,Low,Close,Volume]) = Array ((outReal) | |
Le groupe ADOSC | L'oscillateur A/D Chaikin |
ADOSC ((Records[High,Low,Close,Volume],Période rapide = 3,Période lente = 10) = Array ((outReal) | |
VAB | Sur le volume du bilan |
OBV ((Records[Close],Records[Volume]) = Array ((outReal) est le nombre d'enregistrements dans le tableau. |
Math Transform
:
Indicateur | Définition |
---|---|
Le code de l'ACOS | ACos vectoriel trigonométrique |
ACOS ((Records[Close]) = Array ((outReal) est un ensemble de données | |
ASIN | ASin trigonométrique vectoriel |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois | |
ATAN | Trigonométrie vectorielle ATan |
ATAN ((Records[Close]) = Array ((outReal) | |
Le CEIL | Plafond vectoriel |
CEIL ((Records[Close]) = Array ((outReal) | |
Coût de l'activité | Cos vectoriel trigonométrique |
COS ((Records[Close]) = Array ((outReal) | |
Le COSH | Cosh en trigonométrie vectorielle |
Le nombre de fois où les données sont enregistrées est le nombre de fois où les données sont enregistrées. | |
Expiration | Expérimentation arithmétique vectorielle |
EXP ((Records[Close]) = Array ((outReal) est un ensemble de données | |
Plancher | Plancher vectoriel |
L'expérience de l'expérience de l'expérience de l'expérience de l'expérience de l'expérience de l'expérience est la suivante: | |
LN | Vecteur log naturel |
LN ((Records[Close]) = Array ((outReal) | |
Logiciel de mesure 10 | Le vecteur log10 |
Logiciel de calcul de l'échantillon | |
Nom de l'entreprise | Sin vectoriel trigonométrique |
SIN ((Records[Close]) = Array ((outReal) | |
Le SINH | Synchronisation trigonométrique vectorielle |
SINH ((Records[Close]) = Array ((outReal) | |
SQRT | Racine carrée du vecteur |
SQRT ((Records[Close]) = Array ((outReal) | |
Nombre d'emplois | Tan vectoriel trigonométrique |
TAN ((Records[Close]) = Array ((outReal) | |
TANH | Trigonométrie vectorielle Tanh |
TANH ((Records[Close]) = Array ((outReal) |
Math Operators
:
Indicateur | Définition |
---|---|
Maximum | Valeur la plus élevée sur une période déterminée |
MAX ((Records[Close],Période de temps = 30) = Array ((outReal) | |
Maxindex | Indice de valeur la plus élevée sur une période déterminée |
MAXINDEX ((Records[Close],Période de temps = 30) = Array ((outInteger) | |
Résultats | Valeur la plus basse sur une période déterminée |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois le nombre de fois où le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois. | |
L'indice de référence | Indice de la valeur la plus basse sur une période déterminée |
L'indicateur de la valeur de l'indice est le nombre d'indices de la valeur de l'indice de la valeur de l'indice. | |
Le type de produit | Values minimales et maximales sur une période déterminée |
Le nombre de fois où les données sont enregistrées est le nombre de fois où les données sont enregistrées. | |
Les résultats de l'analyse | Indices des valeurs les plus basses et les plus élevées au cours d'une période déterminée |
Le nombre de fois où les données sont classées dans le tableau de bord est le nombre de fois où les données sont classées dans le tableau de bord. | |
Résultats | Résumé |
SUM ((Records[Close],Période de temps = 30) = Array ((outReal) |
Cycle Indicators
:
Indicateur | Définition |
---|---|
Le nombre de jours de travail | Transformation de Hilbert - période de cycle dominante |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est le nombre de fois où le nombre de fois où le nombre de fois est indiqué est le nombre de fois. | |
Les données de référence | Transformation de Hilbert - phase dominante du cycle |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est égal à | |
Les données de base sont fournies à l'autorité compétente. | La transformation de Hilbert - composants phasoriques |
Les données de base sont les données de base de la base de données de la base de données. | |
Résultats de l'analyse | La transformation de Hilbert - onde sinusoïdale |
Le nombre de fois où les données sont supprimées est le nombre de fois où les données sont supprimées. | |
Le mode de fonctionnement de l'application | Transformation de Hilbert - Mode tendance contre cycle |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est le nombre de fois que le nombre de fois où le nombre de fois est indiqué est le nombre de fois. |
Volatility Indicators
:
Indicateur | Définition |
---|---|
ATR | Plage réelle moyenne |
ATR ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
NATR | Plage réelle moyenne normalisée |
NATR ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
Les produits | Dimension réelle |
TRANGE ((Records[High,Low,Close]) = Array ((outReal) est une série de nombres |
Overlap Studies
:
Indicateur | Définition |
---|---|
Les banques centrales | Les bandes de Bollinger |
BBANDS ((Récords[Close],Période de temps = 5,Déviations vers le haut = 2,Déviations vers le bas = 2,MA Type = 0) = [Array ((outRealUpperBand),Array ((outRealMiddleBand),Array ((outRealLowerBand) ] | |
Le DEMA | Moyenne mobile exponentielle double |
DEMA ((Records[Close],Période de temps = 30) = Array ((outReal) | |
Le taux d'intérêt | Moyenne mobile exponentielle |
EMA ((Records[Close],Période de temps = 30) = Array ((outReal) | |
Ligne de tendance | La transformation de Hilbert - ligne de tendance instantanée |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est le nombre de fois où le nombre de fois où le nombre de fois est indiqué est le nombre de fois. | |
Le KAMA | Moyenne mobile adaptative de Kaufman |
KAMA ((Records[Close],Période de temps = 30) = Array ((outReal) | |
- Je vous en prie. | Moyenne mobile |
MA ((Records[Close],Période de temps = 30,MA Type = 0) = Array ((outReal) | |
Je ne sais pas. | Moyenne mobile adaptative MESA |
MAMA ((Records[Close], Limite rapide = 0,5, Limite lente = 0,05) = [Array ((outMAMA),Array ((outFAMA) ] | |
Le point médian | Période moyenne |
MIDPOINT ((Records[Close],Période de temps = 14) = Array ((outReal) | |
Prix moyen | Prix moyen au cours de la période |
MIDPRICE ((Records[High,Low],Période de temps = 14) = Array ((outReal) | |
SAR | SAR parabolique |
SAR ((Records[High,Low],Facteur d'accélération = 0,02,AF Maximum = 0,2) = Array ((outReal) | |
SAREXT | SAR parabolique - étendu |
SAREXT ((Records[High,Low],Valeur de départ = 0,Offset à l'envers = 0,AF Init Long = 0.02,AF Long = 0.02,AF Max Long = 0.2,AF Init Short = 0.02,AF Short = 0.02,AF Max Short = 0.2) = Array ((outReal) | |
SMA | Moyenne mobile simple |
SMA ((Records[Close],Période de temps = 30) = Array ((outReal) | |
T3 | Moyenne mobile exponentielle triple (T3) |
T3 ((Records[Close],Période de temps = 5,Facteur de volume = 0,7) = Array ((outReal) | |
TEMA | Moyenne mobile exponentielle triple |
TEMA ((Records[Close],Période de temps = 30) = Array ((outReal) est le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois est indiqué est égal à 100) | |
Le groupe TRIMA | Moyenne mobile triangulaire |
TRIMA ((Records[Close],Période de temps = 30) = Array ((outReal) | |
La WMA | Moyenne mobile pondérée |
WMA ((Records[Close],Période de temps = 30) = Array ((outReal) |
Statistic Functions
:
Indicateur | Définition |
---|---|
Réglage linéaire | Régression linéaire |
LINEARREG ((Records[Close],Période de temps = 14) = Array ((outReal) | |
LINEARREG_ANGLE est le point de départ de l'angle | Angle de régression linéaire |
LINEARREG_ANGLE ((Enregistrements[Close],Période de temps = 14) = Array ((outReal) | |
LINEARREG_INTERCEPT est le nombre de fois où la ligne est interrompue. | Interception de régression linéaire |
LINEARREG_INTERCEPT ((Records[Close],Période de temps = 14) = Array ((outReal) | |
LINEARREG_SLOPE | Pente de régression linéaire |
LINEARREG_SLOPE ((Enregistrements[Close],Période de temps = 14) = Array ((outReal) | |
Le dépistage de l'infection | Déviation type |
STDDEV ((Records[Close],Période de temps = 5,Déviations = 1) = Array ((outReal) | |
TSF | Prévisions de séries chronologiques |
TSF ((Records[Close],Période de temps = 14) = Array ((outReal) | |
VAR | Variance |
VAR ((Records[Close],Période de temps = 5,Déviations = 1) = Array ((outReal) |
Momentum Indicators
:
Indicateur | Définition |
---|---|
ADX | Indice de mouvement directionnel moyen |
ADX ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
ADXR | Indice de mouvement directionnel moyen |
ADXR ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
APO | L'oscillateur de prix absolu |
APO ((Records[Close],Période rapide = 12,Période lente = 26,MA Type = 0) = Array ((outReal) | |
AROON | Je vous en prie. |
AROON ((Records[High,Low],Période de temps = 14) = [Array ((outAroonDown),Array ((outAroonUp) ] | |
AROONOSC | Ossillateur d'Aroon |
AROONOSC ((Records[High,Low],Période de temps = 14) = Array ((outReal) | |
BOP | L'équilibre du pouvoir |
BOP ((Records[Open,High,Low,Close]) = Array ((outReal) est le nombre d'emplacements dans un tableau. | |
CCI | Indice des canaux de produits de base |
CCI ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
OCM | L'oscillateur de dynamique de Chande |
CMO ((Records[Close],Période de temps = 14) = Array ((outReal) | |
DX | Indice de mouvement directionnel |
DX ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
Le MACD | Moyenne mobile de convergence/divergence |
Le nombre de fois où les données sont enregistrées est le nombre de fois où les données sont enregistrées. Le nombre de fois où les données sont enregistrées est le nombre de fois où elles sont enregistrées. | |
Le code MACDEXT | MACD avec type MA contrôlable |
MACDEXT ((Records[Close],Période rapide = 12,MA rapide = 0,Période lente = 26,MA lente = 0,Période du signal = 9,MA du signal = 0) = [Array ((outMACD),Array ((outMACDSignal),Array ((outMACDHist) ] | |
Le code MACDFIX | La convergence/divergence des moyennes mobiles est fixée 12/26 |
MACDFIX ((Récords[Close],Période du signal = 9) = [Array ((outMACD),Array ((outMACDSignal),Array ((outMACDHist) ] | |
Finances monétaires | Indice des flux de trésorerie |
MFI ((Records[High,Low,Close,Volume],Période de temps = 14) = Array ((outReal) | |
Résultats de l'analyse | Indicateur de direction moins |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois le nombre de fois où le nombre de fois le nombre de fois où le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois. | |
Résultats de l'analyse | Motion moins directionnelle |
Le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois où le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois le nombre de fois. | |
Je ne sais pas. | L' élan |
MOM ((Records[Close],Période de temps = 10) = Array ((outReal) | |
Le nombre d'heures | Indicateur de direction |
PLUS_DI ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) | |
Le nombre de points de contrôle | Plus le mouvement directionnel |
PLUS_DM ((Records[High,Low],Période de temps = 14) = Array ((outReal) | |
PPO | Ossillateur de prix en pourcentage |
PPO ((Records[Close],Période rapide = 12,Période lente = 26,MA Type = 0) = Array ((outReal) | |
ROC | Taux de variation : ((prix/prevPrice) -1) * 100 |
ROC ((Records[Close],Période de temps = 10) = Array ((outReal) | |
Réglage de la charge | Taux de variation Pourcentage: (prix-prevPrice) /prevPrice |
ROCP ((Records[Close],Période de temps = 10) = Array ((outReal) | |
Réglementation de l'épargne | Taux de variation ratio: (prix/prix précédent) |
ROCR ((Records[Close],Période de temps = 10) = Array ((outReal) | |
Règlement sur les produits de base | Taux de variation du ratio 100 échelle: (prix/prevPrice) *100 |
ROCR100 ((Records[Close],Période de temps = 10) = Array ((outReal) | |
Indice de résistance | Indice de force relative |
RSI ((Records[Close],Période de temps = 14) = Array ((outReal) | |
STOCH | Stochastique |
STOCH ((Records[High,Low,Close],Période K rapide = 5,Période K lente = 3,Période K lente MA = 0,Période D lente = 3,Période D lente MA = 0) = [Array ((outSlowK),Array ((outSlowD) ] | |
STOCHF | Rapide stochastique |
STOCHF ((Records[High,Low,Close],Période rapide K = 5,Période rapide D = 3,Période rapide D MA = 0) = [Array ((outFastK),Array ((outFastD) ] | |
STOCHRSI | Indice de force relative stochastique |
STOCHRSI ((Records[Close],Période de temps = 14,Période rapide-K = 5,Période rapide-D = 3,Période rapide-D MA = 0) = [Array(outFastK),Array(outFastD] | |
Le TRIX | Rate-of-change (ROC) d'un jour pour une EMA triple lisse |
TRIX ((Records[Close],Période de temps = 30) = Array ((outReal) | |
Les résultats de l'analyse | L'oscillateur ultime |
ULTOSC ((Records[High,Low,Close],Première période = 7,Seconde période = 14,Troisième période = 28) = Array ((outReal) | |
Je ne sais pas. | Williams |
WILLR ((Records[High,Low,Close],Période de temps = 14) = Array ((outReal) |
Price Transform
:
Indicateur | Définition |
---|---|
Le prix moyen | Prix moyen |
AVGPRICE ((Records[Open,High,Low,Close]) = Array ((outReal) est le nombre d'enregistrements dans le tableau. | |
Le prix moyen | Prix médian |
MEDPRICE ((Records[High,Low]) = Array ((outReal) est le nombre de fois où le nombre d'enregistrements est inférieur à | |
TYPE de prix | Prix typique |
TYPPRICE ((Records[High,Low,Close]) = Array ((outReal) est le nombre d'enregistrements dans le tableau. | |
Le prix du produit | Prix de clôture pondéré |
WCLPRICE ((Records[High,Low,Close]) = Array ((outReal) est un nombre de nombres réels dans un tableau. |
La plateforme de trading FMZ Quant prend en charge le backtesting et la requête de diverses données fondamentales dans le bot.
Utilisationexchange.GetData(Source)
La fonction d'obtention des données fondamentales.
Les données fondamentales de la crypto-monnaie n'ont pas été collectées temporairement.
Les données fondamentales de la crypto-monnaie n'ont pas été collectées temporairement.
La plateforme FMZ Quant Trading prend en charge l'invocation programmatique de diverses fonctions de la plateforme et a ouvert l'API étendue.
Il prend en charge l'extension de gestion de l'autorité API, comme indiqué sur la figure:
Il permet deAPI KEY
Vous pouvez entrer.*
dans la zone d'entrée d'autorisation API pour ouvrir toutes les autorisations d'interface. Spécifiez des autorisations d'interface spécifiques et entrez les noms de fonction API étendus correspondants, séparés par des virgules, tels queGetRobotDetail, DeleteRobot
, c'est à dire, donnez ceciAPI KEY
l'autorisation deObtenez l'interface du bot des informations détailléesetsupprimer l'interface du bot.
Définition | Le code |
---|---|
Exécution réussie | 0 |
Faute de clé d'API | 1 |
Fausse signature | 2 |
Erreur de nonce | 3 |
Méthode incorrecte | 4 |
Paramètre incorrect | 5 |
Erreur interne inconnue | 6 |
(Démarrage normal)
Le statut | Le code |
---|---|
À l'arrêt | 0 |
En fonctionnement | 1 |
Arrêt | 2 |
Déposé | 3 |
Arrêté | 4 |
La stratégie comporte des erreurs. | 5 |
Je ne sais pas.
Le statut | Le code |
---|---|
La stratégie a expiré, et s'il vous plaît contacter l'auteur pour l'acheter à nouveau | -1 |
Aucun docker trouvé | -2 |
Erreur de compilation de stratégie | -3 |
Le robot est déjà en marche. | -4 |
Solde insuffisant | -5 |
Le nombre de stratégies concomitantes dépasse la limite | -6 |
Utilisationmd5
méthode de chiffrement à vérifier.
Python, exemples d'appels en langue Golang:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import md5
import urllib2
from urllib import urlencode
except:
import hashlib as md5
import urllib.request as urllib2
from urllib.parse import urlencode
accessKey = 'f27bfcXXXXXXXX013c62e98XXXXX817a'
secretKey = 'ffeXXXXXXXX085ff7269XXXXXXXX6f82'
def api(method, *args):
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
# Note: for the timeout problem of "urllib2.urlopen" function, you can set the timeout time; for example, urllib2.urlopen ('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8'), timeout = 10), that is, set timeout for 10 seconds
return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
# Return the docker list
print(api('GetNodeList'))
# Return the exchange list
print(api('GetPlatformList'))
# GetRobotList (offset, length, robotStatus, label); passing "-1" means obtaining all
print(api('GetRobotList', 0, 5, -1, 'member2'))
# CommandRobot(robotId, cmd) sends commands to the bot
print(api('CommandRobot', 123, 'ok'))
# StopRobot(robotId) returns the bot status code
print(api('StopRobot', 123))
# RestartRobot(robotId) returns the bot status code
print(api('RestartRobot', 123))
# GetRobotDetail(robotId) returns detailed bot information
print(api('GetRobotDetail', 123))
package main
import (
"fmt"
"time"
"encoding/json"
"crypto/md5"
"encoding/hex"
"net/http"
"io/ioutil"
"strconv"
"net/url"
)
// Fill in your own FMZ platform api key
var apiKey string = ""
// Fill in your own FMZ platform secret key
var secretKey string = ""
var baseApi string = "https://www.fmz.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
// Process args
jsonStr, err := json.Marshal(args)
if err != nil {
panic(err)
}
params := map[string]string{
"version" : "1.0",
"access_key" : apiKey,
"method" : method,
"args" : string(jsonStr),
"nonce" : strconv.FormatInt(time.Now().UnixNano() / 1e6, 10),
}
data := fmt.Sprintf("%s|%s|%s|%v|%s", params["version"], params["method"], params["args"], params["nonce"], secretKey)
h := md5.New()
h.Write([]byte(data))
sign := h.Sum(nil)
params["sign"] = hex.EncodeToString(sign)
// http request
client := &http.Client{}
// request
urlValue := url.Values{}
for k, v := range params {
urlValue.Add(k, v)
}
urlStr := urlValue.Encode()
request, err := http.NewRequest("GET", baseApi + "?" + urlStr, nil)
if err != nil {
panic(err)
}
resp, err := client.Do(request)
if err != nil {
panic(err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret = string(b)
return
}
func main() {
settings := map[string]interface{}{
"name": "hedge test",
"strategy": 104150,
// K-line period parameter "60" means 60 seconds
"period": 60,
"node" : 73938,
"appid": "member2",
"exchanges": []interface{}{
map[string]interface{}{
"eid": "Exchange",
"label" : "test_bjex",
"pair": "BTC_USDT",
"meta" : map[string]interface{}{
// Fill in the access key
"AccessKey": "",
// Fill in the secret key
"SecretKey": "",
"Front" : "http://127.0.0.1:6666/exchange",
},
},
},
}
method := "RestartRobot"
fmt.Println("Call interface:", method)
ret := api(method, 124577, settings)
fmt.Println("main ret:", ret)
}
Il prend en charge la vérificationtoken
(passer)secret_key
Par exemple, l'URL qui donne directement des instructions interactives au bot, qui peut être utilisée pourTradingView
ou leWebHook
dans d'autres cas.
PourCommandRobot(RobotId, Cmd)
fonction, le paramètrenonce
ne nécessite pas de vérification et la fréquence d'accès et les temps de visite de l'interface ne sont pas limités.
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
Dans la mesure où la vérification directe est soutenue,CommandRobot
l'interface est prise en charge pour obtenir leBody
Par exemple, les paramètres dans leWebHook URL
deTradingView
:
https://www.fmz.com/api/v1?access_key=fd3be82e9e6e6ed4439f2793a5e9ca&secret_key=520b9f10f3768e6ad1af59ff25184&method=CommandRobot&args=[130350,+""]
Veuillez faire attention au réglage selon le format suivant:args=[130350,+""]
, dans lequel130350
C' est le robot?ID
de la plateforme de négociation quantitative FMZ.
Paramètres dans la zone de message (les données
Format JSON:
{"close": {{close}}, "name": "aaa"}
Le robot avecID
de186515
peut recevoir l'instruction interactive:{"close": 39773.75, "name": "aaa"}
.
Format du texte:
BTCUSDTPERP Crossing 39700.00 close: {{close}}
Le robot avecID
de186515
peut recevoir l'instruction interactive:BTCUSDTPERP Crossing 39700.00 close: 39739.4
.
Exemples dePython
& Golang
appels linguistiques:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import urllib2
except:
import urllib.request as urllib2
accessKey = 'your accessKey'
secretKey = 'your secretKey'
def api(method, *args):
return json.loads(urllib2.urlopen(('https://www.fmz.com/api/v1?access_key=%s&secret_key=%s&method=%s&args=%s' % (accessKey, secretKey, method, json.dumps(list(args)))).replace(' ', '')).read().decode('utf-8'))
# If APIKEY does not have the interface permission, the call to print(api('RestartRobot', 130350)) will fail, and the returned data is: {'code': 4, 'data': None}
# print(api('RestartRobot', 130350))
# Print bot details with ID 130350
print(api('GetRobotDetail', 130350))
package main
import (
"fmt"
"encoding/json"
"net/http"
"io/ioutil"
"net/url"
)
// Fill in your own FMZ platform api key
var apiKey string = "your access_key"
// Fill in your own FMZ platform secret key
var secretKey string = "your secret_key"
var baseApi string = "https://www.fmz.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
jsonStr, err := json.Marshal(args)
if err != nil {
panic(err)
}
params := map[string]string{
"access_key" : apiKey,
"secret_key" : secretKey,
"method" : method,
"args" : string(jsonStr),
}
// http request
client := &http.Client{}
// request
urlValue := url.Values{}
for k, v := range params {
urlValue.Add(k, v)
}
urlStr := urlValue.Encode()
request, err := http.NewRequest("GET", baseApi + "?" + urlStr, nil)
if err != nil {
panic(err)
}
resp, err := client.Do(request)
if err != nil {
panic(err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret = string(b)
return
}
func main() {
method := "GetRobotDetail"
fmt.Println("Call interface:", method)
ret := api(method, 130350)
fmt.Println("main ret:", ret)
}
Utilisez l'API étendue sur FMZ Quant pour réaliser le trading de signaux d'alerte
L'API étendue de la plateforme de trading FMZ Quant
https://www.fmz.com/api/v1?
Le symbole ci-dessus?
est suivie des paramètres de demande.
Les paramètres de demande décrits dansPython
langue:
{
'version' : '1.0',
# Access key, applied on the account management page
'access_key': '8a1f6c3785fd78a1848320e0b19js99f',
# The specific method called
'method' : 'GetNodeList',
# The parameter list of specific method algorithm
'args' : [],
# Timestamp, in the unit of millisecond, is allowed to have 1 hour of time error both before and after the standard timestamp;the nonce must be greater than the nonce value of the last access
'nonce' : 1516292399361,
# Signature
'sign' : '085b63456c93hfb243a757366600f9c2'
}
Chaque nom de paramètre est séparé par le caractère&
, et les noms et valeurs des paramètres sont reliés au symbole=
. L'URL complète de la demande (en prenantmethod=GetNodeList
à titre d'exemple):
https://www.fmz.com/api/v1?
access_key=8a1f6c3785fd78a1848320e0b19js99f&
nonce=1516292399361&
args=%5B%5D&
sign=085b63456c93hfb243a757366600f9c2&
version=1.0&
method=GetNodeList
Faites attention qu'il n'y ait passecret_key
entre les paramètres de demande.
Méthode de signature
Dans les paramètres de demande, le paramètresign
est une chaîne de caractères chiffrée, et la méthode de chiffrement est la suivante.
Selon le format:
version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
Après avoir concaténé des chaînes, utilisezMD5algorithme de chiffrement pour chiffrer la chaîne et la convertir en une valeur de chaîne de données hexadécimale, désignée par la valeur du paramètresign
.
Le renvoiPython
code de la partie de la signature:
# parameter
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
# Calculate "sign" signature (encrypted)
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
GetNodeList()
renvoie la liste des dockers du compte de la plateforme de trading FMZ Quant correspondant à laAPI KEY
dans la demande.
Paramètre Aucune
Valeur de retour
{
"code": 0,
"data": {
"result": {
"nodes": [{
// Version number
"build": "3.3",
"date": "2018-01-19 10:35:24",
"id": 34500,
"ip": "126.28.21.120",
// Number of the bots running on this docker
"loaded": 1,
"name": "iZ9116xhkgtZ",
// Whether online
"online": true,
// Operation system
"os": "linux",
// Whether to enable offline alert
"wd": 0
},
...
]
},
"error": null
}
}
GetRobotGroupList()
renvoie la liste de regroupement des robots du compte de la plateforme de trading FMZ Quant correspondant à laAPI KEY
dans la demande.
Paramètre Aucune
Valeur de retour
{
"code":0,
"data":{
"result":{
// All bot grouping information: group ID, group name
"items":[{"id":1122,"name":"test"}]
},
"error":null
}
}
GetPlatformList()
renvoie la liste des bourses qui ont été ajoutées par le compte de la plateforme de trading FMZ Quant correspondant à laAPI KEY
dans la demande.
Paramètre Aucune
Valeur de retour
{
"code": 0,
"data": {
"result": {
"platforms": [{
"eid": "Huobi",
"id": 12483,
// The label when adding a platform
"label": "huobi - test ETH/ETC",
"logo": "huobi.png",
"name": "huobi",
"stocks": ["LTC_BTC", "ETH_BTC", "ETC_BTC", "BCH_BTC"],
"website": "https://www.huobi.pro/"
}, {
"eid": "AEX",
"id": 16345,
"label": "AEX",
"logo": "",
"name": "AEX",
"stocks": ["LTC_BTC", "ETH_BTC", "ETC_BTC", "BCC_BTC"],
"website": "https://www.aex.com/"
},
...
]
},
"error": null
}
}
GetRobotList(offset, length, robotStatus, label)
renvoie la liste des robots du compte de la plateforme de trading FMZ Quant correspondant à laAPI KEY
dans la demande.
Paramètreoffset
, length
etrobotStatus
sont de type entier, etlabel
est de type chaîne.
offset
length
robotStatus
(passer label
(étiquette personnalisée; tous les robots avec l'étiquette peuvent être flirtés)PourPython
exemple de code, voir ci-dessusméthode de vérification - Vérification des jetons, et ce qui suit:Python
Exemple d'invocation:print api('GetRobotList', 'member2')
imprimer les informations de tous les robots avec l'étiquette personnaliséemember2
.
print api('GetRobotList', 0, 5, -1, 'member2')
pages de 0 à 5 et liste jusqu'à 5 robotsmember2
.
Valeur de retour
{
"code": 0,
"data": {
"result": {
"all": 53,
"bots": [{
"date": "2017-12-25 09:29:27",
"end_time": "2017-12-28 17:44:21",
"id": 66054,
// If the value is 1, the bot is a virtual platform bot
"is_sandbox": 1,
"name": "C++ test strategy",
"node_guid": "705d9aaaaaaaa93b49baaaaa787581cb087",
"profit": 0,
"public": 0,
"refresh": 151345645647000,
"start_time": "2017-12-28 17:44:15",
"status": 3,
"strategy_id": 65365,
"strategy_isowner": true,
"strategy_name": "C++ Version Docker API Test Strategy(cryptocurrency futures and spot markets)",
"wd": 0
}, ...
]
},
"error": null
}
}
CommandRobot(RobotId, Cmd)
l'interface envoie la commande interactive au robot correspondant (robotID
: RobotId
) de laAPI KEY
dans la demande du compte FMZ Quant (la commande interactive est capturée par leGetCommand()
API appelé dans la stratégie et les retours).
ParamètreRobotId
est de type entier, à savoir le botID
; Cmd
est de type chaîne, qui envoie des commandes interactives aux robots.
RobotId
Le robot.ID
, peut être obtenue par leGetRobotList(...)
interface.Cmd
est la commande interactive envoyée au bot; la commande sera capturée par la fonctionGetCommand()
, qui déclenche la logique interactive dans la stratégie (pour réaliser la logique interactive dans la stratégie, veuillez vous référer àGetCommand()
fonction dans le fichier).Valeur de retour
{
// The API request was successfully executed
"code": 0,
"data": {
// However, sending a command to a bot that is not running returns failure
"result": false,
"error": null
}
}
StopRobot(RobotId)
Arrête d'exécuter le bot avec l'ID spécifié (robotID
: RobotId
), correspondant à laAPI KEY
dans la demande du compte FMZ Quant.
ParamètreRobotId
est de type entier, à savoir le botID
, qui peut être obtenue parGetRobotList(...)
une interface;StopRobot(RobotId)
l'interface renvoie le code d'état du robot arrêté.
Valeur de retour
{
"code": 0,
"data": {
// 2 means stopping
"result": 2,
"error": null
}
}
RestartRobot(RobotId, Settings)
redémarre le robot avec l'ID spécifié (robotID
: RobotId
), correspondant à laAPI KEY
dans la demande du compte FMZ Quant.
Si le robot est créé par l'API étendue, l'API étendueRestartRobot (RobotId, Settings)
doit être utilisé pour redémarrer, et leSettings
Le paramètre doit être passé.
Le robot créé sur la page de la plateforme peut être redémarré via l'API étendue ou en cliquant sur le bouton sur la page.Settings
paramètre, ou simplement passer le leRobotId
Paramètre. Si vous passez seulement leRobotId
Paramètre, démarrez le bot selon les paramètres actuels du bot.
Paramètre
Sans configurer le bot, le paramètre de stratégieSettings
:
RobotId
est de type entier; le robotID
peut être obtenue parGetRobotList(...)
.
Avec la configuration du bot, le paramètre de stratégieSettings
:
RobotId
est de type entier; le botID
peut être obtenue parGetRobotList(...)
.
Settings
est deJSON
type d'objet.
Settings
Le format du paramètre est le suivant:
Settings = {
"name": "hedge test",
// Strategy parameter
"args": [["Interval", 500]],
// Strategy ID, which can be obtained with "GetStrategyList" method
"strategy": 25189,
// K-line period parameter "60" means 60 seconds
"period": 60,
// Specify on which docker to run; if the attribute is not written, it will be automatically assigned to run
"node" : 51924,
// Custom field
"appid": "member2",
"exchanges": [
// ZB; "pid" can be obtained by "GetPlatformList" method
{"pid": 15445, "pair": "ETH_BTC"},
// OKEX; 2 exchange objects are configured
{"pid": 13802, "pair": "BCH_BTC"},
// In addition to the platforms ("pid" identification) configured by the FMZ dashboard, you can also set exchange configuration information that has not been configured to operate the bot
{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}},
{"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}}
]
}
Note: le numéro de série
Lorsque vous utilisez des informations sensibles, telles que la plateformeAPI KEY
, y compris"meta":{"AccessKey":"xxx","SecretKey":"yyy"}
dans la configuration deeid
, vous devez savoir que FMZ ne stocke pas les données. Les données seront envoyées directement au programme docker, donc ces informations doivent être configurées à chaque fois que le bot est créé ou redémarré.
Pour redémarrer le bot qui utilise le plugin pour supporter l'échange, lors de la configuration duSettings
paramètre, vous devez effectuer les réglages suivants pour leexchanges
attribut:
{"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}
label
L'attribut est de définir une étiquette pour l'objet d'échange accessible par le système actuel.Protocole général, qui peut être obtenue par leexchange.GetLabel()
Le rôle de l'entreprise dans la stratégie.
Valeur de retour
{
"code": 0,
"data": {
// 1 means running
"result": 1,
"error": null
}
}
GetRobotDetail(RobotId)
Obtient les informations détaillées sur le robot avec l'ID spécifié (robotID
: RobotId
), correspondant à laAPI KEY
à la demande du compte de la plateforme de négociation FMZ Quant.
ParamètreRobotId
est de type entier; le robotID
peut être obtenue parGetRobotList(...)
.
Valeur de retour
{
"code": 0,
"data": {
"result": {
"robot": {
// Next payment time, namely the effective cut-off time after the current payment
"charge_time": 1561992608,
// Elapsed Time
"charged": 3600,
// Amount consumed (0.125 CNY = 12500000 / 1e8)
"consumed": 12500000,
"date": "2019-07-01 21:50:08",
"debug": "{\"Nano\":1561989722431145193,\"Stderr\":\"\",\"Stdout\":\"\"}",
// Stop time
"end_time": "2019-07-01 22:02:02",
// The docker ID assigned when the robot is running; if it is automatic, the value is -1
"fixed_id": 85960,
"id": 150288,
"is_deleted": 0,
// Whether it has the permission to manage the bot
"is_manager": true,
// Whether it is virtual exchange
"is_sandbox": 0,
// Robot name
"name": "Spread monitoring2",
// Docker ID
"node_id": 85960,
// The exchange objects configured by the robot
"pexchanges": {
// 14703 is eid, and "GateIO" is exchange name
"14703": "GateIO",
"15445": "ZB",
"42960": "OKEX",
"44314": "Huobi"
},
// label information of the exchange object configured by the robot
"plabels": {
"14703": "Gate.IO (old name: BTER)",
"15445": "ZB",
"42960": "OKEX spot V3 test",
"44314": "Huobi - newest test"
},
"profit": 0,
// Whether to show public
"public": 0,
// Recent active time
"refresh": 1561989724000,
"robot_args": "[[\"TickInterval\",500],[\"StrOnePair\",\"spot:Huobi:spot;spot:OKEX:spot;false;60;5;0;0\"],[\"StrTwoPair\",\"spot:ZB:spot;spot:GateIO:spot;false;60;5;0;0\"],[\"StrThreePair\",\"null\"],[\"StrFourPair\",\"null\"],[\"StrSixPair\",\"null\"],[\"StrFivePair\",\"null\"],[\"ResetChart\",false]]",
"start_time": "2019-07-01 22:00:54",
// Robot status
"status": 4,
"strategy_args": "[[\"TickInterval\",\"Detection frequency (ms)\",\"This is millisecond. Don't set it too small.\",500],[\"StrOnePair\",\"Combination1\",\"Spread Combination\",\"spot:Huobi:spot;spot:OKCoin:spot;false;60;5;0;0\"],[\"StrTwoPair\",\"Combination2\",\"Spread Combination\",\"future:Futures_OKCoin:this_week;spot:OKCoin:spot;false;60;5;0;0\"],[\"StrThreePair\",\"Combination3\",\"Spread Combination\",\"future:Futures_OKCoin:this_week;future:Futures_OKCoin:quarter;true;60;5;0;0\"],[\"StrFourPair\",\"Combination4\",\"Spread Combination\",\"null\"],[\"StrSixPair\",\"Combination6\",\"Combination\",\"null\"],[\"StrFivePair\",\"Combination5\",\"Combination\",\"null\"],[\"ResetChart\",\"whether to clear the previous chart\",\"clear the previous chart\",false]]",
// Configured exchange objects, set trading pair information
"strategy_exchange_pairs": "[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]",
// Strategy ID
"strategy_id": 21337,
// Strategy's last modification time
"strategy_last_modified": "2018-11-29 12:07:58",
// Strategy name
"strategy_name": "Digital currency spread monitoring and analysis",
"summary": "Polling time consuming: 500ms\n`[{\"type\":\"table\",\"title\":\"pair basic data\",\"cols\":[\"ID\",\"NameA - NameB\",\"SymbolA - SymbolB\",\"UpdCycle\",\"isUSD\",\"Collect\"],\"rows\":[[\"0 \",\"Huobi/OKEX\",\"spot/spot\",60,false,\"612ms\"],[\"1 \",\"ZB/GateIO\",\"spot/spot\",60,false,\"501ms\"]]},{\"type\":\"table\",\"title\":\"pair market data\",\"cols\":[\"ID\",\"NameA - NameB\",\"SymbolA - SymbolB\",\"A_Bids1\",\"B_Asks1\",\"Plus\",\"A_Asks1\",\"B_Bids1\",\"Minus\"],\"rows\":[[\"0 \",\"Huobi/OKEX\",\"spot/spot\",10518.02,10525.1,-7.08,10520,10523,-3],[\"1 \",\"ZB/GateIO\",\"spot/spot\",285.68,286,-0.32,285.8,285.85,-0.05]]},{\"type\":\"table\",\"title\":\"pair statistical data\",\"cols\":[\"ID\",\"NameA - NameB\",\"SymbolA - SymbolB\",\"Maximum spread\",\"Minimum spread\",\"Mean positive premium\",\"Mean negative premium\"],\"rows\":[[\"0 \",\"Huobi/OKEX\",\"spot/spot\",0,-3,0,-1.47],[\"1 \",\"ZB/GateIO\",\"spot/spot\",0.03,-0.05,0.03,-0.05]]}]`\n",
// Whether to enable offline alert
"wd": 0
}
},
"error": null
}
}
Lesummary
l'attribut dans les données renvoyées (informations sur la barre d'état du bot; mises en cache pendant 10 secondes; pas les données les plus récentes) a actuellement une limite de quantité de données (données mises en cache); la limite de quantité de données est de 200 KB, et les données excédentaires seront tronquées.GetRobotLogs
l'interface à obtenir (lorsqueGetRobotLogs
obtient les informations de la barre d'état, le champsummary
sont les données les plus récentes).
La description de l'attribut destrategy_exchange_pairs
Prenons par exemple les données suivantes:
[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]
Les premières données60
représente la période de ligne K par défaut définie par le bot est de 1 minute, soit 60 secondes.
[44314,42960,15445,14703]
est l'objet d'échangeeid
configuré pour le bot (selon l'ordre d'ajout).[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]
est la paire de négociation définie pour l'objet d'échange configuré par le bot (dans l'ordre d'addition et en correspondance un-à-un aveceid
).
GetAccount()
renvoie les informations de compte correspondant à laAPI KEY
à la demande du compte de la plateforme de négociation FMZ Quant.
Paramètre Aucune
Valeur de retour
{
"code": 0,
"data": {
"result": {
"username": "littlelittledream",
"level": 0,
"consumed": 3235500000,
"invitation_code": "1545967",
"points": 25,
// The value here, due to precision control, is expressed in integer. To convert it to actual value, you need to divide it by 1e8 (i.e. 10 to the 8th power), and the actual result here is: 65.421
"balance": 6542100000
},
"error": None
}
}