pairs_trading/pairs_trading.mq5

71 lines
5.7 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:15:29 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| pairs_trading |
//| Copyright 2022, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
#include <Math\Stat\Math.mqh>
input group "<00>%--EAn0<6E>W,g-<2D><>[--<00>%"
sinput ENUM_LOG_LEVELS loglevel = LOG_LEVEL_ERRORS; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0h<EFBFBD>:y/^<EFBFBD>h<EFBFBD>:y<EFBFBD>0-<EFBFBD><EFBFBD>[
sinput ulong Magic = 1234; // <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input ulong EN_Slippage = 20; // <EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>en01<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input ulong EX_Slippage = 100; // zln<EFBFBD>l<EFBFBD>en01<EFBFBD><EFBFBD>[<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
enum ENUM_FILLING_MODE {
auto = 1, //<EFBFBD><EFBFBD><EFBFBD>R
FILLING_FOK = 2, //ORDER_FILLING_FOK
FILLING_IOC = 3, //ORDER_FILLING_IOC
FILLING_RETURN = 4, //ORDER_FILLING_RETURN
Not_set = 0 //-<EFBFBD><EFBFBD>[W0j0D0
};
input ENUM_FILLING_MODE OrderTypeFillingMode = 0; // <EFBFBD>l<EFBFBD>eEQkXn0.z^<EFBFBD>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnInit()
{
// EAn0Rg-<EFBFBD><EFBFBD>[
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 n0-<EFBFBD><EFBFBD>[
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING Set_Order_Type_Filling()
{
//<EFBFBD><EFBFBD><EFBFBD>Rx<EFBFBD><EFBFBD>b<EFBFBD>0<EFBFBD>0<EFBFBD>0
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;
//Kb<EFBFBD>Rx<EFBFBD><EFBFBD>b<EFBFBD>0<EFBFBD>0<EFBFBD>0
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;
}
//+------------------------------------------------------------------+