pairs_trading/pairs_trading.mq5
super.admin 7aec422ada convert
2025-05-30 16:15:29 +02:00

70 lines
5.7 KiB
MQL5

//+------------------------------------------------------------------+
//| pairs_trading |
//| Copyright 2022, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
#include <Math\Stat\Math.mqh>
input group "●--EAの基本設定--●"
sinput ENUM_LOG_LEVELS loglevel = LOG_LEVEL_ERRORS; // メッセージログの表示/非表示を設定
sinput ulong Magic = 1234; // マジックナンバー
input ulong EN_Slippage = 20; // 新規注文の許容スリッページ
input ulong EX_Slippage = 100; // 決済注文の許容スリッページ
enum ENUM_FILLING_MODE {
auto = 1, //自動
FILLING_FOK = 2, //ORDER_FILLING_FOK
FILLING_IOC = 3, //ORDER_FILLING_IOC
FILLING_RETURN = 4, //ORDER_FILLING_RETURN
Not_set = 0 //設定しない
};
input ENUM_FILLING_MODE OrderTypeFillingMode = 0; // 注文充填の種類
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnInit()
{
// EAの初期設定
ExtTrade.LogLevel(loglevel);
ExtTrade.SetExpertMagicNumber(Magic);
ExtTrade.SetDeviationInPoints(EN_Slippage);
if(OrderTypeFillingMode != 0) ExtTrade.SetTypeFilling(Set_Order_Type_Filling() );
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| ORDER_TYPE_FILLING の設定
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING Set_Order_Type_Filling()
{
//自動選択モード
if(OrderTypeFillingMode == 1 && SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE) == 1) return ORDER_FILLING_FOK;
else if(OrderTypeFillingMode == 1 && SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE) == 2) return ORDER_FILLING_IOC;
else if(OrderTypeFillingMode == 1) return ORDER_FILLING_RETURN;
//手動選択モード
else if(OrderTypeFillingMode == 2) return ORDER_FILLING_FOK;
else if(OrderTypeFillingMode == 3) return ORDER_FILLING_IOC;
else if(OrderTypeFillingMode == 4) return ORDER_FILLING_RETURN;
return 0;
}
//+------------------------------------------------------------------+