70 lines
5.7 KiB
MQL5
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;
|
|
}
|
|
//+------------------------------------------------------------------+
|