Trigger with horizontal or diagonal line

MQL4 Experts C++

Job finished

Execution time 23 hours
Feedback from customer
Good programmer, great job, thank you :)
Feedback from employee
Good Customer Thank you !

Specification

Hello,
I would like my order to trigger on a line I trace.

Example:

When the  moving average to 1 touches my red line
 then my order this triggers as on the photo ...


eurusd

















//+------------------------------------------------------------------+
//|                                                       test35.mq4 |
//|                                                              xxx |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "xxx"
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
extern double  lots1          = 0.01;
extern double  lots2          = 0.03;
extern double  lots3          = 0.06;


input int      TakeProfit1     =   10;
input int      StopLoss1       =   10;
input int      TakeProfit2     =   10;
input int      StopLoss2       =   10;
input int      TakeProfit3     =   10;
input int      StopLoss3       =   10;


input int period=14;
input int period1=14; 
input int period2=14; 
input int period3=14; 
input int period4=14;


input int OverBought=51; // Over bought level
input int OverSold=49; // Over sold level
input int OverBought1=51; // Over bought level
input int OverSold1=49; // Over sold level
input int OverBought2=51; // Over bought level
input int OverSold2=49; // Over sold level
input int OverBought3=51; // Over bought level
input int OverSold3=49; // Over sold level
input int OverBought4=51; // Over bought level
input int OverSold4  =49;
//extern int     MovingPeriod         = 2;
//extern int     MovingShift          = 1;
//extern int Period_PCh = 20;
extern int     magic=321569;
extern double  Level          = 1.3923;
extern double  MaxDeviation   = 9;         // Max Deviation, points

bool RunOnce=false;
int last_order_check=false;
datetime EaStartTime=TimeCurrent();
double takeprofit1=TakeProfit1;
double stoploss1=StopLoss1;
double takeprofit2=TakeProfit2;
double stoploss2=StopLoss2;
double takeprofit3=TakeProfit3;
double stoploss3=StopLoss3;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()

  {
   MathSrand(GetTickCount());
   if(Digits==5 || Digits==3)
     {
      takeprofit1  =TakeProfit1*10;
      stoploss1    =StopLoss1*10;
      takeprofit2  =TakeProfit2*10;
      stoploss2    =StopLoss2*10;
      takeprofit3  =TakeProfit3*10;
      stoploss3    =StopLoss3*10;
      
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnTimer()
  {
   OnTick();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  
  {
   if (RunOnce)// ExpertRemove();
   if(IsLastOrderClose())
     {
      OnInit();
      Print("Ea Closed Manually ");
      EaStartTime=TimeCurrent();
     }
        int ticet;
   int t=MathRand();
     
      if(CountVsego()==0)
     {
      //if(t>16383)
      //  {
        // if(Counts()==0) //  && (Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0))
          //if(Volume[0]>1) return;
              
             if(Counts()==0)//  &&    MA_Fast1>MA_Low1 && rsi>OverBought && Close[0] > High[4] && Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0)
             
           {
            ticet=OrderSend(Symbol(),OP_BUY,lots1,Ask,3,Bid-stoploss1*Point,Ask+takeprofit2*Point,"1",magic,0,clrGreen);
           }
       
      // Partie 1 
      // else if(t<16383)rsi>OverBought1if( Close[0] > High[1] )  Break1();[4]))
     // else if( Close[0] < Low[1] )  Break2();
  
       //  {
         if(Counts()==0 )//  &&  MA_Fast1<MA_Low1  && rsi<OverSold && Close[0] < Low[4] && Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0)
          
           {
            ticet=OrderSend(Symbol(),OP_SELL,lots1,Bid,3,Ask+stoploss1*Point,Bid-takeprofit2*Point,"1",magic,0,clrRed);
           }
        
      // Partie 1 
      // else if(t<16383)
         
         //if(Counts()==0//  && (Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0))
   
        
        
        
     // if(t>0)
     //   {
         if(Counts()==1)// && (MA_Fast1>MA_Low1 && rsi>OverBought && Close[0] > High[4]))// && (RunOnce || (Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0)))
          {
            ticet=OrderSend(Symbol(),OP_BUY,lots2,Ask,3,Bid-stoploss2*Point,Ask+takeprofit2*Point,"2",magic,0,clrGreen);
           }        
         //if (getLastOrderCloseType() == 1) ticet=OrderSend(Symbol(),OP_BUY,lots2,Ask,3,Bid-stoploss2*Point,Ask+takeprofit2*Point,"4",magic,0,clrGreen);
         //  if (getLastOrderCloseType() == 0) ticet=OrderSend(Symbol(),OP_SELL,lots2,Bid,3,Ask+stoploss2*Point,Bid-takeprofit2*Point,"3",magic,0,clrRed);
        
       // }
      // Partie 2 
     // else if(t<16383)
      //  {
         if(Counts()==1)// && (MA_Fast1<MA_Low1  && rsi<OverSold && Close[0] < Low[4]))// && (RunOnce || (Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0)))
          {
            ticet=OrderSend(Symbol(),OP_SELL,lots2,Bid,3,Ask+stoploss2*Point,Bid-takeprofit2*Point,"2",magic,0,clrRed);
           }
           
           
           
      //  }
     // if(t>16383)
     //   {
         if(Counts()==2)// &&  (MA_Fast1>MA_Low1 && rsi>OverBought && Close[0] > High[4]))
           {
            ticet=OrderSend(Symbol(),OP_BUY,lots3,Ask,3,Bid-stoploss3*Point,Ask+takeprofit3*Point,"3",magic,0,clrGreen);
           }
         // if (getLastOrderCloseType() == 1) ticet=OrderSend(Symbol(),OP_BUY,lots3,Ask,3,Bid-stoploss3*Point,Ask+takeprofit3*Point,"4",magic,0,clrGreen);
         //if (getLastOrderCloseType() == 0) ticet=OrderSend(Symbol(),OP_SELL,lots3,Bid,3,Ask+stoploss3*Point,Bid-takeprofit3*Point,"3",magic,0,clrRed);
        
     // } //(rsi<OverSold))
      //Partie 3 
     // else if(t<16383)rsi>OverBought2))
     //   {
        if(Counts()==2)// &&  (MA_Fast1<MA_Low1  && rsi<OverSold && Close[0] < Low[4]))// && (RunOnce || (Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0)))
           {
          ticet=OrderSend(Symbol(),OP_SELL,lots3,Bid,3,Ask+stoploss3*Point,Bid-takeprofit3*Point,"3",magic,0,clrRed);
           }
           
           
           
     
        
     }
  }
   int getLastOrderCloseType ()
   {
   datetime t = 0;
   int tick = -1;
   
   int i,total=OrdersHistoryTotal();
   for(i=0; i<total; i++) {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
         {
            if (t < OrderCloseTime()){
               t = OrderCloseTime();
               tick = OrderTicket();
            }
         }
      }
   }
   
   for(i=0; i<total; i++) {
      if (OrderSelect(tick,SELECT_BY_TICKET)) {
         return OrderType();
      }
   }
   
   return tick;
}  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountSELL()
  {
   int count=0;
   int i;
   for(i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELL)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountBUY()
  {
   int count=0;
   int i;
   for(i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUY)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int Counts()
  {
   int count=0,i;

   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderOpenTime()>=EaStartTime)
           {
            if(OrderProfit()>0)
              {
               if(count==0)
                 {
                  OnInit();
                  EaStartTime=TimeCurrent();
                  RunOnce = true;
                  return(count);
                                              
                }
              }
            else
              {
               count++;
              }
           }
         if(count> 2 )
            {
               OnInit();
               EaStartTime=TimeCurrent();
               RunOnce = true;
              return(count);
            }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountVsego()
  {
   int Vsego;
   Vsego=CountBUY()+CountSELL();

   return(Vsego);
  }
//+------------------------------------------------------------------+
bool IsLastOrderClose()
  {
   bool signal=false;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(select && OrderSymbol()==_Symbol && OrderMagicNumber()==magic)
        {
         if(OrderType()==OP_BUY && OrderOpenTime()>=EaStartTime)
           {
            if(OrderClosePrice()>OrderStopLoss() && OrderClosePrice()<OrderTakeProfit())
              {
               signal=true;
              }
            break;
           }
         else if(OrderType()==OP_SELL && OrderOpenTime()>=EaStartTime)
           {
            if(OrderClosePrice()<OrderStopLoss() && OrderClosePrice()>OrderTakeProfit())
              {
               signal=true;
              }
            break;
           }
        }
     }
   return(signal);
  }
//+------------------------------------------------------------------+


Responded

1
Developer 1
Rating
(8)
Projects
14
29%
Arbitration
1
0% / 0%
Overdue
7
50%
Free
2
Developer 2
Rating
(22)
Projects
28
29%
Arbitration
3
0% / 67%
Overdue
7
25%
Free
Similar orders
I have 2 trading view indicators by GainzAlgo that I want code to mt5 , could u advise? I need you to give me response if you can convert This
I am looking to acquire an EXISTING and PROVEN MetaTrader 5 Expert Advisor. I am NOT looking for someone to develop a random new strategy from scratch. The objective is to find a robust EA with an existing track record, verify its performance and robustness, and purchase the MQL5 source code together with clearly defined commercial rights. MAIN REQUIREMENTS The EA should meet most or all of the following
Project Description I am looking for an experienced MQL5/MT5 Expert Advisor developer to develop an automated trading EA for XAUUSD on the M3 timeframe , running on an Exness account . The EA will automate a manual strategy based on SNR/GAP zones , using two setup types: Price Rejection Price Correction The EA should identify valid BUY/SELL setups around predefined SNR/GAP areas, apply configurable RSI, SMA, EMA and
Looking for an experienced Sierra Chart ACSIL/C++ developer to customize footprint chart. I need 3 things: 7-Day ATR – calculate and display a configurable 7-day ATR. Custom Footprint – footprint chart to match my preferred layout/data display. Automatic LVN – detect and plot Low Volume Nodes automatically based on volume distribution. I need to build one from scratch . Experience with Sierra Chart, ACSIL
Looking for an experienced Sierra Chart ACSIL/C++ developer to customize an existing footprint chart. I need 3 things: 7-Day ATR – calculate and display a configurable 7-day ATR. Custom Footprint – modify my existing footprint chart to match my preferred layout/data display. Automatic LVN – detect and plot Low Volume Nodes automatically based on volume distribution. I already have a working footprint chart, so no
//———————————————————————————————————————————————————————————————————— struct S_MCAV { double matureSum; double totalSum; double value; void Init () { matureSum = 0.0; totalSum = 0.0; value = 0.5; } void AddContext (int ctx) { totalSum += 1.0; if (ctx == 1) matureSum += 1.0; } void ApplyDecay (double rate) { matureSum *= rate; totalSum *= rate; } void Update () {
I am looking for a Senior MQL5 Developer to create a new MetaTrader 5 Expert Advisor from scratch. I will provide a complete Requirements Specification containing objective entry, exit and risk-management rules. This is not a request to copy or decompile an existing product. Project requirements: Clean and modular MQL5 source code. Exact implementation of the supplied strategy. One signal evaluation per configured
NinjaTrader 8 / NinjaScript Phase 1 build: convert an existing Auction Market Theory (AMT) strategy into objective, alert-only decision-support logic. Not a bot, no auto-execution — trades stay manual. Covers NQ/MNQ, ES, CL, MGC using 30-min TPO/Volume Profile context with 5-min confirmation: one 5-min close outside VAH/VAL = acceptance, close back inside = rejection. Dashboard shows bias, auction state, location
Hi i need help to connect my chat gtp with ninja trader I have all tools. Just need supervision and seeking a professional who can do that for me. This the bridge extension https://crosstrade.io/blog/chatgpt-to-ninjatrader-mcp-walkthrough
MetaTrader 5 (MT5) Price-Level Monitoring & Automated Phone Call Alert System Developer Needed Project Overview I am looking for an experienced developer to build a custom trading assistant for MetaTrader 5 (MT5) that monitors important price levels I manually mark on my charts and immediately calls my phone when the market reaches or interacts with those levels. This is Phase 1 of a larger trading assistant project

Project information

Budget
30+ USD
Deadline
to 1 day(s)