English Deutsch
preview
MQLプロジェクトでJSON Data APIを使用する

MQLプロジェクトでJSON Data APIを使用する

MetaTrader 5トレーディングシステム | 30 8月 2024, 10:13
179 0
Sara Sabaghi
Sara Sabaghi

序文と背景

外部データをミックスすることで、アルゴリズム取引における意思決定が改善される可能性があります。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とは何か?

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.XMLXML(eXtensible Markup Language)は、APIレスポンスで構造化データを表現するために広く受け入れられているもう一つの形式です。JSONとは異なり、XMLはタグを使用して階層的なデータ構造を定義し、より正確で構造化された表現を提供します。WebデザインやWeb構造におけるHTMLタグのようなものです。JSONはそのシンプルさと読みやすさから好まれているが、XMLは企業システムやレガシーな統合など、特定の分野では依然として適切です。

以下は、Factory News APIのXMLの例です。

<event>
<title>German Trade Balance</title>
<country>EUR</country>
<date>
<![CDATA[ 07-07-2024 ]]>     </date>
<time>
<![CDATA[ 8:30am ]]>
</time>
<impact><![CDATA[ Low ]]></impact>

<forecast><![CDATA[ 19.9B ]]></forecast>
<previous><![CDATA[ 22.1B ]]></previous>
<url>
<![CDATA[ https://www.forexfactory.com/calendar/125-eur-german-trade-balance ]]>
</url>

</event>


3.  その他の形式:JSONとXMLに加えて、APIは、ドメイン固有の要件と規約に応じて、プレーンテキスト、プロトコルバッファ、またはファイルなどの他のレスポンス形式を使用することができます。各形式には、効率やパフォーマンスから人間の読みやすさや適応性まで、それぞれの利点と用途があります。

JSON形式は、そのシンプルさ、読みやすさ、使いやすさから、Web開発において人気のある選択肢となっています。幸いなことに、問題のサービスもデータ交換にこのモデルを使用しています。



環境設定と開発

MQL5でJSON APIを使用する環境を構築するには、いくつかの手順を踏む必要があります。

MQL5は、MetaTrader 5取引プラットフォーム用の取引ロボット、テクニカル指標、スクリプト、関数ライブラリを作成するためのプログラミング言語です。

ここでは、MQL5でJSON APIを使用するための環境を構築する方法について、一般的なガイドを示します。

  1. MQL5の基本を理解する:MQL5プログラミング言語の基礎と、取引や金融市場に関連する基本的な概念を十分に理解していることを確認してください。言語の構文と関数を理解するために、MQL4ドキュメントMQL5 リファレンスに精通してください。
  2. JSONライブラリを選択する:MQL5にはJSON解析のネイティブサポートがないため、サードパーティのライブラリを使用する必要があります。これらのライブラリは、MQL5コミュニティやGitHubなどのフォーラムで見つけることができます (JSON SerializationおよびJSON Parser)。
  3. JSONライブラリをダウンロードしてインストールする:選択したJSONライブラリをダウンロードし、ライブラリが提供するインストール手順に従います。これには通常、ライブラリファイル(mqhまたはmq5)をMetaTraderインストールのIncludeフォルダに配置する必要があります。
  4. ライブラリをコードにインクルードする:MQLスクリプトまたはEA(エキスパートアドバイザー)の最初に、#includeディレクティブを使用してJSONライブラリをインクルードします。
  5. //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" 
  6. HTTPリクエストをおこなう:JSON APIとやり取りするには、HTTPリクエストをおこなう必要があります。一般的な選択肢としては、WinHTTPやWebRequestがあります。他のタイプのHTTP利用が必要な場合は、ニーズに合ったHTTPライブラリをダウンロードしてインクルードします。
  7. HTTPレスポンスをファイルに保存する:これらのAPIのほとんどはリクエスト数に制限があり、APIリクエストの制限を懸念しているため、リクエストされたデータをファイルに保存し、不必要なリクエストを繰り返す代わりに保存したファイルを使用する方がよいです。
  8. JSONレスポンスを解析する:APIからレスポンスを受け取ったら、JSONライブラリを使用してJSONデータを解析します。具体的な構文は、使用するライブラリによって異なります。
  9. ミキシング:JSONデータを分類した後、モデル、戦略、またはタイプに従って、目的のデータをプログラムに組み合わせることができます。


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で登録します。

Ziwox登録 

2. 情報をフォームに入力し、規約とポリシーを読んで同意し、[私はロボットではありません]をクリックし、[Create New Account]をクリックします。

3. メールボックスに確認メールが送信されます。メールを確認します。

3. こちらでアカウントにログインします。こちらでプロファイルページの[API]タブに移動し、緑色の生成ボタンをクリックしてAPIキーを生成します。

Ziwox API generate

4. APIキーを生成することで、Ziwox APIデータにアクセスできるようになります。生成されたAPIコードをコピーして、プロジェクトで使用します。

Ziwox 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レスポンスは次のようになります。

Ziwox APIレスポンス


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

添付されたファイル |
APIExpert.mq4 (18.77 KB)
JAson.mqh (30.59 KB)
多通貨エキスパートアドバイザーの開発(第7回):フォワード期間に基づくグループの選択 多通貨エキスパートアドバイザーの開発(第7回):フォワード期間に基づくグループの選択
以前は、個々のインスタンスの最適化が実施されたのと同じ期間においてのみ、共同運用の結果を改善する目的で、取引戦略インスタンスグループの選択を評価しました。フォワード期間中に何が起こるか見てみましょう。
非定常過程と偽回帰 非定常過程と偽回帰
この記事では、モンテカルロシミュレーションを用いて非定常過程に回帰分析を適用しようとすると、偽回帰が発生することを示しています。
MQL5で日次ドローダウンリミッターEAを作成する MQL5で日次ドローダウンリミッターEAを作成する
この記事では、取引アルゴリズムに基づくエキスパートアドバイザー(EA)の作成方法を、詳細な観点から解説しています。これはMQL5のシステムを自動化し、デイリードローダウンをコントロールするのに役立ちます。
母集団最適化アルゴリズム:群鳥アルゴリズム(BSA) 母集団最適化アルゴリズム:群鳥アルゴリズム(BSA)
本稿では、自然界における鳥の群れの集団的な相互作用に着想を得た、鳥の群れに基づくアルゴリズム(BSA)を探求します。飛行、警戒、採餌行動の切り替えなど、BSAの個体にはさまざまな探索戦略があるため、このアルゴリズムは多面的なものとなっています。鳥の群れ、コミュニケーション、適応性、先導と追随の原理を利用し、効率的に最適解を見つけます。