You didn't post a topic yet. Let us show you how to make your first topic and upload your favorite forex robot. Guide me

Skip to forum content

Quick Login / Register with Facebook Account!

Login with Facebook

Login with Username and Password!

     Username:       Password:  Login

Register  |  Forgot Password?

 

The latest topics with attached files (Forex robots, Forex Indicators, etc..)

Forums in this category with details of Replies, Views, last post

EURUSD RFX- 1MIN

by ftoncu.bim

FOREX EA

by rossolebile

My forex ea

by pilililo2

SWB stealth v1.01 EA

by Zahid Frx

Hide

Highest Forex Leverage 1:3000!

Try your Forex Robot with with the highest leverage 1:3000!

All Forex robot strategies allowed! Scalping, hedging, martingale, etc...



Search options (Page 49 of 310)

Profit → ► MT4talk - FREE Forex Robots and more... → Search results

Pages Previous 1 47 48 49 50 51 310 Next

Perform new search

Posts found: 481 to 490 of 3,096

Please find the "No Sleep EA" without any restrictions (No Time or Account Type Limit).

It is coded by me ...

It can work on any demo or live account for unlimited period of time.
It also can be back-tested, even I'm not back test believer. Forward test is the best of course.

I made 20% in 15 days with only 6.5% DD on EURUSD ... Can work on any pair. Lately, I use it on Gold because of the high lot rebate I got from broker and it's profit as well.

So, easily can made 40% a month. You can even make more than 100% but you need to withdraw profit frequently.

You can use it on any time frame ...
If you want to use multiple pairs, then use safer settings ...
If you want to use 1 pair, I recommend GBPUSD or Gold but current settings
will not work on gold, you need to use yours to let it go.

Lower time frame means higher profit, higher DD ...
Higher time frame means lower profit, lower DD ...

So, use your own settings that you feel comfortable with as I can't take settings responsibility.

Use it on demo first for at least a week ...

Semua EA Membutuhkan Ketahanan modal, KARENA volatilitas pasar tentunya Sudah disiasati Oleh settingan EA, konsistensi EA Sangat menentukan Tingkat keberhasilan EA, sebagai trader baru saya belum pernah mencoba dengan menggunakan EA, ada baiknya saya mencobanya, semoga saja profit menyertai.

I am not in any way shape or form able to code an EA, and I applaud all of you who can, despite it being profitable or not. I am in the process of learning though, because I'd like to think my trade strategies are consistently profitable, and adaptable to all changes in the forex market. I'd love to see more EA's shared and coded based on risk reward ratios of 1:2 or higher, more EAs usings momentum on breakouts with stops below breakout bars..especially on the 1hour + TF. I am thankful for all the shares of 1/5 min scalping EAs, Grid EAs, even martingales..(makes for a good time killing in backtest seeing how long I can make one last before an equity stop out). I'd like to see some EAs that are based on 3 daily support/resistance levels (based on a good indicator like Auto Pivot etc, whatever you prefer.) But most importantly..scalping eas on low TF are extremely difficult to use on a live account with solid results. There is so many variables, brokers, slippage, spread, you name it. EAs with a solid foundation, at least to be shared to the community, should be less broker/condition specific, and ALWAYS use STOPS. Any time a new grid/martingale is introduced, we might as well title it as.."a ticking time bomb that lasts just a little long than the last one!" 3 EA's that Id like to bring to light as ones with reall potential include Momentum based EAs, KeltnerPro style (momentum related) and things like Forex Earth Robot (kind of griddy, based AGAIN on momentum and uses stops to some extend. Please share if you've got them! thanks! I cannot code, but with the code included, I am able to alter it well enough to maybe help tweak its results to better suit a live account. LAST THING...PLEASEEEEE keep in mind..I use Tick Data Suite as a backtesting agent at 99.9% quality. If you do not have this software..so be it..they offer a 15 day trial though.. What i need to get across here is that I can take a 90% quality backtest EA that just rakes in profit, and then plug it in to 99.9% test through TDS and watch it just hit the floor and slaughter an account. So backtests using TICK data only at high % quality are preferred. Thanks for enduring my rants and I am very thankful for everyone's posts!

Top das galaxias tion where you can set the name of your Expert Advisor and add a short description to it. Since most of Forex trading strategies contain common elements: opening positions, closing positions, trailing s

//+------------------------------------------------------------------+
//                        DO NOT DELETE THIS HEADER
//             DELETING THIS HEADER IS COPYRIGHT INFRIGMENT 
//
//                   Copyright ©2017, https://mt4talk.com
//                     MT4talk Expert Advisor Generator
//                        https://mt4talk.com/eagenerator/
//
// THIS EXPERT ADVISOR (EA) HAS BEEN GENERATED USING MT4talk EA GENERATOR. 
// 
// Disclaimer: This EA is provided to you "AS-IS", and MT4talk disclaims any warranty
// or liability obligations to you of any kind. 
//
// FREE EA LICENSE
// This EA is provided to you for free of charge! You can share this EA on any website or any forums. 
//
// CFTC RULE 4.41
// HYPOTHETICAL OR SIMULATED PERFORMANCE RESULTS HAVE CERTAIN LIMITATIONS. UNLIKE AN ACTUAL PERFORMANCE RECORD, SIMULATED 
// RESULTS DO NOT REPRESENT ACTUAL TRADING. ALSO, SINCE THE TRADES HAVE NOT BEEN EXECUTED, THE RESULTS MAY HAVE UNDER-OR-
// OVER COMPENSATED FOR THE IMPACT, IF ANY, OF CERTAIN MARKET FACTORS, SUCH AS LACK OF LIQUIDITY. SIMULATED TRADING PROGRAMS, 
// IN GENERAL, ARE ALSO SUBJECT TO THE FACT THAT THEY ARE DESIGNED WITH THE BENEFIT OF HINDSIGHT. NO REPRESENTATION IS BEING 
// MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFIT OR LOSSES SIMILAR TO THOSE SHOWN.
//
// U.S. Government Required Disclaimer.
// Commodity Futures Trading Commission Futures and Options trading has large potential rewards, but also large potential risk. 
// You must be aware the risks and be willing to accept them in order to invest in the futures and options markets. 
// Don't trade with money you can't afford to lose. This is neither a solicitation nor an offer to Buy/Sell futures or options.
// No representation is being made that any account will or is likely to achieve profits or losses similar 
// to those discussed on this website. The past performance of any trading system or methodology is not necessarily 
// indicative of future results.
//
// USE THIS EA AT YOUR OWN RISK. 
//
//                      DO NOT DELETE THIS HEADER
//             DELETING THIS HEADER IS COPYRIGHT INFRIGMENT 
//+------------------------------------------------------------------+

#property copyright "Copyright 2017"
#property link      "https://mt4talk.com"
#property version   "1.00"
#property strict
extern double Lotsize=0.01;
extern double Stop_Loss=16;
extern double Take_Profit=50;
extern int Magic_Number=12345;
extern bool Hidden=false;
extern bool Close_opposit_signal=true;
extern double Trailing_Stop=0;
extern int Max_Nr_Of_Trades=0;
extern int Max_Nr_Of_Buy_Trades=0;
extern int Max_Nr_Of_Sell_Trades=0; 
extern bool DayFilter=false; 
extern bool TimeFilter=false;
 
double Risk=0;

double Martingale_Value=0;

bool FixSL=0;
int Money_Management=1;

int cntmartin=0;
double ts=0;
double be=0;
double sl,tp;
int mp;
datetime lasttrade;


 

 

int OnInit() 
 
{ 
    mp=1;
    if (Digits==5 || Digits==3) mp=10; 
    lasttrade=TimeCurrent();
    cntmartin=0;
    
    if (Money_Management==1)   
    {
       Stop_Loss=Stop_Loss/MarketInfo(Symbol(),MODE_TICKVALUE)/mp/Lotsize;
       Take_Profit=Take_Profit/MarketInfo(Symbol(),MODE_TICKVALUE)/mp/Lotsize;
       Break_Even=Break_Even/MarketInfo(Symbol(),MODE_TICKVALUE)/mp/Lotsize;
       Trailing_Stop=Trailing_Stop/MarketInfo(Symbol(),MODE_TICKVALUE)/mp/Lotsize;
    }

    //---
    return(INIT_SUCCEEDED);

} 

 
void OnDeinit(const int reason)
 
{} 

 
void OnTick()
{
    bool TradeAllow=false;
    bool buy_signal=false;
    bool sell_signal=false;
    double sl;
    double tp;
    double lotsize;
    
 
    buy_signal=GetSignal(OP_BUY);
    sell_signal=GetSignal(OP_SELL);
 
    //---       
    if((CloseSignal(OP_BUY)) ||
        (sell_signal && Close_opposit_signal))
    {
      CloseOrders(OP_BUY);
    }
    if((CloseSignal(OP_SELL)) ||
        (buy_signal && Close_opposit_signal))
    {
      CloseOrders(OP_SELL);
    }
 
    if(buy_signal)
    {
        if (Money_Management==2)
        {
            double entry;
        
            entry=MarketInfo(Symbol(),MODE_ASK);
            if(FixSL)
            {    
                sl=NormalizeDouble(entry-Stop_Loss*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS));     
                Lotsize=NormalizeDouble(CalcLotsize(Symbol(),entry,sl,Risk),2);
                tp=NormalizeDouble(entry+CalcDistance(Take_Profit,Lotsize)*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS)); 
            }
            else
            {
                sl=NormalizeDouble(entry-CalcDistance(Stop_Loss,Lotsize)*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS));     
                tp=NormalizeDouble(entry+CalcDistance(Take_Profit,Lotsize)*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS)); 
            }
                
        }
                   
                   
        if (GetLastProfit(lotsize)<0 && Martingale_Type>0)
        {
            Lotsize=lotsize;
            cntmartin++;
        }
        else
        {
            cntmartin=0;
        }
          
        if (Martingale_Type==1)//Increment
        {
            Lotsize+=Martingale_Value;
        }
                
        if (Martingale_Type==2)//Multipli
        {
            Lotsize*=Martingale_Value;
        }
        
        OpenOrder(OP_BUY);
    }
    if(sell_signal)
    {
        if (Money_Management==2)
        {
            double entry;
            entry=MarketInfo(Symbol(),MODE_BID);
            if(FixSL)
            {
                sl=NormalizeDouble(entry+Stop_Loss*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS));
                Lotsize=NormalizeDouble(CalcLotsize(Symbol(),entry,sl,Risk),2);
                tp=NormalizeDouble(entry-CalcDistance(Take_Profit,Lotsize)*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS)); 
            }
            else
            {
                sl=NormalizeDouble(entry+CalcDistance(Stop_Loss,Lotsize)*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS));     
                tp=NormalizeDouble(entry-CalcDistance(Take_Profit,Lotsize)*mp*Point(),(int)MarketInfo(Symbol(),MODE_DIGITS)); 
            }
        }
                
                
        if (GetLastProfit(lotsize)<0 && Martingale_Type>0)
        {
            Lotsize=lotsize;
            cntmartin++;
        }
        else
        {
            cntmartin=0;
        }
              
        if (Martingale_Type==1)//Increment
        {
            Lotsize+=Martingale_Value;
        }
                    
        if (Martingale_Type==2)//Multipli
        {
            Lotsize*=Martingale_Value;
        }
        OpenOrder(OP_SELL);
    }
} 
 
bool GetSignal(int type)
{
    bool b=false;
     
 
    return(b);
} 
 
bool CloseSignal(int type)
{
    bool b=false;
     
 
    return(b);
}
 
void OpenOrder(int type)
{
   int ticket=-1;
   int err=0;
  
    if(type==OP_BUY)
    {
        ticket = OrderSend(Symbol(), OP_BUY, Lotsize, MarketInfo(Symbol(), MODE_ASK), 10, 0, 0,"", Magic_Number);       
        if(ticket<0)
        {
            err=GetLastError();
            //Print ('Error!. Cannot Open BUY, failed with error : ',err);
        }
        else
        {
            if(Money_Management<2)
            {
                sl=NormalizeDouble(MarketInfo(Symbol(), MODE_ASK)-Stop_Loss*mp*MarketInfo(Symbol(),MODE_POINT), MarketInfo(Symbol(),MODE_DIGITS));
                tp=NormalizeDouble(MarketInfo(Symbol(), MODE_ASK)+Take_Profit*mp*MarketInfo(Symbol(),MODE_POINT), MarketInfo(Symbol(),MODE_DIGITS));
            }
            OrderModify(ticket, MarketInfo(Symbol(), MODE_ASK), sl, tp,0);//open price=MarketInfo(Symbol(), MODE_ASK)
        }
    }

    if(type==OP_SELL)
    {
        ticket = OrderSend(Symbol(), OP_BUY, Lotsize, MarketInfo(Symbol(), MODE_BID), 10, 0, 0,"", Magic_Number);       
        if(ticket<0)
        {
            err=GetLastError();
            //Print ('Error!. Cannot Open BUY, failed with error : ',err);
        }
        else
        {
            if(Money_Management<2)
            {
                sl=NormalizeDouble(MarketInfo(Symbol(), MODE_BID)+Stop_Loss*mp*MarketInfo(Symbol(),MODE_POINT), MarketInfo(Symbol(),MODE_DIGITS));
                tp=NormalizeDouble(MarketInfo(Symbol(), MODE_BID)-Take_Profit*mp*MarketInfo(Symbol(),MODE_POINT), MarketInfo(Symbol(),MODE_DIGITS));
            }
            OrderModify(ticket, MarketInfo(Symbol(), MODE_BID), sl, tp,0);//open price=MarketInfo(Symbol(), MODE_ASK)
        }
    }
}
 
void CloseOrders(int type)
{
   int total  = OrdersTotal();
   for (int i = total-1 ; i >=0 ; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && 
        OrderMagicNumber() == Magic_Number && 
        OrderSymbol() == Symbol() && 
        type==OrderType()) 
        {
            switch(OrderType())
            {
                case OP_BUY:
                {
                    OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),10);
                    break;  
                }
                                  
                case OP_SELL:
                {
                    OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),10);
                    break;
                }
            }             
        }
    }
}
 
bool IsNewBar()
{
    if (lasttrade<iTime(Symbol(),0,0))
    {
        lasttrade=iTime(Symbol(),0,0);
        return (true);
    }
    return (false);
}
int GetNrOfTrades(int type)
{
   int t=0;
   
   int total = OrdersTotal();
   int count;
   if(type==OP_BUY || type==OP_SELL)
   {
       for(count = total - 1; count >= 0; count--)
       {
          if(!OrderSelect(count, SELECT_BY_POS, MODE_TRADES)) continue;
          if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_Number && OrderType()==type)
          {
             t++;
          }
       }
       return (t);
   }
   else if(type==6)
   {
       for(count = total - 1; count >= 0; count--)
       {
          if(!OrderSelect(count, SELECT_BY_POS, MODE_TRADES)) continue;
          if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_Number)
          {
             t++;
          }
       }
       return (t);
   }
   return(t);
}
    
 
double CalcLotsize(string symbol,double entry, double sl,double risk)
{
   
   double qty,riskm,dist; 
   dist=MathAbs(entry-sl)/MarketInfo(symbol,MODE_POINT);
   riskm=AccountBalance()*risk/100;
   
   qty=riskm/(dist*MarketInfo(symbol,MODE_TICKVALUE));  
   return( NormalizeDouble(qty,2) );
}
    
 
void Trailing(double Trailing_Stop)
{
  int err;
   double sl = 0;
   bool result;
   
   //
   sl = OrderStopLoss();
   if(OrderType() == OP_BUY)
   {
      if((MarketInfo(Symbol(),MODE_BID) > (OrderOpenPrice() + Trailing_Stop*mp*MarketInfo(Symbol(),MODE_POINT))) )
      {                        
         
         if(OrderStopLoss() == 0) sl = MarketInfo(Symbol(),MODE_BID) - Trailing_Stop*mp*MarketInfo(Symbol(),MODE_POINT);
         if(OrderStopLoss() != 0 && MarketInfo(Symbol(),MODE_BID) >= OrderStopLoss() + Trailing_Stop*mp*MarketInfo(Symbol(),MODE_POINT)) sl = MarketInfo(Symbol(),MODE_BID) - Trailing_Stop*mp*MarketInfo(Symbol(),MODE_POINT);
         while(IsTradeContextBusy()) Sleep(100);
         if(sl > OrderStopLoss())
         {
            ResetLastError();
            result = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(sl, MarketInfo(Symbol(),MODE_DIGITS)), OrderTakeProfit(), 0, CLR_NONE);
            //
            if (result)
            {               
               Print("Trailing Stop updated: #", OrderTicket(), "; SL = ", DoubleToStr(OrderStopLoss(), MarketInfo(Symbol(),MODE_DIGITS)), "; Bid = ", DoubleToStr(MarketInfo(Symbol(),MODE_BID), MarketInfo(Symbol(),MODE_DIGITS)));
            }
            else
            {
               err = GetLastError();
               Print("Error!. Trailing Stop #", OrderTicket(), " order modify failed with error(",err,")");
            }
         }
      }
   }//if(OrderType() == OP_BUY)
   //
   if(OrderType() == OP_SELL)
   {
      
      if((MarketInfo(Symbol(),MODE_ASK) < (OrderOpenPrice() - Trailing_Stop*mp*MarketInfo(Symbol(),MODE_POINT))))
      {
         
         if(OrderStopLoss() == 0) sl = MarketInfo(Symbol(),MODE_ASK) + (Trailing_Stop*mp)*MarketInfo(Symbol(),MODE_POINT);
         if(OrderStopLoss() != 0 && MarketInfo(Symbol(),MODE_ASK) <= OrderStopLoss() - Trailing_Stop*mp*MarketInfo(Symbol(),MODE_POINT)) sl = MarketInfo(Symbol(),MODE_ASK) + (Trailing_Stop*mp)*MarketInfo(Symbol(),MODE_POINT);
         while(IsTradeContextBusy()) Sleep(100);
         if(sl < OrderStopLoss())
         {
            ResetLastError();
            result = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(sl, MarketInfo(Symbol(),MODE_DIGITS)), OrderTakeProfit(), 0, CLR_NONE);
            //
            if (result)
            {
               Print("Trailing Stop updated: #", OrderTicket(), "; SL = ", DoubleToStr(sl, MarketInfo(Symbol(),MODE_DIGITS)), "; Ask = ", DoubleToStr(MarketInfo(Symbol(),MODE_ASK), MarketInfo(Symbol(),MODE_DIGITS)));
            }
            else
            {
               err = GetLastError();
               Print("Error!. Trailing Stop #", OrderTicket(), " order modify failed with error(",err,")");
            }
         }
      }
   }
}
    
 
void ManageTrades()
{
   int t=OrdersTotal();
   for(int i=t-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_Number)
         {
            if (!Hidden)
            {
                if (Money_Management==2)
                {
                    ts=CalcDistance(Trailing_Stop,OrderLots());//OrderLots
                    be=CalcDistance(Break_Even,OrderLots()); 
                }
                else
                {
                    ts=Trailing_Stop;
                    be=Break_Even;
                }
                
                if (Break_Even>0)
                {
                    BreakEven(be);
                }
                if (Trailing_Stop>0)
                {
                    Trailing(ts);
                }
            }
           
         
         }
      }
   }//for end
}
    
 
    
void BreakEven(double Break_Even)
{
   bool result;
   double sl;
   int err;
   //
   ResetLastError();
   if(OrderType() == OP_BUY)
   {
       if(OrderStopLoss() >= OrderOpenPrice()) return;
       
       if (MarketInfo(Symbol(),MODE_BID) >= OrderOpenPrice() + Break_Even*mp*MarketInfo(Symbol(),MODE_POINT))
       {
         sl= OrderOpenPrice() ;
         while(IsTradeContextBusy()) Sleep(100);
         result = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(sl, MarketInfo(Symbol(),MODE_DIGITS)), OrderTakeProfit(), 0, CLR_NONE);
         if (result)
         {
            Print("Break Even stop updated: #", OrderTicket(), "; SL = ", DoubleToStr(sl, MarketInfo(Symbol(),MODE_DIGITS)), "; Bid = ", DoubleToStr(MarketInfo(Symbol(),MODE_BID), MarketInfo(Symbol(),MODE_DIGITS)));
         }
         else
         {
            err = GetLastError();
            Print("Error!. Break Even #", OrderTicket(), " order modify failed with error(",err,")");
         }
       }
   }
   //
   if (OrderType() == OP_SELL) 
   {
       if (OrderStopLoss() <= OrderOpenPrice() && OrderStopLoss() != 0) return;
       
       if (MarketInfo(Symbol(),MODE_ASK) <= OrderOpenPrice() - Break_Even*mp*MarketInfo(Symbol(),MODE_POINT))
       {
         sl = OrderOpenPrice() ;
         while(IsTradeContextBusy()) Sleep(100);
         result = OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble(sl, MarketInfo(Symbol(),MODE_DIGITS)), OrderTakeProfit(), 0, CLR_NONE);
         if (result)
         {           
            Print("Break Even stop updated: # ", OrderTicket(), "; SL = ", DoubleToStr(sl, MarketInfo(Symbol(),MODE_DIGITS)), "; Ask = ", DoubleToStr(MarketInfo(Symbol(),MODE_ASK), MarketInfo(Symbol(),MODE_DIGITS)));
         }
         else
         {
            err = GetLastError();
            Print("Error!. Break Even #", OrderTicket(), " order modify failed with error(",err,")");
         }
       }
   }
}
    
 
double CalcDistance(double risk, double lotsize)
{
   risk=AccountBalance()*risk/100;
   return (risk/MarketInfo(Symbol(),MODE_TICKVALUE)/mp/lotsize);
}

 
double GetLastProfit(double& lotsize)
{
   int t=OrdersTotal();
   double p=0;
   datetime mt=0;
   
   for (int i=t-1;i>=0;i--)
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_Number && OrderCloseTime()>mt)
         {
            mt=OrderCloseTime();
            p=OrderProfit();
            lotsize=OrderLots();
         }
      }
   }
   
   return (p);
}

Version 1.30. I just added it to AUD/USD and NZD/USD H1 chart... the AUD/USD got activated and opened a trade, but the NZD/USD didnt and both have unique magic numbers. Might want to check that bug out? Also, when it completes a cycle (when equity profit is reached), it doesn't start again on new bar - it starts again like after the 3rd or 4th bar.

i hate it i hate it. because of too much repaint arrow... i thought i was followed up arrow indicator but it tend to move move move pips... it make me kill my profit.....
oh boy

The beauty of this strategy is that, if we target for a small profit, there will be a high probability to exit with some profit regardless of which button we select to trade.

I usually set the lot size to 0.1, with perfect hedge calculation enabled and a target profit of 5 USD. Because EA checks if the net profit is greater than the target profit to close the basket

//+------------------------------------------------------------------+
//|                                                 EA-PSAR_v1-0.mq4 |
//|                                                    Luca Spinello |
//|                                
//+------------------------------------------------------------------+

#property copyright     "Luca Spinello - mql4tradingautomation.com"
#property version       "1.00"
#property strict
#property description   "This Expert Advisor opens orders when the PSAR changes from above to below the price or vice versa"
#property description   " "
#property description   "DISCLAIMER: This code comes with no guarantee, you can use it at your own risk"
#property description   "We recommend to test it first on a Demo Account"

/*
ENTRY BUY: PSAR changes from above the previous bar to below the current bar
ENTRY SELL: PSAR changes from below the previous bar to above the current bar
EXIT: Take profit or trailing stop using PSAR
*/


extern double LotSize=0.1;             //Position size

extern double StopLoss=20;             //Stop loss in pips
extern double TakeProfit=500;          //Take profit in pips

extern int Slippage=2;                 //Slippage in pips

extern bool TradeEnabled=true;         //Enable trade

extern double PSARStep=0.2;            //PSAR Step         
extern double PSARMaxStep=0.02;        //PSAR Max Step

extern int MagicNumber=11223344;       //Magic Number to assign to the orders

//Functional variables
double ePoint;                         //Point normalized

bool CanOrder;                         //Check for risk management
bool CanOpenBuy;                       //Flag if there are buy orders open
bool CanOpenSell;                      //Flag if there are sell orders open

int OrderOpRetry=10;                   //Number of attempts to perform a trade operation
int SleepSecs=3;                       //Seconds to sleep if can't order
int MinBars=60;                        //Minimum bars in the graph to enable trading

//Functional variables to determine prices
double MinSL;
double MaxSL;
double TP;
double SL;
double Spread;
int Slip; 


//Variable initialization function
void Initialize(){          
   RefreshRates();
   ePoint=Point;
   Slip=Slippage;
   if (MathMod(Digits,2)==1){
      ePoint*=10;
      Slip*=10;
   }
   TP=TakeProfit*ePoint;
   SL=StopLoss*ePoint;
   CanOrder=TradeEnabled;
   CanOpenBuy=true;
   CanOpenSell=true;
}


//Check if orders can be submitted
void CheckCanOrder(){            
   if( Bars<MinBars ){
      Print("INFO - Not enough Bars to trade");
      CanOrder=false;
   }
   OrdersOpen();
   return;
}


//Check if there are open orders and what type
void OrdersOpen(){
   for( int i = 0 ; i < OrdersTotal() ; i++ ) {
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) {
         Print("ERROR - Unable to select the order - ",GetLastError());
         break;
      } 
      if( OrderSymbol()==Symbol() && OrderType() == OP_BUY) CanOpenBuy=false;
      if( OrderSymbol()==Symbol() && OrderType() == OP_SELL) CanOpenSell=false;
   }
   return;
}


//Close all the orders of a specific type and current symbol
void CloseAll(int Command){
   double ClosePrice=0;
   for( int i = 0 ; i < OrdersTotal() ; i++ ) {
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) {
         Print("ERROR - Unable to select the order - ",GetLastError());
         break;
      }
      if( OrderSymbol()==Symbol() && OrderType()==Command) {
         if(Command==OP_BUY) ClosePrice=Bid;
         if(Command==OP_SELL) ClosePrice=Ask;
         double Lots=OrderLots();
         int Ticket=OrderTicket();
         for(int j=1; j<OrderOpRetry; j++){
            bool res=OrderClose(Ticket,Lots,ClosePrice,Slip,Red);
            if(res){
               Print("TRADE - CLOSE - Order ",Ticket," closed at price ",ClosePrice);
               break;
            }
            else Print("ERROR - CLOSE - error closing order ",Ticket," return error: ",GetLastError());
         }
      }
   }
   return;
}


//Open new order of a given type
void OpenNew(int Command){
   RefreshRates();
   double OpenPrice=0;
   double SLPrice;
   double TPPrice;
   if(Command==OP_BUY){
      OpenPrice=Ask;
      SLPrice=OpenPrice-SL;
      TPPrice=OpenPrice+TP;
   }
   if(Command==OP_SELL){
      OpenPrice=Bid;
      SLPrice=OpenPrice+SL;
      TPPrice=OpenPrice-TP;
   }
   for(int i=1; i<OrderOpRetry; i++){
      int res=OrderSend(Symbol(),Command,LotSize,OpenPrice,Slip,NormalizeDouble(SLPrice,Digits),NormalizeDouble(TPPrice,Digits),"",MagicNumber,0,Green);
      if(res){
         Print("TRADE - NEW - Order ",res," submitted: Command ",Command," Volume ",LotSize," Open ",OpenPrice," Slippage ",Slip," Stop ",SLPrice," Take ",TPPrice);
         break;
      }
      else Print("ERROR - NEW - error sending order, return error: ",GetLastError());
   }
   return;
}


//Technical analysis of the indicators
bool CrossToOpenBuy=false;
bool CrossToOpenSell=false;


void CheckPSARCross(){
   CrossToOpenBuy=false;
   CrossToOpenSell=false;
   double PSARCurr=iSAR(Symbol(),0,PSARStep,PSARMaxStep,0);
   double PSARPrev=iSAR(Symbol(),0,PSARStep,PSARMaxStep,1);
   if(PSARCurr<Close[0] && PSARPrev>Close[1]){
      CrossToOpenBuy=true;
   }
   if(PSARCurr>Close[0] && PSARPrev<Close[1]){
      CrossToOpenSell=true;
   }
}


//Trailing Stop with PSAR
void UpdatePositions(){

   //Scan the open orders backwards
   for(int i=OrdersTotal()-1; i>=0; i--){
   
      //Select the order, if not selected print the error and continue with the next index
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) {
         Print("ERROR - Unable to select the order - ",GetLastError());
         continue;
      } 
      
      //Check if the order can be modified matching the criteria, if criteria not matched skip to the next
      if(OrderSymbol()!=Symbol()) continue;
      if(OrderMagicNumber()!=MagicNumber) continue;
      
      //Prepare the prices
      double TakeProfitPrice=OrderTakeProfit();
      double StopLossPrice=OrderStopLoss();
      double OpenPrice=OrderOpenPrice();
      double NewStopLossPrice=StopLossPrice;
      double NewTakeProfitPrice=TakeProfitPrice;
      
      //PSAR Value of the current symbol, current time frame , PSARStep, PSARMaxStep, previous candle
      double PSARPrice=iSAR(Symbol(),0,PSARStep,PSARMaxStep,1);
      
      //Get updated prices and calculate the new Stop Loss and Take Profit levels, these depends on the type of order
      RefreshRates();
      if(OrderType()==OP_BUY){
         if(PSARPrice>StopLossPrice && PSARPrice<Close[1] && PSARPrice<TakeProfitPrice){
            NewStopLossPrice=NormalizeDouble(PSARPrice,Digits);
         }
      } 
      if(OrderType()==OP_SELL){
         if(PSARPrice<StopLossPrice && PSARPrice>Close[1] && PSARPrice>TakeProfitPrice){
            NewStopLossPrice=NormalizeDouble(PSARPrice,Digits);
         }
      }
      
      //If the new Stop Loss and Take Profit Levels are different from the previous then I try to update the order
      if(NewStopLossPrice!=StopLossPrice){
         Print("Modifying order ",OrderTicket()," Open Price ",OpenPrice," New Stop Loss ",NewStopLossPrice," New Take Profit ",NewTakeProfitPrice);
         if(OrderModify(OrderTicket(),OpenPrice,NewStopLossPrice,NewTakeProfitPrice,0,Yellow)){
            Print("Order modified");
         }
         else{
            Print("Order failed to update with error - ",GetLastError());
         }      
      
      }

   
   }
}




//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //Calling initialization, checks and technical analysis
   Initialize();
   CheckCanOrder();
   UpdatePositions();
   CheckPSARCross();
   //Check of Entry/Exit signal with operations to perform
   if(CrossToOpenBuy){
      CloseAll(OP_SELL);
      if(CanOpenBuy && CanOrder) OpenNew(OP_BUY);
   }
   if(CrossToOpenSell){
      CloseAll(OP_BUY);
      if(CanOpenSell && CanOrder) OpenNew(OP_SELL);
   }
  }
//+------------------------------------------------------------------+

admin wrote:

We have reports from some forum member that this is the best Forex robot to trade with.
Many forum members doubling their balance with FREE no deposit bonus accounts with this EA in a few days.

Very fast profit.

Martingale + Grid.

Recommended leverage: 500:1 and up
Start with 0.01 Recommended Investment: $1000
Recommended: 1 EUR, 1 USD, 1 GBP, 1 AUD, 1 NZD, 1 CAD , 1 JPY


>> Download this EA here!


Why don't you try this EA with the 3500 no deposit bonus?

The best is to try any EA on live Forex account with FREE money. You can test on demo account but I think result never a same on demo and live accounts. So its better to try on real Forex account without using your own money smile

Would you please tell me the trading style of this EA ?

Posts found: 481 to 490 of 3,096

Pages Previous 1 47 48 49 50 51 310 Next

Profit → ► MT4talk - FREE Forex Robots and more... → Search results


NOTE: Hacked or illegal versions of copyrighted Forex robots are highly prohibited on MT4talk.com. If you upload any illegal version of any copyrighted Forex robot, your forum account will be banned. No exceptions.

 

IMPORTANT: MT4talk.com is a public Forex forum, where forum members can upload open source Forex robots to share with other members. MT4talk.com forum does not sell or rent Forex robots, and does not provide guarantee or support for the uploaded Forex robots! If you have any question about any Forex robot, please open a forum topic! If you have a question about your forum account, contact: mt4talk@gmail.com

CFTC RULE 4.41 – HYPOTHETICAL OR SIMULATED PERFORMANCE RESULTS HAVE CERTAIN LIMITATIONS. UNLIKE AN ACTUAL PERFORMANCE RECORD, SIMULATED RESULTS DO NOT REPRESENT ACTUAL TRADING. ALSO, SINCE THE TRADES HAVE NOT BEEN EXECUTED, THE RESULTS MAY HAVE UNDER-OR-OVER COMPENSATED FOR THE IMPACT, IF ANY, OF CERTAIN MARKET FACTORS, SUCH AS LACK OF LIQUIDITY. SIMULATED TRADING PROGRAMS, IN GENERAL, ARE ALSO SUBJECT TO THE FACT THAT THEY ARE DESIGNED WITH THE BENEFIT OF HINDSIGHT. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFIT OR LOSSES SIMILAR TO THOSE SHOWN.

Disclaimer - No representation is being made that any Forex account will or is likely to achieve profits or losses similar to those shown on backtests in this forum. In fact, there are frequently sharp differences between hypothetical performance results and the actual results subsequently achieved by any particular trading program. Hypothetical trading does not involve financial risk, and no hypothetical trading record can completely account for the impact of financial risk in actual trading. 
All information on this forum is for educational purposes only and is not intended to provide financial advice. Any statements posted by forum members about profits or income expressed or implied, do not represent a guarantee. Your actual trading may result in losses as no trading system is guaranteed. You accept full responsibilities for your actions, trades, profit or loss, and agree to hold the MT4talk team and forum members of this information harmless in any and all ways.


Copyright MT4talk.com Forum Rules - Privacy Policy.