Macd sample

MQL5 Indicators

Specification

//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"

input double TakeProfit    =50;
input double Lots          =0.1;
input double TrailingStop  =30;
input double MACDOpenLevel =3;
input double MACDCloseLevel=2;
input int    MATrendPeriod =26;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   double MacdCurrent,MacdPrevious;
   double SignalCurrent,SignalPrevious;
   double MaCurrent,MaPrevious;
   int    cnt,ticket,total;
//---
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external
// variables (Lots, StopLoss, TakeProfit,
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
//---
   if(Bars<100)
     {
      Print("bars less than 100");
      return;
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return;
     }
//--- to simplify the coding and speed up access data are put into internal variables
   MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
   MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

   total=OrdersTotal();
   if(total<1)
     {
      //--- no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return;
        }
      //--- check for long position (BUY) possibility
      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&
         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening BUY order : ",GetLastError());
         return;
        }
      //--- check for short position (SELL) possibility
      if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
         MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening SELL order : ",GetLastError());
        }
      //--- exit from the "no opened orders" block
      return;
     }
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {
            //--- should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            //--- should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+

Responded

1
Developer 1
Rating
(133)
Projects
193
80%
Arbitration
17
29% / 47%
Overdue
10
5%
Loaded
2
Developer 2
Rating
(1)
Projects
2
50%
Arbitration
0
Overdue
0
Free
3
Developer 3
Rating
(1053)
Projects
1391
45%
Arbitration
46
72% / 13%
Overdue
35
3%
Working
Similar orders
I would fix the speed and accurancy of indicator in pinescript for tradingview it's slow and doesn't have a good accurancy, is there a way to fix it? thank you
Create a MT5 EA based on certain strategy creating a proprietary automatic trading strategy for our private investment portfolio. This is a unique opportunity to work on an exclusive project that demands creativity, strategic thinking, and a deep understanding of financial markets. Project Description: We are looking for a developer to design and implement an advanced automatic trading strategy tailored to our
I like to put 4 input to the EA. symbol 1, symbol 2, symbol 1 lot, symbol 2 lot. When the EA wants to open buy position, close all positions then buy on the symbol 1 and sell on the symbol 2. When the EA wants to open sell position, close all positions then sell on the symbol 1 and buy on the symbol 2. Thank you
This is a Ready Made grid Automatic EA 1.Need some bug fixing and little modification. This EA has some bug like -Place Random Trade after MT4 Restart . Also not follow custom parameter grid distance, grid slippage . like if i set 300pips grid distance, some time it place trade at 400 pips distance . fix this bug 2.first trade open by RSI logic if rsi30 open buy trade
Need a programmer who can input parameters in existing indicator. I have 3 indicator .All of them have some parameter need to modify according to new requirement. will provide more details
Hello, I am looking for a coder who could translate or convert two (2) MT4 indicators (.mq4 file, source code available) to two (2) indicators in TradingView's Pine Script. It should be exactly the same indicators, with the same inputs and other settings. Once you complete the job, you will send me the indicators, with full source code for Pine Script. This work will remain confidential. There is a currently publicly
Fix a indicator 30+ USD
Hello. I have an indicator that gives buy and sell signals. When I try to use it with a universal EA, the EA does not buy or sell on each signal that the indicator gives. I need to fix the indicator
Are you a coding maestro with a passion for optimizing indicators to blazing speeds? Look no further – I’m in search of a skilled developer to take my indicator to the next level! The Task: I need someone who can dive deep into the code, iron out any pesky errors, and optimize the indicator for lightning-fast responsiveness. Additionally, I require seamless integration of the Zigzag indicator, which currently resides
This is a Ready Made grid Automatic EA 1.Need some bug fixing and little modification. This EA has some bug like -Place Random Trade after MT4 Restart . Also not follow custom parameter grid distance, grid slippage . like if i set 300pips grid distance, some time it place trade at 400 pips distance . fix this bug 2.first trade open by RSI logic if rsi30 open buy trade Add Revise Order mode. (anti-martingle grid )
Hello i need a quote for this project, i m looking for a good developer with good knowlodge of pinescript and amibroker if you have the knowlodge, apply to this thank you

Project information

Budget
30+ USD
For the developer
27 USD