I cannot get the individual buy and sell positions's take profit function to work seperately New comment WRobbertse 2024.03.15 09:20 Good day I am having trouble getting individual take profit functions for the buy and sell options. Here is the code. //+------------------------------------------------------------------+ //| DreamTrader_L0.01_V1.2.mq5 | //| Dream Design Productions | //| www.dreamdesign.co.za | //+------------------------------------------------------------------+ #property copyright "Dream Design Productions" #property link "www.dreamdesign.co.za" #property version "1.20" //+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //--- available signals #include <Expert\Signal\SignalMA.mqh> #include <Expert\Signal\SignalRSI.mqh> //--- available trailing #include <Expert\Trailing\TrailingParabolicSAR.mqh> //--- available money management #include <Expert\Money\MoneyFixedLot.mqh> //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="DreamTrader_L0.01_V1.0"; // Document name ulong Expert_MagicNumber =20144; // bool Expert_EveryTick =false; // //--- inputs for main signal input int Signal_ThresholdOpen =70; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =80; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_TakeLevel_Buy =8000.0; // Take Profit level for buy (in points) input double Signal_TakeLevel_Sell =20000.0; // Take Profit level for sell (in points) input int Signal_Expiration =4; // Expiration of pending orders (in bars) input int Signal_0_MA_PeriodMA =8; // Moving Average(8,0,MODE_SMA,...) Period of averaging input int Signal_0_MA_Shift =0; // Moving Average(8,0,MODE_SMA,...) Time shift input ENUM_MA_METHOD Signal_0_MA_Method =MODE_SMA; // Moving Average(8,0,MODE_SMA,...) Method of averaging input ENUM_APPLIED_PRICE Signal_0_MA_Applied =PRICE_OPEN; // Moving Average(8,0,MODE_SMA,...) Prices series input double Signal_0_MA_Weight =0.5; // Moving Average(8,0,MODE_SMA,...) Weight [0...1.0] input int Signal_1_MA_PeriodMA =21; // Moving Average(21,0,...) Period of averaging input int Signal_1_MA_Shift =0; // Moving Average(21,0,...) Time shift input ENUM_MA_METHOD Signal_1_MA_Method =MODE_SMA; // Moving Average(21,0,...) Method of averaging input ENUM_APPLIED_PRICE Signal_1_MA_Applied =PRICE_OPEN; // Moving Average(21,0,...) Prices series input double Signal_1_MA_Weight =1.0; // Moving Average(21,0,...) Weight [0...1.0] input int Signal_RSI_PeriodRSI =8; // Relative Strength Index(8,...) Period of calculation input ENUM_APPLIED_PRICE Signal_RSI_Applied =PRICE_OPEN; // Relative Strength Index(8,...) Prices series input double Signal_RSI_Weight =1.0; // Relative Strength Index(8,...) Weight [0...1.0] //--- inputs for trailing input double Trailing_ParabolicSAR_Step =0.02; // Speed increment input double Trailing_ParabolicSAR_Maximum=0.2; // Maximum rate //--- inputs for trailing input int Trailing_MA_Period =8; // Period of MA input int Trailing_MA_Shift =0; // Shift of MA input ENUM_MA_METHOD Trailing_MA_Method =MODE_SMA; // Method of averaging input ENUM_APPLIED_PRICE Trailing_MA_Applied =PRICE_OPEN; // Prices series // Trailing Stop Loss parameters input double Trailing_SL_Start =20; // Points from open price to start trailing input double Trailing_SL_Distance =20; // Maximum distance in points between SL and current price //--- inputs for money input double Money_FixLot_Percent =10.0; // Percent input double Money_FixLot_Lots =0.01; // Fixed volume //+------------------------------------------------------------------+ //| Global expert object | //+------------------------------------------------------------------+ CExpert ExtExpert; //+------------------------------------------------------------------+ //| Initialization function of the expert | //+------------------------------------------------------------------+ int OnInit() { //--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- ExtExpert.InitSignal(signal); signal.ThresholdOpen(Signal_ThresholdOpen); signal.ThresholdClose(Signal_ThresholdClose); signal.PriceLevel(Signal_PriceLevel); signal.TakeLevel(Signal_TakeLevel_Buy); signal.TakeLevel(Signal_TakeLevel_Sell); signal.Expiration(Signal_Expiration); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(INIT_FAILED); } signal.AddFilter(filter0); //--- 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); //--- 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); //--- Creating filter CSignalRSI CSignalRSI *filter2=new CSignalRSI; if(filter2==NULL) { //--- failed printf(__FUNCTION__+": error creating filter2"); ExtExpert.Deinit(); return(INIT_FAILED); } signal.AddFilter(filter2); //--- Set filter parameters filter2.PeriodRSI(Signal_RSI_PeriodRSI); filter2.Applied(Signal_RSI_Applied); filter2.Weight(Signal_RSI_Weight); //--- Creation of trailing object CTrailingPSAR *trailing=new CTrailingPSAR; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Set trailing parameters trailing.Step(Trailing_ParabolicSAR_Step); trailing.Maximum(Trailing_ParabolicSAR_Maximum); //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- 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); } //--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(INIT_FAILED); } //--- ok return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Deinitialization function of the expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| "Tick" event handler function | //+------------------------------------------------------------------+ void OnTick() { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| "Trade" event handler function | //+------------------------------------------------------------------+ void OnTrade() { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| "Timer" event handler function | //+------------------------------------------------------------------+ void OnTimer() { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+ Any help would be greatly appreciated. Thank you. opening a new trade when a previous has closed. Getting an EA to take actions from the difference of two SMA's? How to code? New comment
Good day
I am having trouble getting individual take profit functions for the buy and sell options.
Here is the code.
Any help would be greatly appreciated.
Thank you.