//+------------------------------------------------------------------+ //| simpleMAmulti.mq5 | //| Copyright 2011, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2011, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include //--- available signals #include //--- available trailing #include //--- available money management #include //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="simpleMAmulti"; // Document name int Expert_MagicNumber =15307; // bool Expert_EveryTick =false; // //--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose=10; // 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_MA_PeriodMA =12; // Moving Average(12,0,...) Period of averaging input int Signal_MA_Shift =0; // Moving Average(12,0,...) Time shift input ENUM_MA_METHOD Signal_MA_Method =MODE_SMA; // Moving Average(12,0,...) Method of averaging input ENUM_APPLIED_PRICE Signal_MA_Applied =PRICE_CLOSE; // Moving Average(12,0,...) Prices series input double Signal_MA_Weight =1.0; // Moving Average(12,0,...) Weight [0...1.0] //--- inputs for money input double Money_FixLot_Percent =10.0; // Percent input double Money_FixLot_Lots =0.1; // Fixed volume //+------------------------------------------------------------------+ //| Global expert object | //+------------------------------------------------------------------+ CExpert ExtExpert0; CExpert ExtExpert1; CExpert ExtExpert2; CExpert ExtExpert3; CExpert ExtExpert4; CExpert ExtExpert5; CExpert ExtExpert6; CExpert ExtExpert7; CExpert ExtExpert8; CExpert ExtExpert9; CExpert ExtExpert10; CExpert ExtExpert11; //+------------------------------------------------------------------+ //| Initialization function of the expert | //+------------------------------------------------------------------+ int OnInit() { int res=SubInit0("USDCHF"); res=SubInit1("GBPUSD"); res=SubInit2("EURUSD"); res=SubInit3("USDJPY"); res=SubInit4("USDCAD"); res=SubInit5("AUDUSD"); res=SubInit6("EURGBP"); res=SubInit7("EURAUD"); res=SubInit8("EURCHF"); res=SubInit9("EURJPY"); res=SubInit10("GBPJPY"); res=SubInit11("GBPCHF"); //--- ok return(0); } //+------------------------------------------------------------------+ //| Deinitialization function of the expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert0.Deinit(); ExtExpert1.Deinit(); ExtExpert2.Deinit(); ExtExpert3.Deinit(); ExtExpert4.Deinit(); ExtExpert5.Deinit(); ExtExpert6.Deinit(); ExtExpert7.Deinit(); ExtExpert8.Deinit(); ExtExpert9.Deinit(); ExtExpert10.Deinit(); ExtExpert11.Deinit(); } //+------------------------------------------------------------------+ //| "Tick" event handler function | //+------------------------------------------------------------------+ void OnTick() { ExtExpert0.OnTick(); ExtExpert1.OnTick(); ExtExpert2.OnTick(); ExtExpert3.OnTick(); ExtExpert4.OnTick(); ExtExpert5.OnTick(); ExtExpert6.OnTick(); ExtExpert7.OnTick(); ExtExpert8.OnTick(); ExtExpert9.OnTick(); ExtExpert10.OnTick(); ExtExpert11.OnTick(); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int SubInit0(string sym) { //--- Initializing expert if(!ExtExpert0.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert0.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert0.Deinit(); return(-2); } //--- ExtExpert0.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert0.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert0.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert0.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert0.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert0.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert0.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert0.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert0.ValidationSettings()) { //--- failed ExtExpert0.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert0.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert0.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit1(string sym) { //--- Initializing expert if(!ExtExpert1.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert1.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert1.Deinit(); return(-2); } //--- ExtExpert1.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert1.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert1.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert1.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert1.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert1.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert1.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert1.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert1.ValidationSettings()) { //--- failed ExtExpert1.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert1.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert1.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit2(string sym) { //--- Initializing expert if(!ExtExpert2.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert2.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert2.Deinit(); return(-2); } //--- ExtExpert2.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert2.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert2.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert2.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert2.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert2.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert2.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert2.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert2.ValidationSettings()) { //--- failed ExtExpert2.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert2.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert2.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit3(string sym) { //--- Initializing expert if(!ExtExpert3.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert3.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert3.Deinit(); return(-2); } //--- ExtExpert3.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert3.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert3.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert3.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert3.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert3.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert3.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert3.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert3.ValidationSettings()) { //--- failed ExtExpert3.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert3.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert3.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit4(string sym) { //--- Initializing expert if(!ExtExpert4.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert4.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert4.Deinit(); return(-2); } //--- ExtExpert4.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert4.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert4.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert4.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert4.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert4.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert4.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert4.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert4.ValidationSettings()) { //--- failed ExtExpert4.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert4.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert4.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit5(string sym) { //--- Initializing expert if(!ExtExpert5.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert5.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert5.Deinit(); return(-2); } //--- ExtExpert5.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert5.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert5.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert5.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert5.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert5.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert5.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert5.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert5.ValidationSettings()) { //--- failed ExtExpert5.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert5.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert5.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit6(string sym) { //--- Initializing expert if(!ExtExpert6.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert6.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert6.Deinit(); return(-2); } //--- ExtExpert6.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert6.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert6.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert6.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert6.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert6.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert6.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert6.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert6.ValidationSettings()) { //--- failed ExtExpert6.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert6.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert6.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit7(string sym) { //--- Initializing expert if(!ExtExpert7.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert7.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert7.Deinit(); return(-2); } //--- ExtExpert7.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert7.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert7.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert7.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert7.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert7.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert7.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert7.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert7.ValidationSettings()) { //--- failed ExtExpert7.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert7.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert7.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit8(string sym) { //--- Initializing expert if(!ExtExpert8.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert8.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert8.Deinit(); return(-2); } //--- ExtExpert8.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert8.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert8.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert8.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert8.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert8.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert8.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert8.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert8.ValidationSettings()) { //--- failed ExtExpert8.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert8.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert8.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit9(string sym) { //--- Initializing expert if(!ExtExpert9.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert9.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert9.Deinit(); return(-2); } //--- ExtExpert9.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert9.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert9.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert9.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert9.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert9.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert9.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert9.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert9.ValidationSettings()) { //--- failed ExtExpert9.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert9.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert9.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit10(string sym) { //--- Initializing expert if(!ExtExpert10.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert10.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert10.Deinit(); return(-2); } //--- ExtExpert10.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert10.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert10.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert10.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert10.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert10.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert10.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert10.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert10.ValidationSettings()) { //--- failed ExtExpert10.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert10.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert10.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+ int SubInit11(string sym) { //--- Initializing expert if(!ExtExpert11.Init(sym,Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert11.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert11.Deinit(); return(-2); } //--- ExtExpert11.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); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert11.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.Symbol(sym); filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert11.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert11.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert11.Deinit(); return(-5); } //--- Set trailing parameters //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert11.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert11.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert11.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert11.ValidationSettings()) { //--- failed ExtExpert11.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert11.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert11.Deinit(); return(-9); } return(0); } //+------------------------------------------------------------------+