Add features to basic code

MQL4 Integration

Job finished

Execution time 2 days
Feedback from customer
Big respect to exceptionally talented and impressively turbo charged coder. I'd highly recommend this coder to anyone looking for top tier professional work and good feedback.
Feedback from employee
Great Customer.. Nice Guy... Happy work with you brother

Specification

I pulled this basic code from the internet to build a simple EA for scalping during the active market session. However I would like to add 3 core features:

- stop loss placement to be calculated with deviation (user input) in pips and added (in conjunction with lot sizing) @ previous candle low (for buy order) and previous candle high (for sell order)
- add variable lot sizing function to trade by 0.00% of account balance
- add partial close feature with % levels


2 additional features to be added:

- add time filter (start + stop time in hrs:mm)

- add visual display swap rate of current position being held in top right area

scenario of trade operation will be as follows:

 buy trade entry condition met

1. SL of "30 pips" is calculated at low of previous candle plus deviation of 20 pips
2. final SL of (30 + 20) 50 pips is set and run though variable lot sizing formula to allocate lot size in accordance with risk % specified where 4 lots are executed
3. partial close level 1 is set @ 10 pips to close 25% and 1 lot is closed. partial close level 2 is set @ 15 pips to close 25% and another 1 lot is closed



Thank you in advance



I pulled this base code from the internet to build a simple EA for scalping during the active market session. However I would like to add 3 core features:

- stop loss placement to be calculated with deviation (user input) in pips and added (in conjunction with lot sizing) @ previous candle low (for buy order) and previous candle high (for sell order)
- add variable lot sizing function to trade by 0.00% of account balance
- add partial close feature with % levels

- add time filter (start + stop time in hrs:mm)
- add visual display swap rate of current position being held in top right area

scenario of trade operation will be as follows:

 buy trade entry condition met

1. SL of "30 pips" is calculated at low of previous candle plus deviation of 20 pips
2. final SL of (30 + 20) 50 pips is set and run though variable lot sizing formula to allocate lot size in accordance with risk % specified where 4 lots are executed
3. partial close level 1 is set @ 10 pips to close 25% and 1 lot is closed. partial close level 2 is set @ 15 pips to close 25% and another 1 lot is closed

I am willing to donate a small fee of $20 for your help if you can provide code over the weekend......

Thank you in advance

[CODE]
//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder                  |
//|                [url]http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/[/url] |
//|                                                                  |
//|  In no event will author be liable for any damages whatsoever.   |
//|                      Use at your own risk.                       |
//|                                                                  |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0
#define SIGNAL_BUY   1
#define SIGNAL_SELL  2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder"
#property link      "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"


  
  
     
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.01;
extern int Slippage = 5;
extern bool UseStopLoss = True;
extern int StopLoss = 500;
extern bool UseTakeProfit = False;
extern int TakeProfit = 500;
extern bool UseTrailingStop = False;
extern int TrailingStop = 100;


int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int BarCount(){
   static datetime Time0; if (Time0 == Time[0]) return; Time0 = Time[0];
   // New bar has started
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() {
   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
   int Order = SIGNAL_NONE;
   int Total, Ticket;
   double StopLossLevel, TakeProfitLevel;



   if (EachTickMode && Bars != BarCount) TickCheck = False;
   Total = OrdersTotal();
   Order = SIGNAL_NONE;

   //+------------------------------------------------------------------+
   //| Variable Begin                                                   |
   //+------------------------------------------------------------------+


  
   //+------------------------------------------------------------------+
   //| Variable End                                                     |
   //+------------------------------------------------------------------+

   //Check position
   bool IsTrade = False;

   for (int i = 0; i < Total; i ++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType() <= OP_SELL &&  OrderSymbol() == Symbol()) {
         IsTrade = True;
         if(OrderType() == OP_BUY) {
            //Close

            //+------------------------------------------------------------------+
            //| Signal Begin(Exit Buy)                                           |
            //+------------------------------------------------------------------+

          

            //+------------------------------------------------------------------+
            //| Signal End(Exit Buy)                                             |
            //+------------------------------------------------------------------+

            if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
               if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
               if (!EachTickMode) BarCount = Bars;
               IsTrade = False;
               continue;
            }
            //Trailing stop
            if(UseTrailingStop && TrailingStop > 0) {                
               if(Bid - OrderOpenPrice() > Point * TrailingStop) {
                  if(OrderStopLoss() < Bid - Point * TrailingStop) {
                     OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
                     if (!EachTickMode) BarCount = Bars;
                     continue;
                  }
               }
            }
         } else {
            //Close

            //+------------------------------------------------------------------+
            //| Signal Begin(Exit Sell)                                          |
            //+------------------------------------------------------------------+

                   
  
            //+------------------------------------------------------------------+
            //| Signal End(Exit Sell)                                            |
            //+------------------------------------------------------------------+

            if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
               if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
               if (!EachTickMode) BarCount = Bars;
               IsTrade = False;
               continue;
            }
            //Trailing stop
            if(UseTrailingStop && TrailingStop > 0) {                
               if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
                  if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
                     OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
                     if (!EachTickMode) BarCount = Bars;
                     continue;
                  }
               }
            }
         }
      }
   }

   //+------------------------------------------------------------------+
   //| Signal Begin(Entry)                                              |
   //+------------------------------------------------------------------+

  


   //+------------------------------------------------------------------+
   //| Signal End                                                       |
   //+------------------------------------------------------------------+

   //Buy
   if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
      if(!IsTrade) {
         //Check free margin
         if (AccountFreeMargin() < (1000 * Lots)) {
            Print("We have no money. Free Margin = ", AccountFreeMargin());
            return(0);
         }

         if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
         if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

         Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(<Mark Up>" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
         if(Ticket > 0) {
            if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
                Print("BUY order opened : ", OrderOpenPrice());
                if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
            } else {
                Print("Error opening BUY order : ", GetLastError());
            }
         }
         if (EachTickMode) TickCheck = True;
         if (!EachTickMode) BarCount = Bars;
         return(0);
      }
   }

   //Sell
   if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
      if(!IsTrade) {
         //Check free margin
         if (AccountFreeMargin() < (1000 * Lots)) {
            Print("We have no money. Free Margin = ", AccountFreeMargin());
            return(0);
         }

         if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
         if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

         Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(<Discount>" + MagicNumber + ")", MagicNumber, 0, DeepPink);
         if(Ticket > 0) {
            if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
                Print("SELL order opened : ", OrderOpenPrice());
                if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
            } else {
                Print("Error opening SELL order : ", GetLastError());
            }
         }
         if (EachTickMode) TickCheck = True;
         if (!EachTickMode) BarCount = Bars;
         return(0);
      }
   }

   if (!EachTickMode) BarCount = Bars;
  
  

   return(0);
}
//+------------------------------------------------------------------+
[/CODE]


Responded

1
Developer 1
Rating
(40)
Projects
58
22%
Arbitration
10
10% / 70%
Overdue
13
22%
Free
Similar orders
Overview: We are seeking a highly skilled Python Developer with experience in finance and trading software development, specifically with expertise in MetaTrader 4 (MT4). The project involves creating a Python script that connects to an MT4 account to extract historic trades and graphically present historical drawdown data (got from third party data) on < 15 min timeframe. Project Objectives: Develop a Python script
Seeking a freelance developer to bridge MetaTrader 4 (MT4) with eToro. Your task is to create a seamless connection to execute trades across both platforms. This will allow my ea's to copy trades onto the platform, i'm looking for something similar to the program CMAM that allows fixed lots and auto balance risk options based on equity and balance
Hi Everybody. I need to refine a code, written with my limited knowledge, in Tradingview for automated trading to entry orders in MT4 via Pineconnector that generates an alarm containing entry price, TP and SL (the latter two in value and not in pips) per single trade. The code to be refined already calculates the entry price (the entry is at the opening of the candle following the occurrence of the specific
I'm only seeking experienced developers who have successfully completed projects similar to this. I require someone to develop a copy-trading system that can execute trades on clients' mt4/mt5 upon my posting on platforms like Telegram or spreadsheets . Additionally, I need a feature for tracking and recording the trading signals that I send. I'll provide further details and examples during our discussion
I am looking for a coder to code my custom Ninjatrader 8 strategy to make it work perfectly your professioalism is needed in the project Kindly cotact me now and let Proceed
Hi there, can you create an addon for Ninja Trader that replicates the Level 2 window? See image attached. I am looking to change the row colours based on the size

Project information

Budget
10 - 25 USD
For the developer
9 - 22.5 USD
Deadline
from 1 to 2 day(s)