//+------------------------------------------------------------------+ //| EA-Nico-v0.mq5 | //| Thorsten Fischer Copyright 2019-2020 | //| https://mql5.tfsystem.de | //+------------------------------------------------------------------+ #property copyright "Thorsten Fischer Copyright 2019-2020" #property link "https://mql5.tfsystem.de" #property version "1.00" #property strict #include //--- available signals #include //--- available trailing #include //--- available money management #include //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="EA-Nico"; // EA name ulong Expert_MagicNumber =123456789; // bool Expert_EveryTick =false; // //--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =11; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0; // Take Profit level (in points) input int Signal_Expiration =4; // Expiration of pending orders (in bars) // input int Signal_0_MA_PeriodMA =5; // Moving Average(5,0,...) Period of averaging input int Signal_0_MA_Shift =0; // Moving Average(5,0,...) Time shift input ENUM_MA_METHOD Signal_0_MA_Method =MODE_SMMA; // Moving Average(5,0,...) Method of averaging input ENUM_APPLIED_PRICE Signal_0_MA_Applied =PRICE_HIGH; // Moving Average(5,0,...) Prices series input double Signal_0_MA_Weight =1.0; // Moving Average(5,0,...) Weight [0...1.0] // input int Signal_1_MA_PeriodMA =5; // Moving Average(5,0,...) Period of averaging input int Signal_1_MA_Shift =0; // Moving Average(5,0,...) Time shift input ENUM_MA_METHOD Signal_1_MA_Method =MODE_SMMA; // Moving Average(5,0,...) Method of averaging input ENUM_APPLIED_PRICE Signal_1_MA_Applied =PRICE_LOW; // Moving Average(5,0,...) Prices series input double Signal_1_MA_Weight =1.0; // Moving Average(5,0,...) Weight [0...1.0] ////--- inputs for trailing input int Trailing_FixedPips_StopLevel =20; // Stop Loss trailing level (in points) input int Trailing_FixedPips_ProfitLevel=25; // Take Profit trailing level (in points) ////--- inputs for money input double Money_FixLot_Percent =10.0; // Percent input double Money_FixLot_Lots =0.1; // Fixed volume int m_sleep=30000; //+------------------------------------------------------------------+ //| Global expert object | //+------------------------------------------------------------------+ CExpert ExtExpert; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //if(!ChartApplyTemplate(0,"\\Profiles\\Templates\\TF-Nico test.tpl")) // { // Print("Template ist nicht geladen"); // return(INIT_FAILED); // } //Print("Template ist geladen"); //--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 1"); Sleep(m_sleep); //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 2"); Sleep(m_sleep); //--- ExtExpert.InitSignal(signal); signal.ThresholdOpen(Signal_ThresholdOpen); signal.ThresholdClose(Signal_ThresholdClose); signal.PriceLevel(Signal_PriceLevel); signal.StopLevel(Signal_StopLevel); signal.TakeLevel(Signal_TakeLevel); signal.Expiration(Signal_Expiration); Print(__FUNCTION__+" Pause 3"); Sleep(m_sleep); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(INIT_FAILED); } signal.AddFilter(filter0); Print(__FUNCTION__+" Pause 4"); Sleep(m_sleep); //--- Set filter parameters filter0.PeriodMA(Signal_0_MA_PeriodMA); filter0.Shift(Signal_0_MA_Shift); filter0.Method(Signal_0_MA_Method); filter0.Applied(Signal_0_MA_Applied); filter0.Weight(Signal_0_MA_Weight); //--- Creating filter CSignalMA CSignalMA *filter1=new CSignalMA; if(filter1==NULL) { //--- failed printf(__FUNCTION__+": error creating filter1"); ExtExpert.Deinit(); return(INIT_FAILED); } signal.AddFilter(filter1); Print(__FUNCTION__+" Pause 5"); Sleep(m_sleep); //--- Set filter parameters filter1.PeriodMA(Signal_1_MA_PeriodMA); filter1.Shift(Signal_1_MA_Shift); filter1.Method(Signal_1_MA_Method); filter1.Applied(Signal_1_MA_Applied); filter1.Weight(Signal_1_MA_Weight); ////--- Creation of trailing object CTrailingFixedPips *trailing=new CTrailingFixedPips; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 6"); Sleep(m_sleep); //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 7"); Sleep(m_sleep); //--- Set trailing parameters trailing.StopLevel(Trailing_FixedPips_StopLevel); trailing.ProfitLevel(Trailing_FixedPips_ProfitLevel); //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 8"); Sleep(m_sleep); //--- Add money to expert (will be deleted automatically)) if(!ExtExpert.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 9"); Sleep(m_sleep); //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert.ValidationSettings()) { //--- failed ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 10"); Sleep(m_sleep); //--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(INIT_FAILED); } Print(__FUNCTION__+" Pause 11"); Sleep(m_sleep); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| "Trade" event handler function | //+------------------------------------------------------------------+ void OnTrade() { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| "Timer" event handler function | //+------------------------------------------------------------------+ void OnTimer() { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+