Problem opening position

仕事が完了した

実行時間25 秒
依頼者からのフィードバック
Nice job :)
開発者からのフィードバック
Perfect

指定

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);
}

応答済み

1
開発者 1
評価
(117)
プロジェクト
138
41%
仲裁
30
7% / 77%
期限切れ
17
12%
2
開発者 2
評価
(90)
プロジェクト
136
14%
仲裁
43
21% / 28%
期限切れ
14
10%
パブリッシュした人: 2 codes
3
開発者 3
評価
(94)
プロジェクト
148
59%
仲裁
16
38% / 13%
期限切れ
25
17%
パブリッシュした人: 1 code
4
開発者 4
評価
(620)
プロジェクト
680
57%
仲裁
25
16% / 60%
期限切れ
228
34%
類似した注文
Alphapipfx 30+ USD
Sniper Strategy EA -Presicion Forex Trading Bot for MT4 and MT5 Sniper Strategy EA is a fully automated Expert Advisor that executes high-probability forex trades using EMA 50/200 trend detection, RSI 14 momentum filtering, and automatic Support and Resistance zone identification. This bot does not chase price — it waits for price to come to key levels and confirms with multiple indicators before entering, just like
I am looking for an experienced MQL5 developer to improve an existing forex EA, not build a completely new robot from zero. Important note: I use GPT to help me write because my English is limited. The wording may be assisted by GPT, but the trading issues, testing observations, and improvement goals are real from my side. I need a developer who is patient, understands strategy logic well, and can explain the
Fair Value Gap Expert , Optimize the core logic for live chart . [Filters are working] Lets ace the trailing stop . Change points to pip . Project will start from next week
Double ma 30+ USD
Create an EA on moving averages. The EA will open a trade when the price is above the averages. It will open another when it is below the averages. Ability to work on any timeframe. Ability to use a news filter and a martingale...or to work on a grid
Project Description I am looking for a highly experienced MQL5 developer to build a professional-grade Expert Advisor for MetaTrader 5, focused on XAUUSD (Gold). This project is not a simple EA, but the foundation of a scalable multi-strategy trading system, designed for long-term development and future upgrades. Core Concept The EA must support a maximum of 5 internal strategies, each working independently but
Hi, Before ordering, I want to verify the quality of your ICT/SMC logic. Do you have an existing indicator or strategy (your own work) that I can test on TradingView? If yes, please provide: 1. A demo (invite-only script or video) 2. Proof it is NON-repainting (explained clearly) 3. Live or replay demonstration (not static screenshots) Specifically I want to see: * Clean swing structure (no consecutive highs/lows) *
Project Overview ​I am looking for a high-level Algorithmic Trader / Developer to build a sophisticated, fully automated scalping system for the Nasdaq-100 Future (NQ) . The system must integrate institutional order flow logic with market structure analysis. ​The core logic must be written in Python , acting as a central hub that bridges ATAS (as the primary data source for Order Flow) and MetaTrader 5 (as the
Hi Im working with a Crypto trading company and we want to branch out with our indicator, i'm researching the bot automation and need some hands on board. i i want to hear your opinion about the indicator that i would like you to build. in the PDF i explain the whole indicator and how it need to look like. happy to hear form you
Existing EA 30 USD
I’m looking to acquire an existing, profitable Expert Advisor (EA) with full source code to add to our client investment portfolio. To be clear, this is not a request to develop or design a new strategy. If you already have an EA that is proven, consistent, and production-ready, I’m open to reviewing it immediately. Please apply only if you meet all the requirements below. Submissions without a proper introduction or
have the Beatrix Inventor Expert Advisor (EA) that was profitable in the past but has been losing money recently. I need an experienced EA developer/optimizer to study the trade history (especially Stop Loss hits, drawdown periods, SL/TP behavior, win/loss ratio, etc.) and recommend + implement specific tweaks so it becomes consistently profitable again. Your job: 1. Deep analysis of why the EA is no longer

プロジェクト情報

予算
30+ USD
締め切り
最高 1 日