up:: MQL5
//+------------------------------------------------------------------+
//| SampleEA.mq5 |
//| Copyright 2024, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
EventSetMillisecondTimer(333);// 1秒ごとにOnTimerを呼び出す
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
EventKillTimer(); // タイマーを停止
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// 通常はOnTickは使用しないが、必要に応じて処理を記述
}
void SendHttpRequest(string key) {
// HTTPリクエストを送信するコード
// 例えば、WebRequestを使用してリクエストを送信する
string url;
StringConcatenate(url,"http://localhost:5000/mgba-http/button/tap?key=",key);
printf(url);
string cookie = ""; // クッキー
string referer = ""; // リファラ
int timeout = 5000;
char data[];
int data_size = 10;
char result[];
string rh = "";
int response = WebRequest("POST",url,cookie,referer,timeout,data,data_size,result,rh);
// レスポンスの内容を処理する
Print("Response: " + IntegerToString(response));
}
int valuetobit(double former,double present){
if(former < present){
return 0;
}else if(former > present){
return 1;
}else{
return 2;
}
}
double f_usdjpy_ask = 0;
double f_usdjpy_bid = 0;
double f_eurusd_ask = 0;
double f_eurusd_bid = 0;
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
double usdjpy_ask = SymbolInfoDouble("USDJPY", SYMBOL_ASK); // Askの値を取得
double usdjpy_bid = SymbolInfoDouble("USDJPY", SYMBOL_BID); // Bidの値を取得
Print("f_Ask: ", f_usdjpy_ask, " Ask: ", usdjpy_ask); // コンソールにAskとBidの値を出力
Print("usdjpy: ", IntegerToString(valuetobit(f_usdjpy_ask,usdjpy_ask)));
int uj_ask_i = valuetobit(f_usdjpy_ask,usdjpy_ask);
int uj_bid_i = valuetobit(f_usdjpy_bid,usdjpy_bid);
switch(uj_ask_i)
{
case 0:
switch(uj_bid_i)
{
case 0:
SendHttpRequest("Up");
break;
case 1:
SendHttpRequest("Down");
break;
default:
SendHttpRequest("A");
break;
}
break;
case 1:
switch(uj_bid_i)
{
case 0:
SendHttpRequest("Left");
break;
case 1:
SendHttpRequest("Right");
break;
default:
SendHttpRequest("B");
break;
}
break;
default:
switch(uj_bid_i)
{
case 0:
SendHttpRequest("L");
break;
case 1:
SendHttpRequest("R");
break;
default:
if(rand() % 2 == 0){
SendHttpRequest("Start");
}else{
SendHttpRequest("Select");
}
break;
}
break;
}
//SendHttpRequest();
f_usdjpy_ask = usdjpy_ask;// Askの値を取得
f_usdjpy_bid = usdjpy_bid;// Bidの値を取得
//f_eurusd_ask = eurusd_ask;// Bidの値を取得
//f_eurusd_bid = eurusd_bid;// Bidの値を取得
}
WebRequestは独立スレッド系のためカスタムインジケータで動かず、また外部接続なのでストラテジーテスターで動かない。
Creating Tick Indicators in MQL5 - MQL5 Articles
Event Handling Functions - Functions - Language Basics - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
取引ストラテジーのテスト - MQL5 プログラム - MQL5 リファレンス - MetaTrader 5 のためのアルゴリズムの/自動化されたトレーディング言語のリファレンス