Em transações reais, para saber o status de negociação do robô FMZ Quant no tempo, às vezes precisamos enviar os resultados da transação executada pelo robô para WeChat, e-mail, SMS, etc. No entanto, há centenas de tipos diferentes de informações todos os dias, o que o torna insensível a essas informações, levando ao fracasso da coleta oportuna de informações importantes.
O robô de grupo Dingding é uma função de extensão avançada. Desde que haja uma conta Dingding, você pode usá-lo. Ele pode agregar as informações de terceiros no grupo Dingding para alcançar a sincronização automática de informações. Ele suporta o acesso personalizado do protocolo Webhook e agrega o lembrete, alerta e outras informações no grupo Dingding através do robô FMZ Quant. Três formatos de mensagem e cinco tipos de mensagem são suportados: texto, link e marcação. A mesma mensagem também pode ser enviada para vários grupos Dingding ao mesmo tempo. Veja o link oficial:https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup
Cada robô personalizado criado no grupo Dingding gerará um endereço de gancho exclusivo, chamado endereço WebHook. O grupo Dingding receberá uma mensagem empurrando uma mensagem para o endereço WebHook. Vamos tomar a versão para PC do Dingding como exemplo. Primeiro, clique no sinal
Clique no avatar, selecione Gerenciamento de Robôs, em seguida, selecione Personalizado e clique em Adicionar.
Se ele é usado apenas para lembrete ou alerta, selecione a palavra-chave definida pelo usuário. A palavra-chave que definimos aqui é
Depois de obter o endereço Webhook, podemos enviar as informações para o grupo Dingding enviando uma solicitação HTTP POST para o endereço na estratégia FMZ Quant.
import requests
import json
from datetime import datetime, timedelta, timezone
# Output information to Dingding group
def msg(text):
token ="0303627a118e739e628bcde104e19cf5463f61a4a127e4f2376e6a8aa1156ef1"
headers = {'Content-Type': 'application/json;charset=utf-8'} # Request header
api_url = f"https://oapi.dingtalk.com/robot/send?access_token={token}"
json_text = {
"msgtype": "text", # Message type
"text": {
"content": text
}
}
# Send and print messages
Log(requests.post(api_url, json.dumps(json_text), headers=headers).content)
# Test functions
def onTick():
arr = ['BTC', 'ETH', 'XRP', 'BCH', 'LTC'] # Mainstream digital currencies
# Get the time of East Zone 8
bj_dt = str(datetime.now().astimezone(timezone(timedelta(hours=8))))
bj_dt = bj_dt.split('.')[0] # Time of processing
text = f'{bj_dt}\n' # Define information content
for i in arr: # Loop mainstream digital currency array
exchange.IO("currency", f"{i}_USDT") # Switch trading pairs
ticker = exchange.GetTicker().Last # Get the latest price
if i == 'LTC':
full = ' :'
else:
full = ':'
text = text + f"{i}/USDT{full}${ticker}\n" # Processing information content
msg(text) # Call msg function to output information
# Strategy entrance
def main():
while True: # Enter infinite loop
onTick() # Execute onTick function
Sleep(1000 * 60) # Sleep for one minute
Quando um robô personalizado sincroniza informações, ele pode definir o número de telefone móvel para @ vários membros do grupo. Quando o membro do grupo recebe a mensagem, haverá um lembrete de mensagem @. O lembrete ainda será notificado mesmo se a sessão Não perturbar for definida.
# Output information to Dingding group
def msg(text):
token = "0303627a118e739e628bcde104e19cf5463f61a4a127e4f2376e6a8aa1156ef1"
headers = {'Content-Type': 'application/json;charset=utf-8'} # Request header
api_url = f"https://oapi.dingtalk.com/robot/send?access_token={token}"
json_text = {
"msgtype": "text", # Message type
"text": {
"content": text
},
"at": {
"atMobiles": [
"16666666666", # Phone number of the @
"18888888888" # Phone number of the @
],
"isAtAll": False # Not @ Everyone
}
}
# Send and print messages
Log(requests.post(api_url, json.dumps(json_text), headers=headers).content)
No código acima, escrevemos um caso para obter o preço da moeda digital principal a cada minuto e enviar essas informações para o grupo Dingding: