MQLプロジェクトでJSON Data APIを使用する
序文と背景
外部データをミックスすることで、アルゴリズム取引における意思決定が改善される可能性があります。API は、異なるシステム間でのデータ転送を可能にし、トレーダーが他のブローカーや銀行からのリアルタイム市場データ、経済カレンダーだけでなく経済指標、ニュースフィードやソーシャル感情分析、オンライン人工知能ツール、オンライン予測システムなど、API サービスで利用できる想像できるあらゆるものなど、さまざまなデータソースにアクセスできるようにします。 この記事では、このツールの最適な使い方を紹介します。
APIデータをエキスパートアドバイザー(EA)に使用することで、取引市場に対する新たな洞察を得ることができ、十分な情報に基づいた意思決定、よりダイナミックな取引戦略の作成、より適切なリスク管理が可能になります。APIデータを使用して、トレーダーは高度なテクニカル指標と洗練されたチャートツールを使用して、取引シグナルの精度を向上させることができます。この統合は、MetaTraderのようなプラットフォームの機能を拡張し、市場のセンチメント分析のための自然言語処理(NLP)やファンダメンタルデータやニュースへのアクセスのような貴重なマーケットインテリジェンスへのアクセスを提供します。
Ziwox APIの紹介
Ziwoxは、無料のAPIサービスを含むFXデータ分析システムです。このAPIは、価格、テクニカル指標、センチメント分析、ファンダメンタルデータを含む包括的な市場データをトレーダーに提供します。メジャーおよびマイナーのFXペアをサポートし、ファンダメンタル通貨バイアス、AIベースの予測、リテールトレーダー統計、COTレポート、テクニカルサポートとレジスタンス、市場センチメント(リスクオンとリスクオフ)、債券利回り、VIX指数などの重要な指標を提供します。この豊富なデータセットにより、テクニカル、ファンダメンタルズ、センチメントの見識を組み合わせた多面的な市場分析が可能となり、革新的なツールが生み出されます。
このデータの面白いところは、価格やテクニカルデータだけでなく、人工知能や実際のアナリストが作成したデータにもアクセスできるようになることです。含まれているデータには、アナリストチームによるFXペアのファンダメンタル分析、NLP(自然言語処理)システムによるFXニュースセンチメントとしての出力、AIによる価格予測などがあります。
APIは使いやすく、簡単な登録でAPIキーを生成し、JSONまたはテキスト形式のデータにアクセスできます。このアクセシビリティは、その広範なデータカバレッジとともに、取引戦略を強化し、カスタム指標や自動取引システムを開発するための貴重なツールとなっています。
詳細:APIとは何か?
APIは、定義とプロトコルのセットを使用して、2つのソフトウェアコンポーネントが互いに通信できるようにするメカニズムです。例えば、気象庁のソフトウェアシステムには毎日の気象データが含まれています。スマホの天気予報アプリはAPIを介してこのシステムと「会話」し、スマホに毎日の天気更新を表示します。
APIとはApplication Programming Interface(アプリケーションプログラミングインターフェイス)の略です。インターフェイスは、2つのアプリケーション間のサービス契約と考えることができます。この契約は、リクエストとレスポンスを使用して両者がどのように通信するかを定義します。APIのドキュメントには、開発者がこれらのリクエストとレスポンスをどのように構成するかについての情報が含まれています。
APIのアーキテクチャは通常、クライアントとサーバーという観点から説明されます。リクエストを送信するプログラムをクライアント、レスポンスを送信するプログラムをサーバーと呼びます。つまり、天気の例では、オフィスの天気データベースがサーバーで、モバイルアプリがクライアントとなります。
APIレスポンスの形式
APIのレスポンスやデータ交換には様々な形式があります。APIがどのような目的で作られ、他のアプリケーションとどのような関係にあるかによって、形式は変わります。これらの応答は、JSON、HTML、TEXT、XML、またはCSV標準形式です。
この標準モデルを簡単に紹介しましょう。
1. JSON: JSONは軽量で人間が読めるデータ交換形式であり、そのシンプルさと柔軟性からAPIレスポンスに使用されています。データをキーと値のペアとして表現し、さまざまなプログラミング言語での解析や操作を容易にします。
以下はJSONレスポンスの例です。
"id":5687,
"source": "oanda",
"symbol":"EURUSD",
"price":"1.08562",
"high":"1.09211",
"low":"1.08154"
}
2.XML:XML(eXtensible Markup Language)は、APIレスポンスで構造化データを表現するために広く受け入れられているもう一つの形式です。JSONとは異なり、XMLはタグを使用して階層的なデータ構造を定義し、より正確で構造化された表現を提供します。WebデザインやWeb構造におけるHTMLタグのようなものです。JSONはそのシンプルさと読みやすさから好まれているが、XMLは企業システムやレガシーな統合など、特定の分野では依然として適切です。
以下は、Factory News APIのXMLの例です。
<title>German Trade Balance</title>
<country>EUR</country>
<![CDATA[ 07-07-2024 ]]> </date>
<![CDATA[ 8:30am ]]>
</time>
<forecast><![CDATA[ 19.9B ]]></forecast>
<previous><![CDATA[ 22.1B ]]></previous>
<url>
<![CDATA[ https://www.forexfactory.com/calendar/125-eur-german-trade-balance ]]>
</url>
3. その他の形式:JSONとXMLに加えて、APIは、ドメイン固有の要件と規約に応じて、プレーンテキスト、プロトコルバッファ、またはファイルなどの他のレスポンス形式を使用することができます。各形式には、効率やパフォーマンスから人間の読みやすさや適応性まで、それぞれの利点と用途があります。
JSON形式は、そのシンプルさ、読みやすさ、使いやすさから、Web開発において人気のある選択肢となっています。幸いなことに、問題のサービスもデータ交換にこのモデルを使用しています。
環境設定と開発
MQL5でJSON APIを使用する環境を構築するには、いくつかの手順を踏む必要があります。
MQL5は、MetaTrader 5取引プラットフォーム用の取引ロボット、テクニカル指標、スクリプト、関数ライブラリを作成するためのプログラミング言語です。
ここでは、MQL5でJSON APIを使用するための環境を構築する方法について、一般的なガイドを示します。
- MQL5の基本を理解する:MQL5プログラミング言語の基礎と、取引や金融市場に関連する基本的な概念を十分に理解していることを確認してください。言語の構文と関数を理解するために、MQL4ドキュメントとMQL5 リファレンスに精通してください。
- JSONライブラリを選択する:MQL5にはJSON解析のネイティブサポートがないため、サードパーティのライブラリを使用する必要があります。これらのライブラリは、MQL5コミュニティやGitHubなどのフォーラムで見つけることができます (JSON SerializationおよびJSON Parser)。
- JSONライブラリをダウンロードしてインストールする:選択したJSONライブラリをダウンロードし、ライブラリが提供するインストール手順に従います。これには通常、ライブラリファイル(mqhまたはmq5)をMetaTraderインストールのIncludeフォルダに配置する必要があります。
- ライブラリをコードにインクルードする:MQLスクリプトまたはEA(エキスパートアドバイザー)の最初に、#includeディレクティブを使用してJSONライブラリをインクルードします。
- HTTPリクエストをおこなう:JSON APIとやり取りするには、HTTPリクエストをおこなう必要があります。一般的な選択肢としては、WinHTTPやWebRequestがあります。他のタイプのHTTP利用が必要な場合は、ニーズに合ったHTTPライブラリをダウンロードしてインクルードします。
- HTTPレスポンスをファイルに保存する:これらのAPIのほとんどはリクエスト数に制限があり、APIリクエストの制限を懸念しているため、リクエストされたデータをファイルに保存し、不必要なリクエストを繰り返す代わりに保存したファイルを使用する方がよいです。
- JSONレスポンスを解析する:APIからレスポンスを受け取ったら、JSONライブラリを使用してJSONデータを解析します。具体的な構文は、使用するライブラリによって異なります。
- ミキシング:JSONデータを分類した後、モデル、戦略、またはタイプに従って、目的のデータをプログラムに組み合わせることができます。
//Use this type of file include if the file is in MQL include follder #include <JAson.mqh> // Use this type of file include If this file is next to your EA file/follder #include "JAson.mqh"
API関数コードのための構造体
MQL5はHTTPリクエスト用のWebRequest関数を提供し、APIとのインタラクションを可能にします。
Webrequestの詳細については、Webrequestドキュメント >WebrequestおよびHTTPdata exchangeを参照してください。
以下は、APIアドレスからHTTPのGETメソッドを使用してJSONデータをリクエストするMQLコードの例です。
// Required variables string cookie=NULL, headers="", apikey="your api key", value1="value 1", value2="value 2"; char post[],result[]; int res; string URL = "https://www.example.com/API?apikey="+apikey+"&data1=value1&data2="+value2; // Rest API address ResetLastError(); // Reset ast error // HTTP request via MQL Webrequest, GET method with apikey, value1, and value2 and 2000 millisecond timeout res=WebRequest("GET", URL, cookie, NULL, 2000, post, 0, result, headers); if(res==-1) // WebRequest error handling { int error = GetLastError(); if(error==4060) Print("Webrequest Error ",error); else if(error==5203) Print("HTTP request failed!"); else Print("Unknow HTTP request error("+string(error)+")! "); LastHTTPError=error; } else if (res==200) // The HTTP 200 status response code indicates that the request has succeeded { Print("HTTP request successful!"); // Use CharArrayToString to convert HTTP result array to a string string HTTP_Result = CharArrayToString(result, 0, 0, CP_UTF8); Print(HTTP_Result); }
このコードでは、指定されたAPI URLにGETリクエストを送信し、MQL4でAPIコールを簡単に統合できることを示しています。
ケーススタディ:APIデータアクセスで成功するMQL4 EA
Ziwox Forex Data APIを使用してファンダメンタルとリアルタイムのAI予測データを利用した自動売買システムを作成する方法
この記事では、Ziwox Forex Data APIを使用して、MetaQuotes Language (MQL)でファンダメンタルズとリアルタイムのデータベースのツールを構築する方法を探ります。それらのAPIには多くの情報があります。私たちのプロジェクトにはAI予測を選びました。
Ziwox端末のAI予測システムは、同社の情報によると、ニュース、経済カレンダーデータ、金利とその変動、中央銀行の金融経済政策、市場センチメント、外国為替通貨の強さ、COTデータ、リテールトレーダーのデータなどのデータの集約に基づいています。その結果、市場全体が分析され、この予測が貴重なデータとして利用できるようになります。
APIデータの取得、JSONデータのファイルへの保存、JSONレスポンスの解析、そして自動化されたEAを作成するためにこれらの情報を使用するプロセスを説明します。
私たちの計画は、EAを作成し、テクニカルシグナルとして単純なMA戦略を使用し、AIフィルターとしてAI予測が私たちの方向にあれば取引することです。
ベストを尽くしましょう。
手順1:登録してAPIキーを生成する
Ziwox Forex Data APIを使い始めるには、以下の手順に従います。
1. Ziwox Terminalで登録します。
2. 情報をフォームに入力し、規約とポリシーを読んで同意し、[私はロボットではありません]をクリックし、[Create New Account]をクリックします。
3. メールボックスに確認メールが送信されます。メールを確認します。
3. こちらでアカウントにログインします。こちらでプロファイルページの[API]タブに移動し、緑色の生成ボタンをクリックしてAPIキーを生成します。
4. APIキーを生成することで、Ziwox APIデータにアクセスできるようになります。生成されたAPIコードをコピーして、プロジェクトで使用します。
手順2:APIの構造を理解する
APIのリンク構造は以下の通りです。
https://ziwox.com/terminal/services/API/V1/fulldata.php?expn=ziwoxuser&apikey={API_KEY}&apitype={REQUEST_TYPE}&pair={PAIR}
- {API_KEY}:最後の手順で使用した固有のAPIキー
- {REQUEST_TYPE}:JSONまたはテキスト形式のレスポンス
- {PAIR}:EURUSD,USDJPY,GBPUSD,XAUUSD,WTI...のような接頭辞や接尾辞のない標準的な形式で希望のFXペアを指定
手順3:API構造をテストする
次にAPIリンク構造をチェックし、Ziwox APIにサンプルをリクエストします。手順2のAPIリンクを使用し、パラメータを編集してブラウザを開き、アドレスバーにAPIリンクを入力してEnterを押すだけです。
APIリンクを正しく編集すると、HTTPレスポンスは次のようになります。
APIキーが正しくない場合、次のようなエラーレスポンスが返されます。
{
"status": "error",
"desc": "invalid api key"
}
または、アセット名を間違って入力した場合、このような応答が表示されることがあります。
{
"status": "error",
"desc": "invalid asset name!!"
}
手順4:HTTP APIリクエスト関数を実装する
手順3に成功したら、この部分を自動化する関数を実装する準備ができました。このコードを確認してください。
datetime LastWebRequest = 0; // use this datetime var for limit failed request API bool GetAPI(string symbolname, string apikey, string filename) { Print("Get API Update"); bool NeedToUpdate = false; // Check if the API data file available if(FileGetInteger(filename,FILE_EXISTS,true)>=0) { // Check the latest update time from file modify date time if(TimeLocal()-(datetime)FileGetInteger(filename,FILE_MODIFY_DATE,true)>900) // update data every 15 min becasue of API call rate limitation NeedToUpdate = true; } else NeedToUpdate = true; if(NeedToUpdate && TimeLocal()-LastWebRequest>300) // retry failed API request every 5 min to avoid firewall IP block { string cookie=NULL,headers; char post[],result[]; int res; string URL = "https://www.ziwox.com/terminal/services/API/V1/fulldata.php?expn=ziwoxuser&apikey="+apikey+"&apitype=json&pair="+symbolname; ResetLastError(); int timeout=5000; res=WebRequest("GET", URL, cookie, NULL, timeout, post, 0, result, headers); if(res==-1) { LastWebRequest = TimeLocal(); int error = GetLastError(); if(error==4060) Print("API data Webrequest Error ",error, " Check your webrequest on Metatrader Expert option."); else if(error==5203) Print("HTTP request for "+symbolname+" Data failed!"); else Print("Unknow HTTP request error("+string(error)+")! "+symbolname+" Data"); return(false); } else if(res==200) { LastWebRequest = TimeLocal(); string HTTPString = CharArrayToString(result, 0, 0, CP_UTF8); Print("HTTP request for "+symbolname+" Data successful!"); Print(HTTPString); if (StringFind(HTTPString,"invalid api key",0)!=-1) { Alert("invalid api key"); return(false); } // Store the API data into a common folder file int filehandle=FileOpen(filename,FILE_READ|FILE_SHARE_READ|FILE_WRITE|FILE_SHARE_WRITE|FILE_BIN|FILE_COMMON); if(filehandle!=INVALID_HANDLE) { FileWriteArray(filehandle,result,0,ArraySize(result)); FileClose(filehandle); } } } return(true); }
この関数は、認証APIキー(apikey)、アセット名(symbolname)、ファイル名(filename)を入力として受け取ります。apikeyとsymbolnameをurlに埋め込み、APIリクエストリンクのプリペアをおこないます。
次に、Webrequest関数を使用して、前の手順でおこなったのと同様のHTTPリクエストをおこない、最後にサーバーからのレスポンスを取得して、関連情報をfilenameという名前のファイルに格納します。
このようにAPI関数を呼び出します。
string APIfilename = symbolname+"_API_Data.json"; // API store file name string APIKey = "76thfd67a6f867df7"; // Our unic API Key, change it with your API Key string SymbolRequest = "EURUSD"; // Symbol request, without prefix or suffix string APIJSON[]; bool APIGET = GetAPI(SymbolRequest, APIKey, APIfilename);
手順5:JSONデータの解析
手順3で見たように、APIから受け取ったデータにはデータの配列が含まれています。このデータの詳しい説明は下の表で見ることができます。
JSONオブジェクト名 | データ型 | 詳細 |
---|---|---|
Symbol | string | 同じ資産/銘柄名を返す |
Last Price | number | 資産の最終価格 |
digits | number | 資産価格の桁数 |
Base | string | ペアのベース名 |
Quote | string | ペア名 |
Base Fundamental Bias | string | 基軸通貨のファンダメンタルズバイアスまたはファンダメンタルズアウトルック |
Base Fundamental Power | string | 基本バイアスパワー:Week、Moderate、Strong |
Quote Fundamental Bias | string | 通貨のファンダメンタルズバイアスまたはファンダメンタルズアウトルック |
Quote Fundamental Power | string | ファンダメンタルバイアスパワー:Week、Moderate、Strong |
Fundamental Bias | string | アセットファンダメンタルバイアス、すなわち資産の長期的な基本的見通し(強気または弱気) |
Fundamental Power | string | 資産のファンダメンタルパワー:Week、Moderate、Strong |
Fundamental Driver | string | 50=中立、50より大きければ強気、小さければ弱気 |
AI Bullish Forecast | Percentage | 資産価格の強気予想(数字が大きいほど強気) |
AI Bearish Forecast | Percentage | 資産価格の弱気予想(数字が大きいほど弱気) |
Retail Long Ratio | Percentage | リテールトレーダー |
Retail Long Lot | number | リテールトレーダー ロングロット(注文数量) |
Retail Long Pos | number | リテールトレーダー数 ロングポジション |
Retail Short Ratio | Percentage | リテールトレーダーショート率 |
Retail Short Lot | number | リテールトレーダー ショートロット(注文量) |
Retail Short pos | number | リテールトレーダー数 ショートポジション |
Base COT NET | number | 基準通貨のCOTネットポジション |
Base COT change | number | 基準通貨のCOTネットポジション推移(週次) |
Quote COT NET | number | 気配通貨のCOTネットポジション |
Quote COT change | number | 気配通貨のCOTネットポジション推移(週次) |
COT chng Ratio | number | 大口投機筋のネットポジション変化率(正の数=ロングセンチメント、負の数=ショートセンチメント) |
Risk Sentiment | string | 市場リスクセンチメント(Risk-ON、Risk-OFF、MIX) |
D1 Trend | string | テクニカルデータ、日足トレンド、買いまたは売り |
D1 RSI | number | 指標データ、日足RSI指標値 |
D1 Stoch | number | 指標データ、日足ストキャスティクス指標値 |
cci | numbers | CCI指標値 |
cci signal | string | CCIシグナル |
supports | numbers | 資産支持レベル |
resistance | numbers | 資産の抵抗レベル |
pivot | numbers | ピボットポイント/資産のレベル |
VIX Value | number | VIX、ボラティリティインデックス値 |
VIX Direction | number | VIXセンチメントの方向性、上向き=恐怖とリスク相場、下向き=強欲相場 |
VIX Buy driver | number | プラス=貪欲な市場 |
VIX Sell driver | number | 負の数字=恐怖とリスクの高い市場 |
Base Bond | number | 基準通貨の債券利回り値 |
Base Bond chg | number | 基準通貨 債券利回り |
Quote Bond | number | 気配通貨の債券利回り |
Quote Bond chg | number | 気配通貨 債券利回り 価値変動 |
US10Y | number | 米国10年債利回りの価値 |
US10Y chg | number | 上半期US10Yの値動き |
Yield Driver | number | 正の数は基準に有利、負の数は気配に有利 |
Allow To Trade | boolian | Ziwoxの提案、取引は止めた方が良い |
Stop Reason | String | 取引停止を提案する場合の理由 |
riskriversal | number | この資産のリスク反転価値(PUT/CALL値の決定) |
cesi | number | CESIの値 |
yielddiff | number | 基準通貨利回り - 為替相場利回り |
banksposition | number | 銀行機関のポジション比率 |
macrofundamental | number | マクロの経済価値(正の数値は強気、負の数値は弱気) |
longtermsentiment | number | 長期的な資産センチメント、経済、政治... |
seasonal | Percentage | 季節的データから見た資産の増減の可能性 |
このケーススタディ/例では、弱気/強気のAI予測を使用します。 さて、この関数を設計するために、JSONライブラリによってファイルに保存されたデータ(手順4)を読み込み、必要なものを抽出します。
その関数は次のようなものです。
#include "JAson.mqh" // include the JSON librery in our project CJAVal JsonValue; void JsonDataParse(string filename, string &_APIJSON[]) { bool UpdateData = false; for (int arraIn=0; arraIn<ArraySize(APIJSON); arraIn++) APIJSON[arraIn]=""; if(FileGetInteger(filename,FILE_EXISTS,true)>=0) { int FileHandle =FileOpen(filename,FILE_READ|FILE_SHARE_READ|FILE_WRITE|FILE_SHARE_WRITE|FILE_BIN|FILE_COMMON); char jsonarray[]; FileReadArray(FileHandle,jsonarray); FileClose(FileHandle); JsonValue.Clear(); JsonValue.Deserialize(CharArrayToString(jsonarray, 0, 0, CP_UTF8)); _APIJSON[0] = JsonValue[0]["Symbol"].ToStr(); _APIJSON[1] = JsonValue[0]["Fundamental Bias"].ToStr(); _APIJSON[2] = JsonValue[0]["Fundamental Power"].ToStr(); _APIJSON[3] = JsonValue[0]["AI Bullish Forecast"].ToStr(); _APIJSON[4] = JsonValue[0]["AI Bearish Forecast"].ToStr(); _APIJSON[5] = JsonValue[0]["Retail Long Ratio"].ToStr(); _APIJSON[6] = JsonValue[0]["Retail Short Ratio"].ToStr(); _APIJSON[7] = JsonValue[0]["Retail Short Lot"].ToStr(); _APIJSON[8] = JsonValue[0]["Retail Short pos"].ToStr(); _APIJSON[9] = JsonValue[0]["Base COT NET"].ToStr(); _APIJSON[10] = JsonValue[0]["Base COT change"].ToStr(); _APIJSON[11] = JsonValue[0]["Quote COT NET"].ToStr(); _APIJSON[12] = JsonValue[0]["Quote COT change"].ToStr(); _APIJSON[13] = JsonValue[0]["COT chng Ratio"].ToStr(); _APIJSON[14] = JsonValue[0]["Risk Sentiment"].ToStr(); } }
そして、このようにJSON関数を呼び出します。
string APIfilename = symbolname+"_API_Data.json"; // API store file name string API_DATA[]; // define an array variable to store API details JsonDataParse( APIfilename,API_DATA);
手順6:シンプルな移動平均クロスオーバー戦略の作成手順
APIJSON変数に格納された抽出されたデータを使用して、自動売買戦略を作成し、AI予測システムと戦略をミックスすることができます。EAでのデータの使い方の基本的な例です。
しかし、この記事では、シンプルな戦略を選ぶことにします。なぜなら、私たちの目的は、このようなツールをプロジェクトでどのように使用するかを指導し、それを一段と良いものにすることだからです。
移動平均クロスオーバー戦略は、トレーダーが潜在的な売買シグナルを識別するために使用する一般的な手法です。
この戦略では、2本の移動平均線を使用します。市場のトレンドを判断するための短期と長期のものです。
短期MAが長期MAを上回れば買いのシグナル、下回れば売りのシグナルです。
次のようにします。
shortMA = iMA(Symbol(), 0, shortMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0); longMA = iMA(Symbol(), 0, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0); // Check for crossover signals if ( int(APIJSON[3])>=60 ) // if bullish forecast is higher than 60% if (shortMA > longMA) // BUY trend { if (OrdersTotal() == 0) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Buy Order", 0, 0, Green); if (ticket < 0) Print("Error opening buy order: ", GetLastError()); } } if ( int(APIJSON[4])>=60 ) // if bearish forecast is higher than 60% if (shortMA < longMA) // Sell trend { if (OrdersTotal() == 0) { ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Sell Order", 0, 0, Red); if (ticket < 0) Print("Error opening sell order: ", GetLastError()); } }
手順7:シグナルフィルタリングにJSONデータを使用する
MAクロスオーバー戦略を改善するために、JSONデータとZiwox APIからのAI予測比率を使用してシグナルをフィルタリングします。
例えば、MAクロスが買いトレンドを示し、AI予想が強気上昇を示す50%以上であれば、買いでエントリするのが良いでしょう。逆に、テクニカル分析(MA)が売りシグナルを出した場合、分析データと予測データが売りと同じ方向にある場合のみ売りをおこないます。こうすることで、参入リスクを減らし、勝率を上げることができます。
手順4のJSONデータの配置に基づき、AI予測、強気のパーセンテージは配列の3番目/3番目の要素にあり、弱気の予測は4番目の要素にあります。
コードはこんな感じです。
void OnTick() { if (!APIOK) return; double shortMA, longMA; long ticket = -1; if(IsNewCandle()) { shortMA = iMA(Symbol(), 0, shortMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0); longMA = iMA(Symbol(), 0, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0); // Check for crossover signals if ( int(APIJSON[3])>=60 ) // if bullish forecast is higher than 60% if (shortMA > longMA) // BUY trend { if (OrdersTotal() == 0) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Buy Order", 0, 0, Green); if (ticket < 0) Print("Error opening buy order: ", GetLastError()); } } if ( int(APIJSON[4])>=60 ) // if bearish forecast is higher than 60% if (shortMA < longMA) // Sell trend { if (OrdersTotal() == 0) { ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Sell Order", 0, 0, Red); if (ticket < 0) Print("Error opening sell order: ", GetLastError()); } } } }
結論
APIデータをMQL4と統合することで、トレーダーはより適応的でデータ駆動型のEAを作成できるようになります。外部ソースからのリアルタイム情報を活用することで、トレーダーは戦略を強化し、ダイナミックな市場環境において、より多くの情報に基づいた取引判断を下すことができます。テクニカル分析とファンダメンタル分析を組み合わせることで、取引戦略の有効性を高めることができます。
最終コードは以下からダウンロードできます。
どんな質問、提案、批判にもお答えする準備ができています。
よろしくお願いします。取引をがんばりましょう。
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/14108
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索