Hi, I need someone who can create an EA that trades by RSI divergence (Zigzag included preferred)

Auftrag beendet

Ausführungszeit 10 Tage
Bewertung des Kunden
Hooman is a great programmer, he is patient and professional, will work with him again in the future.
Bewertung des Entwicklers
He is so responsible and I had a good job I hope to work with you in another job.

Spezifikation

Hi, I am trying to create an EA that trades by RSI divergence, I tried coding it as below but when I run it in backtest, the backtest ends in less than a second. I would like a functional EA based on this code that all I need was to change the numerical parameters to make it work for me. My trade logic is simple, I would like to be able to trend when the latest PeakPrice > last PeakPrice (note: latest doesn't have to be current, but last means the one before the latest) && rsi(latest_peak)<rsi(last_peak) and when the latest TroughPrice< last TroughPrice && rsi(latest_trough)>rsi(last_trough). It would be great if you can include Zigzag in finding the Peak and Trough. Attached is the technical indicators I would like my EA to base on (it didn't include a Zigzag though).

//+------------------------------------------------------------------+
//|                                                       RSI EA.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                           http://free-bonus-deposit.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, dXerof"
#property link      "http://free-bonus-deposit.blogspot.com"
#property version   "1.00"
#property strict

#define arrowsDisplacement 0.0003

input bool   OpenBUY=True;
input bool   OpenSELL=True;
input bool   CloseBySignal=True;
input double StopLoss=0;
input double TakeProfit=0;
input double TrailingStop=0;
input int    RSIperiod=14;
input double BuyLevel=30;
input double SellLevel=70;
input bool   AutoLot=True;
input double Risk=1;
input double ManualLots=0.1;
input int    MagicNumber=123;
input string Koment="RSIea";
input int    Slippage=10;

input ENUM_APPLIED_PRICE    RSI_applied_price                = 0;

//---- buffers

double rsi[];


//----

//---
int OrderBuy,OrderSell;
int ticket;
int LotDigits;

double Trail,iTrailingStop;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {

   double stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
   OrderBuy=0;
   OrderSell=0;
   for(int cnt=0; cnt<OrdersTotal(); cnt++)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderComment()==Koment)
           {
            if(OrderType()==OP_BUY) OrderBuy++;
            if(OrderType()==OP_SELL) OrderSell++;
            if(TrailingStop>0)
              {
               iTrailingStop=TrailingStop;
               if(TrailingStop<stoplevel) iTrailingStop=stoplevel;
               Trail=iTrailingStop*Point;
               double tsbuy=NormalizeDouble(Bid-Trail,Digits);
               double tssell=NormalizeDouble(Ask+Trail,Digits);
               if(OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trail && Bid-OrderStopLoss()>Trail)
                 {
                  ticket=OrderModify(OrderTicket(),OrderOpenPrice(),tsbuy,OrderTakeProfit(),0,Blue);
                 }
               if(OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trail && (OrderStopLoss()-Ask>Trail || OrderStopLoss()==0))
                 {
                  ticket=OrderModify(OrderTicket(),OrderOpenPrice(),tssell,OrderTakeProfit(),0,Blue);
                 }
              }
           }
     }
   double rsim1=iRSI(Symbol(),1,RSIperiod,PRICE_CLOSE,1);
   double rsim5=iRSI(Symbol(),5,RSIperiod,PRICE_CLOSE,1);
   double rsim15=iRSI(Symbol(),15,RSIperiod,PRICE_CLOSE,1);
   double rsim30=iRSI(Symbol(),30,RSIperiod,PRICE_CLOSE,1);
   double rsim60=iRSI(Symbol(),60,RSIperiod,PRICE_CLOSE,1);
   double rsid1=iRSI(Symbol(),1440,RSIperiod,PRICE_CLOSE,0);
   double rsid2=iRSI(Symbol(),1440,RSIperiod,PRICE_CLOSE,1);
// double HTb=iCustom(Symbol(),0,"HalfTrend-1.02",0,0); //buy
// double HTs=iCustom(Symbol(),0,"HalfTrend-1.02",1,0); //buy
//--- open position
   int shift=4;
   if(IsTrough(shift) == true) 
   {
    int currentTrough = shift;
    int lastTrough = GetLastTrough(shift);
    if(OpenBUY && OrderBuy<3 && rsi[currentTrough] > rsi[lastTrough] && Low[currentTrough] < Low[lastTrough])OPBUY(); 
   } 
   if(IsPeak(shift) == true)
   {
    int currentPeak = shift;
    int lastPeak = GetLastPeak(shift);
    if(OpenSELL  && OrderSell<3  && rsi[currentPeak] < rsi[lastPeak] && High[currentPeak] > High[lastPeak])OPSELL(); 
   }
//--- close position by signal
   if(CloseBySignal)
     {
      if(OrderSell>0  && rsim30>70 && rsim60>70) CloseSell();
      if(OrderBuy>0 && rsim30<30  && rsim60<30)  CloseBuy();
     }
//---
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OPBUY()
  {
   double StopLossLevel;
   double TakeProfitLevel;
   if(StopLoss>0) StopLossLevel=Bid-StopLoss*Point; else StopLossLevel=0.0;
   if(TakeProfit>0) TakeProfitLevel=Ask+TakeProfit*Point; else TakeProfitLevel=0.0;

   ticket=OrderSend(Symbol(),OP_BUY,LOT(),Ask,Slippage,StopLossLevel,TakeProfitLevel,Koment,MagicNumber,0,DodgerBlue);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OPSELL()
  {
   double StopLossLevel;
   double TakeProfitLevel;
   if(StopLoss>0) StopLossLevel=Ask+StopLoss*Point; else StopLossLevel=0.0;
   if(TakeProfit>0) TakeProfitLevel=Bid-TakeProfit*Point; else TakeProfitLevel=0.0;
//---
   ticket=OrderSend(Symbol(),OP_SELL,LOT(),Bid,Slippage,StopLossLevel,TakeProfitLevel,Koment,MagicNumber,0,DeepPink);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseSell()
  {
   int  total=OrdersTotal();
   for(int y=OrdersTotal()-1; y>=0; y--)
     {
      if(OrderSelect(y,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber)
           {
            ticket=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,Black);
           }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseBuy()
  {
   int  total=OrdersTotal();
   for(int y=OrdersTotal()-1; y>=0; y--)
     {
      if(OrderSelect(y,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber)
           {
            ticket=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,Black);
           }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LOT()
  {
   double lotsi;
   double ilot_max =MarketInfo(Symbol(),MODE_MAXLOT);
   double ilot_min =MarketInfo(Symbol(),MODE_MINLOT);
   double tick=MarketInfo(Symbol(),MODE_TICKVALUE);
//---
   double  myAccount=AccountBalance();
//---
   if(ilot_min==0.01) LotDigits=2;
   if(ilot_min==0.1) LotDigits=1;
   if(ilot_min==1) LotDigits=0;
//---
   if(AutoLot)
     {
      lotsi=NormalizeDouble((myAccount*Risk)/10000,LotDigits);
        } else { lotsi=ManualLots;
     }
//---
   if(lotsi>=ilot_max) { lotsi=ilot_max; }
//---
   return(lotsi);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateRSI(int x1)
{
    rsi[x1] = iRSI(Symbol(),PERIOD_CURRENT,RSIperiod,RSI_applied_price,x1);             
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsPeak(int shift)
{
    
    if(iHigh(NULL,0,shift)>=iHigh(NULL,0,shift+1) && iHigh(NULL,0,shift+1)>=iHigh(NULL,0,shift+2) && iHigh(NULL,0,shift+2)>=iHigh(NULL,0,shift+3)
       && iHigh(NULL,0,shift)>=iHigh(NULL,0,shift-1) && iHigh(NULL,0,shift-1)>=iHigh(NULL,0,shift-2) && iHigh(NULL,0,shift-2)>=iHigh(NULL,0,shift-3))
        return(true);
    else 
        return(false);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsTrough(int shift)
{
    if(iLow(NULL,0,shift)<=iLow(NULL,0,shift+1) && iLow(NULL,0,shift+1)<=iLow(NULL,0,shift+2) && iLow(NULL,0,shift+2)<=iLow(NULL,0,shift+3)
       && iLow(NULL,0,shift)<=iLow(NULL,0,shift-1) && iLow(NULL,0,shift-1)<=iLow(NULL,0,shift-2) && iLow(NULL,0,shift-2)<=iLow(NULL,0,shift-3))
        return(true);
    else 
        return(false);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetLastPeak(int shift)
{
    for(int j = shift + 5; j < Bars; j++)
    {
        if(iHigh(NULL,0,j)>=iHigh(NULL,0,j+1) && iHigh(NULL,0,j+1)>=iHigh(NULL,0,j+2) && iHigh(NULL,0,j+2)>=iHigh(NULL,0,j+3) &&
           iHigh(NULL,0,j)>=iHigh(NULL,0,j-1) && iHigh(NULL,0,j-1)>=iHigh(NULL,0,j-2) && iHigh(NULL,0,j-2)>=iHigh(NULL,0,j-3))
            return(j);
    }
    return(-1);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetLastTrough(int shift)
{
    for(int j = shift + 5; j < Bars; j++)
    {
        if(iLow(NULL,0,j)<=iLow(NULL,0,j+1) && iLow(NULL,0,j+1)<=iLow(NULL,0,j+2) && iLow(NULL,0,j+2)<=iLow(NULL,0,j+3) &&
           iLow(NULL,0,j)<=iLow(NULL,0,j-1) && iLow(NULL,0,j-1)<=iLow(NULL,0,j-2) && iLow(NULL,0,j-2)<=iLow(NULL,0,j-3))
            return(j);
    }
    return(-1);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+


Dateien:

Bewerbungen

1
Entwickler 1
Bewertung
(365)
Projekte
412
36%
Schlichtung
35
26% / 57%
Frist nicht eingehalten
63
15%
Frei
2
Entwickler 2
Bewertung
(499)
Projekte
744
56%
Schlichtung
48
31% / 31%
Frist nicht eingehalten
120
16%
Frei
Veröffentlicht: 1 Beispiel
3
Entwickler 3
Bewertung
(119)
Projekte
127
41%
Schlichtung
3
33% / 67%
Frist nicht eingehalten
0
Frei
4
Entwickler 4
Bewertung
(4)
Projekte
12
0%
Schlichtung
0
Frist nicht eingehalten
3
25%
Frei
5
Entwickler 5
Bewertung
(49)
Projekte
134
27%
Schlichtung
62
13% / 53%
Frist nicht eingehalten
58
43%
Frei
Veröffentlicht: 333 Artikel, 1 Beispiel
6
Entwickler 6
Bewertung
(117)
Projekte
138
41%
Schlichtung
30
7% / 77%
Frist nicht eingehalten
17
12%
Frei
7
Entwickler 7
Bewertung
(17)
Projekte
24
33%
Schlichtung
5
20% / 40%
Frist nicht eingehalten
8
33%
Frei
Ähnliche Aufträge
Automatic buy and sell entries. stoploss (sl) take profit (tp) risk management and adjustable lot size. Adjustable risk percentage per trade. Trailing stop maximum number of open trades. Trading hours filter. Ability to backtest and optimize the strategy. Easy to use settings. The EA should work reliably on mt5 and provide the source code. I want the developer to test the EA and provide backtest results before
I am looking to see if you can convert my pinescript into a NinjaTrader bot so I can get automated trading instead of manually doing it in TradingView i would like to get it to just do the trades for me based on my script. let me know who can do this perfectly
Develop an Expert Advisor for MetaTrader 5 that manages existing positions. Features Automatically detect all open positions. Apply Break-Even after price reaches a configurable profit. Partial Close: Close X% of volume at the first target. Move Stop Loss to Break-Even. ATR Trailing Stop (optional). Magic Number filter. Comment filter. Symbol filter. Trading session filter. Retry mechanism for trade operations
WillyFX 30+ USD
need an MT5 Expert Advisor designed for educational and demo-account testing. The robot should identify trading opportunities using clear technical rules, manage entries and exits automatically, include stop-loss and take-profit controls, limit risk per trade, avoid excessive trading, and provide adjustable settings for backtesting and optimization
Forex robot 30+ USD
Hello… need an MT5 expert advisor that scans up to five user-selected symbols for bullish and bearish engulfing patterns on a chosen timeframe, displays a signal dashboard with pattern strength scores, and automatically enters trades with risk-based lot sizing, fixed stop-loss and take-profit tied to the engulfing candle’s high or low
Mt5 ea 30+ USD
I have a fast execution ea that need a little touch, it trade on gold and my problem is about the risk ratio the tp is 3pip and stop loss 20 but i cannot get it right to make the average win larger and average loss lower. I would like to know if i can get help to get it right without touching the tragedy and the trade frequency. Those two pictures I attached is the example of what my bot actually do like i explained
Requirements Specification Here is an example of Requirements Specification for the development of the MACD Sample Expert Advisor, which is available in the MetaTrader 5 standard package. 1. The idea of the trading system is as follows : market entries are performed when MACD's main and signal lines intersect in the current trend direction . 2. Trend is determined based on the Exponential Moving Average with
REWARD! 35 - 200 USD
I will pay you a REWARD, if you find / create an EA that fits ALL the below criteria! Platform : MT4 ONLY! NOT MT5, I repeat: NOT MT5!! Timeframe : doesn’t matter Pair : doesn’t matter Strategy : doesn’t matter Drawdown : no more than 25% Return : minimum 5%, every month Lot sizing : dynamic lots I will backtest the EA with 99.9% tick data accuracy for a period of 20+ years . If the EA can produce minimum 5% returns
hello could you make me same indicator for ninja ? https://www.youtube.com/watch?v=pxs2MuqvH3w if yes for how much and timeline ? thks in advance and please reply me as soon as possible you get my notification
Hello, I am looking for someone to Run and Monitor the EA and Signals in the account. Should be able to monitor daily and fix any issue in the signal Copying and EA running. The Settings and configuration to be checked and updated periodically. Should be available to report and update on daily basis. Tell me the cost and your previous experience for the same. Thanks

Projektdetails

Budget
35+ USD
Ausführungsfristen
bis 3 Tag(e)