전보 봇 예.
전보 채널에 메시지를 보내는 방법을 보여주는 간단한 예제. 전보 API 키와 채널 ID가 필요합니다.
API 키를 얻으려면 다음 지침을 따르십시오.
OnStart의 코드는 최근에 로봇과의 상호 작용을 기반으로 ChannelId를 찾으려고 시도합니다. 특정 채널 ID를 알고 있으면이를 매개 변수로 설정하십시오. 좀 이상 하긴하지만, 채널 아이디를 얻는 다른 방법을 찾지 못했습니다.
cBots & amp; 설치 방법 지표.
표시기 또는 cBot을 다운로드하십시오. 다운로드 한 파일을 두 번 클릭하십시오. 이렇게하면 cAlgo에 필요한 모든 파일이 설치됩니다. 왼쪽의 메뉴에서 사용할 표시기 / cbot을 찾으십시오. 실행할 인디케이터 / cBot의 인스턴스를 추가하십시오.
표시기 다운로드 다운로드 한 파일을 두 번 클릭하십시오. 그러면 cTrader에 필요한 모든 파일이 설치됩니다. 차트의 상단 중앙에있는 기능 (f) 메뉴에서 사용자 정의에서 표시기를 선택하십시오.
Shawn_Mapilot - 2016 년 3 월 18 일 06:46
API 키와 채널 ID를 입력하고 로봇을 시작했지만 순간적으로 멈췄습니다. 왜 그런가?
Shawn_Mapilot - 2016 년 3 월 18 일 07:30.
나는 로봇이 즉시 멈추는 문제를 발견했다. 이제 메시지를받는 데 문제가 있습니다. 내 채널로 전송되지 않습니다.
Shawn_Mapilot - 2016 년 3 월 18 일 07:32
그것을, 감사합니다 :)
Shawn_Mapilot - 2016 년 3 월 18 일 08:03
hedgebitcoin - 2016 년 5 월 5 일 05:59.
어쩌면 이것이 당신을 도울 것입니다. 행운을 빕니다 - fx4btc / 2016 / 05 / telegram-bot-tradingview-charts /
Spotware Systems Ltd. 에서 제공하는 서비스는 미국 시민과 거주자에게는 제공되지 않습니다. 우리 웹 사이트에있는 정보는 미국 시민이나 주민들을 구하는 것이 아닙니다.
MQL5에서 전보용 봇을 만드는 법.
소개.
2016 년 4 월 12 일 샌프란시스코에서 개최 된 F8 컨퍼런스에서 Facebook은 메신저에 봇용 API를 통합한다고 발표했습니다. 같은 날 Telegram Bot Platform의 주요 업데이트가 릴리스되었습니다. 버전 2.0은 그 기능에 유쾌하게 놀랐습니다. ICQ 시대에 인기가 있었던 봇들이 이제 복귀를 경험하고있는 것 같습니다. 개발 봇의 새로운 단계에서는 사려 깊은 기능, 프로그래밍을위한 개방형 인터페이스 및 멀티미디어 지원이 제공되었습니다. 기본적으로, 그들은 당신이 뭔가를 찾고, 보고 구입할 때 바꿀 수없는 모든 조건을 가지고 있습니다.
이 기사는 MQL5에서 Telegram 용 봇을 만드는 단계별 설명서입니다. 그래서 "봇"이란 무엇입니까? 봇 ( "로봇"에서 줄임)은 메시지 교환을위한 전보의 특별 계정입니다. 봇은 클라이언트 측에서 작동하고 Bot API의 일부인 특수 명령 세트를 사용하여 텔레 그램 서버와 상호 작용합니다. 봇 생성을 진행하기 전에 Telegram을 다운로드하여 로그인하십시오. 등록은 전화 번호와 연결되어 있지만 사용자 이름으로도 검색 할 수 있습니다. 지금 모든 봇의 폴더에 대해 알게 될 때입니다.
새로운 봇 등록.
특수 로봇 BotFather가 로봇 등록 및 설정을 담당합니다. 우리는 검색 엔진을 통해 그것을 발견 할 것이다. 연락처 목록에 추가 한 후 / start 명령을 사용하여 통신을 시작합니다. 응답으로 그림 1과 같이 사용 가능한 모든 명령 목록이 전송됩니다.
그림 1. BotFather 명령 목록입니다.
/ newbot 명령을 사용하여 새로운 봇 등록을 시작합니다. 우리는 두 가지 이름을 생각해 내야합니다. 첫 번째 것은 모국어로 설정할 수있는 봇의 이름입니다. 두 번째 것은 "bot"접두어로 끝나는 라틴어의 bot 이름입니다. 결과적으로 API를 통해 봇과 작업하기위한 액세스 키인 토큰을 얻을 수 있습니다. 등록 예가 그림 2에 나와 있습니다.
그림 2. 새로운 봇 등록.
원하는 경우 매개 변수를 수정할 수있는 항목이 거의 없습니다. 인라인 모드 설정을 유지하는 것이 좋습니다. 그렇지 않으면 봇이 작동하지 않습니다. 나는 화장품의 품질만을 설정하는 것이 좋습니다 :
/ setcommands - 지원되는 명령 목록을 설정합니다. 이 목록은 채팅 창에 "/"기호를 입력 할 때 툴팁으로 사용자에게 표시됩니다. / setuserpic - 프로필 그림을 설정합니다. 하나도 없으면 봇은 충분히 표현할 수 없습니다. / setdescription - 봇이 Messenger에 추가되었을 때 인사말로 표시되는 텍스트입니다. 일반적으로 봇의 목적을 설명하는 문장은 거의 없습니다.
따라서 새로운 봇이 등록됩니다. 이제는 사용할 수있는 모드에 대해 논의 해 보겠습니다.
봇의 동작 모드.
텔레 그램은 봇과 사용자 사이에 상호 작용 방식이 3 가지입니다. 첫 번째 - 비공개 채팅. 모든 사용자는 요청을하고 응답을 수신함으로써 그림 3과 같이 서로 독립적으로 봇과 통신합니다.
그림 3. 봇과 개인 채팅.
사용자는 봇에 메시지를 보냅니다. 이 파일은 24 시간 이상 서버에 저장되지 않으며 나중에 제거됩니다. 봇은 이러한 메시지를 요청하고 메시지에 응답 할 시간이 있습니다. 이것은 봇이 동작 할 주 모드입니다.
두 번째 모드에는 그룹 채팅이 포함됩니다. 이 경우 그룹의 구성원이 보낸 메시지는 전체 그룹에서 볼 수 있습니다 (그림 4).
그림 4. 그룹 채팅에서 봇.
봇과 관련하여 / setjoingroups 명령을 사용하여 봇을 그룹에 참여시킬 수 있습니다. 봇이 그룹에 추가되면 / setprivacy 명령을 사용하여 모든 메시지를 받거나 심볼 팀 "/"의 기호로 시작하는 옵션 만 설정할 수 있습니다. 솔직하게 말하면, 나는이 모드에서 한 번의 봇 약속 만 생각할 수있었습니다. - 이후 분석을위한 메시지 통계.
세 번째 모드는 채널 작동에 중점을 둡니다. 전보 채널은 무제한의 구독자를 지원하는 광범위한 청중을 대상으로 메시지를 전송하기위한 계정입니다. 채널의 중요한 특징은 사용자가 뉴스 피드에 의견과 좋아하는 것을 남길 수 없다는 것입니다 (단방향 연결). 채널 관리자 만 메시지를 생성 할 수 있습니다 (그림 5).
그림 5. 채널 관리자로 봇.
봇을 관리자 목록에 추가 할 수도 있습니다. 따라서 채널은 거래 신호를 제공하는 데 이상적인 도구입니다. 조금 후에 우리는 표준 MACD 지시자로부터 신호를 발행하는 간단한 봇을 작성할 것입니다. 메신저의 "새 채널"메뉴를 통해 새로운 공개 채널을 만들 수 있습니다. 채널 관리자에게 봇을 추가하는 것을 잊지 마십시오. 이는 채널의 속성 창을 통해 이루어집니다. 우리가 프로그래밍을 진행할 수 있도록 모든 준비가 끝났습니다.
메시지 스트림 처리.
이 기사를 쓰는 동안 메시지 처리 루틴을 수행하고 봇의 논리에 집중할 수있는 클래스를 만드는 것이 목표였습니다. 결과적으로 작업을위한 최소 기능을 구현하는 CCustomBot 클래스가 작성되었습니다.
서버와의 통신은 WebRequst 기능을 사용하는 POST 요청을 통해 발생합니다. 모든 명령에는 고유 한 URL이 있습니다.
api. telegram. org/bot< TOKEN & gt; / METHOD_NAME.
TOKEN은 등록 된 봇의 토큰입니다. METHOD_NAME - 지원되는 메소드의 목록.
서버의 응답은 JSON 형식으로 도착하므로 좋은 JSON 파서가 필요합니다. 네이티브 파서 JSON 직렬화 및 비 직렬화를 적용했습니다. 그가 성취 한 작업에 대해 Alexey (sergeev)에게 감사드립니다. 또한 일부 매개 변수를 표시하는 패널도 적용됩니다. 코드베이스에서 가져온 CComment 클래스가이 작업에 적합했습니다. 범용 클래스를 구현하기 위해 Bot API에 대한 문서에서 클래스 공용 메소드의 이름을 빌려 왔습니다. 클래스에서 구현할 수있는 메소드는 다음과 같습니다.
이 기능을 사용하는 방법을 이해하기 위해 프로그래밍에 대해 자세히 알아 보겠습니다.
매 요청마다 토큰이 전송되므로 무엇보다 신뢰도를 확인하는 GetMe 함수가 구현됩니다. 이 검사는 EA 초기에 수행하고 실패한 경우 사용자에게 알리는 것이 좋습니다.
성공하면 GetMe는 0을 반환하고 Name () 메서드를 통해 bot 사용자 이름을 확인할 수 있습니다. 이 이름은 조작에 사용되지 않습니다. 그러나 정보를 얻기 위해 패널에 표시됩니다. telegram. me/lot;botname>와 같은 주소입니다. 메신저의 웹 버전을 사용할 수 있으며 귀하의 봇을 광고하기위한 링크 역할을합니다. OnInit에서 토큰을 확인하는 EA는 다음과 같습니다.
GetUpdates.
주 함수 GetUpdates는 서버에 저장된 메시지 배열을 읽습니다. 타이머에 의해 호출되어야합니다. 타이머를 업데이트하는 기간은 서버 과부하를 피하기 위해 1 초 미만으로 설정하면 안됩니다.
이 함수를 살펴 보겠습니다. 호출 될 때 사용자로부터받은 읽지 않은 모든 메시지를 읽고 파싱합니다. 이러한 메시지 중 하나의 예가 아래에 나와 있습니다.
avaticks 사용자 이름을 가진 사용자가 / start 명령을 봇에 보냈습니다. 요점은 그러한 메시지를 저장하고 앞으로 메시지에 응답하는 것입니다. 채팅 번호 chat [id]는 고유 한 식별자입니다. 다양한 기기를 통해 봇과 통신하는 동일한 사용자는 서로 다른 채팅 식별자를 사용합니다. 이 매개 변수는 채팅 목록을 작성하기위한 고유 키로 적합합니다. 봇이 작동하는 동안 봇은 채팅 배열을 누적하여 각각의 마지막 수신 메시지를 업데이트합니다. 응답 한 경우이 메시지가 처리되고 done 플래그를 설정할 수 있습니다. 채팅 유형도 알려져 있습니다. 비공개 또는 그룹 일 수 있습니다.
자신의 봇을 작성하려면 CCustomBot에서 상속하고 클래스의 ProcessMessage 가상 함수를 다시 결정해야합니다. 이 함수는 작업 논리를 구현하기 위해 제공됩니다. Telegram 문서 에서처럼 본격적인 로봇은 "/ start"및 "/ help"의 두 명령에 응답하는 방법을 알아야합니다. 그들에게 반응 할 첫 번째 봇을 작성해 봅시다.
달성 된 결과는 그림 6에 나와 있습니다.
그림 6. 최소한의 명령 집합을 가진 봇.
키보드로 작업하기.
봇용 사용자와의 대화식 커뮤니케이션을 위해 개발자는 "키보드"라는 아이디어를 내놓았습니다. 채팅 할 때마다 메시지를 보낼 때 미리 선택한 키 세트가있는 "키보드"를 표시 할 수 있습니다. 키를 누를 때 사용자는 텍스트가 표시된 메시지를 보냅니다. 이렇게하면 봇과 사용자 간의 상호 작용이 크게 단순화됩니다.
이 클래스에는 키보드 작업을위한 세 가지 기능이 있습니다. 첫 번째 함수는 키보드의 객체를 만듭니다.
두 번째 기능은 키보드를 숨 깁니다.
세 번째 함수는 작은 형식의 패널을 보낼 수 있습니다. 그 유형은 로봇이 텍스트 형식으로 응답을 기다리고 있음을 나타냅니다 (키보드는 표시되지 않음).
이제 우리는 이러한 기능이 어떻게 사용되는지 분석하는 것으로 진행합니다.
문자 보내.
키보드 자체를 표시하거나 숨길 수는 없습니다. 메시지와 함께 작업이 전송됩니다. 채팅 메시지를 보내기위한 SendMessage 함수는 다음과 같습니다.
키보드는이 경우 선택적입니다. MQL 프로그램에서 간단한 텍스트 메시지를 보낼 수 있습니다. 내 의견으로는, 이 함수는 네이티브 SendNotification보다 흥미 롭습니다. 첫째, 우리는 메시지를 더 자주 보낼 수 있습니다 (초당 약 1 회). 둘째, HTML 형식이 지원됩니다. 그 외에도 이모지를 보내는 기능은 심각한 보너스입니다.
Тelegram은 여기에서 볼 수있는 표에서 많은 이모티콘 문자를 지원합니다. 보시다시피, 대부분의 이모티콘 코드는 1F300 - 1F700 범위 내에 있습니다. 이들의 비트는 MQL5에서 허용되는 2 바이트 문자열을 능가합니다. 두 자릿수 만 남기고 더 높은 자릿수를 제거하면 얻은 범위 (F300 - F700)는 유니 코드 표에서 특정 용도로 예약 된 영역 (E000- F8FF)에 해당합니다. 이렇게하면 이모티콘 보내기에 더 낮은 비트 2 개를 사용할 수 없습니다. 코드가 U + 1F642 인 고전 이모티콘이 포함 된 문자열 메시지는 다음과 같습니다.
실제로 텍스트 인 키에 대해서도 마찬가지입니다. 이모티콘을 키에 사용하지 못하게하는 요소는 없습니다. 이벤트 처리기로 세 개의 키를 표시하는 샘플을 작성해 보겠습니다.
결과적으로 그림 7과 같이 키보드로 메시지를 얻게됩니다.
그림 7. 키보드로 메시지.
이제 우리는 RadioButton 및 CheckBox 컨트롤의 아날로그를 구현하려고합니다. 예를 들어 세 가지 옵션 중 하나를 선택하고 특정 옵션을 사용하거나 사용하지 않도록 설정해야합니다. 변경 사항은 클래스에만 영향을 미치므로 이전 예제의 나머지 EA 코드는 동일하게 유지됩니다.
결과적으로 우리는 다음 창을 띄게됩니다 (그림 8).
도 8. RadioButton 및 CheckBox 컨트롤
여기서 사용 된 그림이 더 나은 가시성을 가진 설정을 제공한다는 것을 알 수 있습니다. 이러한 컨트롤 외에도 모든 하위 메뉴에서 탐색 기능이있는 계층 적 메뉴를 쉽게 구현할 수 있습니다. 모든 기능은 사용자가 구현하고 구현할 기능에 따라 달라집니다.
채널에 메시지를 게시하기로 결정한 경우 두 번째 옵션 인 SendMessage가 있습니다.
이 함수의 결과는 아래 그림 9에 표시됩니다.
멀티미디어 작업.
봇은 사진, 오디오 및 비디오 파일, 음성 메시지, 스티커 및 위치 좌표를 교환 할 수 있습니다. 이 기사를 쓰는 시점에서 연락처 데이터와 초대장을 교환하는 기능이있는 Bot API 2.0이 출시되었습니다. 제공된 전체 목록에서 사진 교환 옵션 만이 관련성을 유지합니다.
수업은 두 가지 응용 방식으로 사진을 보낼 기회를 구현했습니다.
사진을 보내는 코드의 예 :
여러 사용자에게 사진을 보내거나 동일한 사진을 여러 번 보내야하는 경우가있을 것이라고 생각합니다. 이 경우 한 번 사진을 업로드하고 사진을 다시 보낼 때 SendPhoto 함수의 두 번째 옵션과 함께 photo_id 식별자를 적용하는 것이 더 합리적입니다.
SendChartAction.
사용자의 응답을 처리하고 거의 결과를 제공 할 준비가되었다고 상상해보십시오. 응답을 만드는 데 몇 초가 걸릴 수 있으므로 사용자가 이미 처리 중이라는 사실을 사용자에게 알리는 것이 좋습니다. 그리고 이것은 사건들이 사용되는 것입니다. 예를 들어, 차트 스크린 샷이 사용자에게 전송되도록 구성되어있는 동안에는 "사진 보내기"이벤트를 보낼 수 있습니다. 이것은 SendChatAction을 통해 이루어집니다.
봇의 예.
첫 번째 로봇 Telegram_Bot_EA는 계정 잔액, 견적 및 차트 스크린 샷에 대한 정보를 얻을 수 있습니다. 그것이 어떻게 작동하는지이 비디오에 표시됩니다.
두 번째 로봇 Telegram_Search_EA는 MQL5에 검색 결과를 보냅니다. 다음 비디오를보고 호기심을 느껴 실제로 작동하는지보십시오.
세 번째 로봇 인 Telegram_Signal_EA는 채널의 MACD 표준 표시기에서 신호를 게시합니다. MACD를 원하는 표시기로 변경하고이 코드를 용도에 맞게 사용하는 것이 쉽습니다.
결과적으로 그림 9와 같은 메시지가 수신됩니다.
그림 9. MACD 표시기 신호.
결론.
자신의 봇에 대한 Yandex. AppMetrika 기반에 분석을 연결하려는 사용자는 Botan 소스를 사용할 수 있습니다. 서비스의 아이디어는 사용자로부터받은 메시지를 보내고 세그먼테이션, 추적, 일대일 분석 등과 같은 지표를 요청하는 것입니다. Messenger를 종료 할 필요가 없습니다. 통계는 차트의 형태로 특수 봇에 의해 보내지기 때문에, 보다 자세한 보고서는 웹 사이트에서 볼 수 있습니다.
이 기사가 귀하가 텔레 그램을 거래에 적용 해주기를 바랍니다. Bot API에 대한 문서에서 이미 제공 되었기 때문에 모든 세부 사항을 다루는 것이 내 목표는 아닙니다. 이 기사에 첨부 된 코드는 MetaTrader 4 및 MetaTrader 5와 같은 두 플랫폼에서의 거래에 적용됩니다.
MetaQuotes Software Corp. 에서 러시아어로 번역
Comments
Post a Comment