Problem opening position

MQL4 Indicadores Experts C++

Trabalho concluído

Tempo de execução 25 segundos
Comentário do cliente
Nice job :)
Comentário do desenvolvedor
Perfect

Termos de Referência

Hello,

Problem opening position

example:

When I have an order that opens either to bull or sell in the function

if(Counts () == 0

if it's a bull order and my stop loss is hit then it will go to the function

if (Counts () == 1 ect ...

what I want is when my function

if (Counts () == 2

is hit and a bull order is opened and my stop loss is hit then my function

if (Counts () == 3

will open a sell order.

and if my function

if (Counts () == 2

opens a sell order then my function

if (Counts () == 3

will open a bull command



//|                                                       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.10;
extern double  lots4          = 0.01;
extern double  lots5          = 0.03;
extern double  lots6          = 0.10;
extern double  lots7          = 0.01;
extern double  lots8          = 0.03;
extern double  lots9          = 0.10;
extern double  lots10         = 0.01;
extern double  lots11          = 0.03;
extern double  lots12          = 0.10;





input int      TakeProfit1     =   10;
input int      StopLoss1       =   20;
input int      TakeProfit2     =   10;
input int      StopLoss2       =   20;
input int      TakeProfit3     =   10;
input int      StopLoss3       =   20;
input int      TakeProfit4     =   10;
input int      StopLoss4       =   20;
input int      TakeProfit5     =   10;
input int      StopLoss5       =   20;
input int      TakeProfit6     =   10;
input int      StopLoss6       =   20;
input int      TakeProfit7     =   10;
input int      StopLoss7       =   20;
input int      TakeProfit8     =   10;
input int      StopLoss8       =   20;
input int      TakeProfit9     =   10;
input int      StopLoss9       =   20;
input int      TakeProfit10    =   10;
input int      StopLoss10      =   20;
input int      TakeProfit11     =   10;
input int      StopLoss11       =   20;
input int      TakeProfit12     =   10;
input int      StopLoss12       =   20;








input int period=14; // Averagin period for calculation
input int period1=14; 
input int period2=14; 
input int period3=14; 
//input ENUM_APPLIED_PRICE appPrice=PRICE_HIGH; // Applied price
input int OverBought=70; // Over bought level
input int OverSold=30; // Over sold level
input int OverBought1=75; // Over bought level
input int OverSold1=25; // Over sold level
input int OverBought2=80; // Over bought level
input int OverSold2=20; // Over sold level
input int OverBought3=85; // Over bought level
input int OverSold3=15; // Over sold level
extern int     magic          = 118516;
//extern double  Level          = 1.3660;
//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;
double takeprofit4=TakeProfit4;
double stoploss4 =StopLoss4;
double takeprofit5=TakeProfit5;
double stoploss5 =StopLoss5;
double takeprofit6=TakeProfit6;
double stoploss6 =StopLoss6;
double takeprofit7=TakeProfit7;
double stoploss7 =StopLoss7;
double takeprofit8=TakeProfit8;
double stoploss8 =StopLoss8;
double takeprofit9=TakeProfit9;
double stoploss9 =StopLoss9;
double takeprofit10=TakeProfit10;
double stoploss10 =StopLoss10;
double takeprofit11=TakeProfit11;
double stoploss11 =StopLoss11;
double takeprofit12=TakeProfit12;
double stoploss12 =StopLoss12;




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

  {
   RunOnce=false;
   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;
      takeprofit4  =TakeProfit4*10;
      stoploss4    =StopLoss4*10;
      takeprofit5  =TakeProfit5*10;
      stoploss5    =StopLoss5*10;
      takeprofit6  =TakeProfit6*10;
      stoploss6    =StopLoss6*10;
      takeprofit7  =TakeProfit7*10;
      stoploss7    =StopLoss7*10;
      takeprofit8  =TakeProfit8*10;
      stoploss8    =StopLoss8*10;
      takeprofit9  =TakeProfit9*10;
      stoploss9    =StopLoss9*10;
      takeprofit10  =TakeProfit10*10;
      stoploss10    =StopLoss10*10;
      takeprofit11  =TakeProfit11*10;
      stoploss11    =StopLoss11*10;
      takeprofit12  =TakeProfit12*10;
      stoploss12    =StopLoss12*10;



   


      
     }
   return(INIT_SUCCEEDED);
  }
 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnTimer()
{
OnTick();        
}
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{

  if(IsLastOrderClose())
    {
    OnInit();
    Print("Ea Closed Manually ");
    EaStartTime=TimeCurrent();
    }
      
      double rsi=iRSI(_Symbol,PERIOD_CURRENT,period,PRICE_HIGH,1);
      double rsi1=iRSI(_Symbol,PERIOD_CURRENT,period1,PRICE_HIGH,1);
      double rsi2=iRSI(_Symbol,PERIOD_CURRENT,period2,PRICE_HIGH,1);
      double rsi3=iRSI(_Symbol,PERIOD_CURRENT,period3,PRICE_HIGH,1);
      double MA_Fast1,MA_Low1,MA_Fast2,MA_Low2;

          MA_Fast1=iMA( NULL, PERIOD_M1, 1, 0, MODE_SMA, PRICE_TYPICAL, 0); // áûñòðàÿ ÌÀ
          MA_Low1=iMA( NULL, PERIOD_M1, 20, 7, MODE_SMA, PRICE_CLOSE, 0); // ìåäëåííàÿ ÌÀ 
          MA_Fast2=iMA( NULL, PERIOD_M1, 1, 0, MODE_SMA, PRICE_TYPICAL, 1); // áûñòðàÿ ÌÀ
          MA_Low2=iMA( NULL, PERIOD_M1, 20, 7, MODE_SMA, PRICE_CLOSE, 1); // ìåäëåííàÿ ÌÀ 
          
         






   int ticet;
   int t=MathRand();
   if(CountVsego()==0)
     {
      if(t>16384)
        {
         if(Counts()==0&& (rsi<OverSold))//&&( Close[0] > High[1] ))// && (RunOnce || (Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_BUY,lots1,Ask,3,Bid-stoploss1*Point,Ask+takeprofit1*Point,"1",magic,0,clrGreen);
            if(ticet>0)
            {
               RunOnce=true;//OverSold
            }
         }
        }
// Partie 1 
     else if(t<16384)
        {
         if(Counts()==0&&(rsi>OverBought ))//&&( Close[0] < Low[1] ))// && (RunOnce || (Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_SELL,lots1,Bid,3,Ask+stoploss1*Point,Bid-takeprofit1*Point,"1",magic,0,clrRed);
            if(ticet>0)
            {
               RunOnce=true;
            }
         }
        }
     // if(t>16384)
      //  {
         if(Counts()==1&&  (rsi1<OverSold1))// && MA_Fast2<MA_Low2 ))//&&( Close[0] > High[1] ))// && (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(ticet>0)
          //  {
          //     RunOnce=true;
            }
       //  }
      //  }
// Partie 2 
    // else if(t<16384)
      //  {
         if(Counts()==1&&  (rsi1>OverBought1 ))// && MA_Fast2>MA_Low2   ))//&&( Close[0] < Low[1] ))// && (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(ticet>0)
       //     {
       //        RunOnce=true;
            }
        // }
       // }
     // if(t>16384)
      //  {
         if(Counts()==2&&  (rsi2<OverSold2))// && MA_Fast4<MA_Low4 ))//&&( Close[0] > High[1] ))// && (RunOnce || (Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_BUY,lots3,Ask,3,Bid-stoploss3*Point,Ask+takeprofit3*Point,"3",magic,0,clrGreen);
        //    if(ticet>0)
         //   {
         //      RunOnce=true;
            }
        // }
      //  }
//Partie 3 
    // else if(t<16384)
    //    {
         if(Counts()==2&&  (rsi2>OverBought2 ))// && MA_Fast4>MA_Low4   ))//&&( Close[0] < Low[1] ))// && (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);
           // if(ticet>0)
            //{
            //   RunOnce=true;
            }
       //  }
     //   }                
      // if(t>16384)
      //  {
         if(Counts()==3&&(rsi<OverSold))//&&( Close[0] > High[1] ))// && (RunOnce || (Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_BUY,lots4,Ask,3,Bid-stoploss4*Point,Ask+takeprofit4*Point,"4",magic,0,clrGreen);
          //  if(ticet>0)
           // {
           //    RunOnce=true;
           // }
         }
       // }
// Partie 4 
    // else if(t<16384)
     //   {
         if(Counts()==3&&(rsi>OverBought ))//&&( Close[0] < Low[1] ))// && (RunOnce || (Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_SELL,lots4,Bid,3,Ask+stoploss4*Point,Bid-takeprofit4*Point,"4",magic,0,clrRed);
        //    if(ticet>0)
        //    {
        //       RunOnce=true;
            }
      //   }
      //  }
    //  if(t>16384)
     //   {
         if(Counts()==4&&  (rsi1<OverSold1))// && MA_Fast2<MA_Low2 ))//&&( Close[0] > High[1] ))// && (RunOnce || (Ask >=Level && Ask<=Level+(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_BUY,lots5,Ask,3,Bid-stoploss5*Point,Ask+takeprofit5*Point,"5",magic,0,clrGreen);
        //    if(ticet>0)
        //    {
        //       RunOnce=true;
            }
       //  }
       // }
// Partie 5 
  //   else if(t<16384)
    //    {
         if(Counts()==4&&  (rsi1>OverBought1 ))// && MA_Fast2>MA_Low2   ))//&&( Close[0] < Low[1] ))// && (RunOnce || (Bid <=Level && Bid >= Level-(MaxDeviation*_Point) && Level !=0)))
         {
            ticet=OrderSend(Symbol(),OP_SELL,lots5,Bid,3,Ask+stoploss5*Point,Bid-takeprofit5*Point,"5",magic,0,clrRed);
           // if(ticet>0)
          //  {
            //   RunOnce=true;
           // }
        // }
     
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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 && OrderCloseTime()>=EaStartTime)
          {
             if(OrderProfit()>0)
             {
               if(count==0)
               {
                   OnInit();
                   EaStartTime=TimeCurrent();
               }
               return count;
             }else
             {
               count++;
             }
          }
          if(count > 11 && OrderCloseTime()>=EaStartTime) count=0;
         }
      }
   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 && OrderCloseTime()>=EaStartTime)
       {
       if(OrderClosePrice()>OrderStopLoss() && OrderClosePrice()<OrderTakeProfit())
         {
         signal = true;
         
         }
         break;
       }
     else if(OrderType()==OP_SELL && OrderCloseTime()>=EaStartTime)
       {
       if(OrderClosePrice()<OrderStopLoss() && OrderClosePrice()>OrderTakeProfit())
         {
         signal = true;
         
         }
         break;
       }
       break;
     }
  }
return(signal);
}

Respondido

1
Desenvolvedor 1
Classificação
(117)
Projetos
138
41%
Arbitragem
30
7% / 77%
Expirado
17
12%
Livre
2
Desenvolvedor 2
Classificação
(90)
Projetos
136
14%
Arbitragem
43
21% / 28%
Expirado
14
10%
Livre
Publicou: 2 códigos
3
Desenvolvedor 3
Classificação
(94)
Projetos
148
59%
Arbitragem
16
38% / 13%
Expirado
25
17%
Livre
Publicou: 1 código
4
Desenvolvedor 4
Classificação
(620)
Projetos
680
57%
Arbitragem
25
16% / 60%
Expirado
228
34%
Livre
Pedidos semelhantes
I want EA 'Prop Firm limiter' for protecting account not breached. Below is the preset of the EA which I want made by ChatGPT. There is a lot of EA like this in MQL5 Market or elsewhere. You can refer one of these here. Drawdown Limiter Advanced | Buy Trading Utility for MetaTrader 5 Also in some webpages you can refer the source code. Account Protector for MetaTrader You can suggest better idea even though I don't
PLEASE READ: IF YOU ARE NOT GOING TO ACCEPT THE BELOW THEN PLEASE MOVE ON TO THE NEXT CLIENT. I NEED SOMEONE WHO WILL DO THE WORK FIRST AND THEN CREATE A BUILT-IN DEMO INDI AS PER SPECIFICATIONS BELOW WHICH HAS AN EXPIRY (A DAY OR 2) SO THAT I TEST THE INDI BEFORE WE CREATE THE ORDER. I HAVE HAD PEOPLE WHO PRESSURE ME TO CREATE THE ORDER AND THEN THEY END UP DEVELOPING A FAULTY INDICATOR. AND I HAVE GIVEN THEM THE
PLEASE READ: IF YOU ARE NOT GOING TO ACCEPT THE BELOW THEN PLEASE MOVE ON TO THE NEXT CLIENT. I NEED SOMEONE WHO WILL DO THE WORK FIRST AND THEN CREATE A BUILT-IN DEMO INDI AS PER SPECIFICATIONS BELOW WHICH HAS AN EXPIRY (A DAY OR 2) SO THAT I TEST THE INDI BEFORE WE CREATE THE ORDER. I HAVE HAD PEOPLE WHO PRESSURE ME TO CREATE THE ORDER AND THEN THEY END UP DEVELOPING A FAULTY INDICATOR. AND I HAVE GIVEN THEM THE
Mthizo trades 30 - 200 USD
- *Currency Pairs*: Major pairs such as EUR/USD, XAU/USD and GBP/USD - *Funding Currency*: South African Rand (ZAR) - *Initial Deposit*: R100 (may require additional deposit for live trading) - *Risk Management*: Basic risk management features, such as stop loss and take profit - *Strategy*: Pre-defined strategy based on Smart Money Concept principles - *Cost*: Approximately R100-R200 (one-time cost or
I need an Expert advisor based on AOX signal . it must have check and handing of trade operation..errors. The main criterin for opening and dosing a position : moving average direction the price is higher than the previous bar Trade lots is input parameter bar
Indicator that finds zones. All details in word document Ask questions if need I’d also like to to change from finding bullish marker and main candles to bearish marker and main candles if price crosses past inputted price The document is showing zones for bullish price action. Id like to also change manually in setting for it to show bearish price action ( it will look for bullish candle markers and main) Zones
I would like to have an expert advisor created for this strategy. Strategy Type: Hedging Strategy (Multiple Buy and Sell Strategies) Trade conditions: --> Find Determined time range. For example 8am - 8:05am --> Find hedge range. Hedge range/zone = price high of the determined time range (+1 pip) and price low of the determined time range (-1 pip). --> Long Trade entry conditions = Price breaks the high of the hedge
I need a professional MetaTrader 5 Expert Advisor built specifically for Gold (XAUUSD) scalping. The EA must be safe, reliable, optimized for small and large accounts, and include risk management, AI logic, and full trade control. It should allow both automatic trading and manual trades, with seamless management of both. Core Requirements: 1. Automatic Trade Execution Open trades with multiple lot sizes. Instant flip
When you scroll down, you’ll see the box for requirements. Here’s a structure you can copy-paste and edit: Project Description I need a trading robot (Expert Advisor) for MetaTrader 5 (MQL5). The EA should execute trades automatically based on predefined strategy rules. Trading Strategy Rules Entry: [Explain your entry condition, e.g., “Buy when 50 EMA crosses above 200 EMA”] Exit: [Explain exit condition, e.g
Hi i wanted to see what you will charge me to make a simple indicator in TOS which i can plot on my activity and positions section. Firstly I want a custom column where we can calculate the difference between the trade price and the current price of a stock, or future or option. so we we have the value in that column. Example NVDA - Trade price 140 - Mark is 190 so this new colum will show +50 and option we bought at

Informações sobre o projeto

Orçamento
30+ USD
IVA (20%): 6 USD
Total: 36 USD
Desenvolvedor
27 USD
Prazo
para 1 dias