Jump to content

⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

Recommended Posts

Posted (edited)

dear friend,

 

i am a martingale fans, and found a clean martingale+hedging EA.

 

but like martingale 'way' --- gamble, i would like to increase trading frequent.

 

This Martingale EA, is a price action EA, immediately open 2 orders (one is buy, one is sell). The TP order will closed and waiting for the losing order(s) to close before restart the cycle.

 

anybody, could help to:

 

1) add IMMEDIATELY reopen new-TP-order.

(current version only open new TP-order AFTER ALL orders closed)

example 8:15am = 0.1buy + 0.1sell + 0.2sell + 0.4sell,

when 8.20am TP for sell, now have 0.1buy.

 

can add IMMEDIATELY reopen new-TP-order, that is...

example 8:15am = 0.1buy + 0.1sell + 0.2sell + 0.4sell,

when 8.20am TP for sell, now have 0.1buy AND NEWLY opened 0.1sell.

 

2) add profit_target_all_buy (total dollar OP_BUY reach and close the OP_BUY only)

3) add profit_target_all_sell (total dollar OP_SELL reach and close the OP_SELL only)

4) add stop_loss_total_in_order (when balance below DEFINED-SL, then close ALL orders)

 

==========================================================

 

//+------------------------------------------------------------------+

//| Martingale.mq4 |

//| @abc |

//| http://abc.com |

//+------------------------------------------------------------------+

#property copyright "abc"

#property link "http://abc.com"

 

 

extern int TakeProfit = 8;

extern int PipStep = 8;

extern double Lots = 0.1;

extern double Multiply = 2.0;

extern int MaxTrade = 11;

 

string EAName = "Martingale";

string EAComment = "Martingale";

int magicbuy = 123;

int magicsell = 321;

double SetPoint = 0; // Variabel SetPoint for broker 4 or 5 digits

int Slippage = 3;

 

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

 

SetBroker();

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

 

int iTrade=0;

 

 

 

Comment(EAName,"\nServer Time: ",Hour(),"\nPairs : ",Symbol(),"\nEquity : ",AccountEquity(),"\nBalance : ",AccountBalance()); // Tampilkan Nama EA di layar

 

/* -- 0 opening order? starting FIRST order --*/

 

if(OrdersTotal()==0)

{

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, Ask+TakeProfit*SetPoint, EAComment, magicbuy);

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, Bid-TakeProfit*SetPoint, EAComment, magicsell);

}

 

 

 

/* -- Martingale function starts --*/

if(OrdersTotal()>=1)

{

GoMartingale();

}

 

 

//----

return(0);

}

//+------------------------------------------------------------------+

 

/*--managing 4 or 5 digits broker--*/

void SetBroker()

{

if (Digits==3 || Digits==5) // Instruct 4 digits broker

{SetPoint=Point*10;}

else // Instruct 4 digits broker

{SetPoint=Point;}

}

 

/*-- Function to start Martingale --*/

void GoMartingale()

{

int iCount = 0;

double LastOP = 0;

double LastLots = 0;

bool LastIsBuy = FALSE;

int iTotalBuy = 0;

int iTotalSell = 0;

int Spread=0;

 

Spread= MarketInfo(Symbol(), MODE_SPREAD);

 

 

for(iCount=0;iCount<OrdersTotal();iCount++)

{

 

OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);

 

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==magicbuy)

{

if(LastOP==0) {LastOP=OrderOpenPrice();}

if(LastOP>OrderOpenPrice()) {LastOP=OrderOpenPrice();}

if(LastLots<OrderLots()) {LastLots=OrderLots();}

LastIsBuy=TRUE;

iTotalBuy++;

 

/* Maximum trades */

if(iTotalBuy==MaxTrade) {return(0);}

}

 

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==magicsell)

{

if(LastOP==0) {LastOP=OrderOpenPrice();}

if(LastOP<OrderOpenPrice()) {LastOP=OrderOpenPrice();}

if(LastLots<OrderLots()) {LastLots=OrderLots();}

LastIsBuy=FALSE;

iTotalSell++;

 

/* Maximum trades */

if(iTotalBuy==MaxTrade) {return(0);}

}

 

}

 

if(LastIsBuy)

{

if(Bid<=LastOP-(Spread*SetPoint)-(PipStep*SetPoint))

{

OrderSend(Symbol(), OP_BUY, Multiply*LastLots, Ask, Slippage, 0, Ask+TakeProfit*SetPoint, EAComment, magicbuy);

ModifyTP();

LastIsBuy=FALSE;

return(0);

}

}

 

else if(!LastIsBuy)

{

if(Ask>=LastOP+(Spread*SetPoint)+(PipStep*SetPoint ))

{

OrderSend(Symbol(), OP_SELL, Multiply*LastLots, Bid, Slippage, 0, Bid-TakeProfit*SetPoint, EAComment, magicsell);

ModifyTP();

return(0);

}

}

 

}

 

/*-- Align Take Profit to SAME point--*/

void ModifyTP()

{

int iCount=0;

double NewTP=0;

 

/*- Taking LAST Take Profit point -*/

for(iCount=0;iCount<OrdersTotal();iCount++)

{

 

OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);

 

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==magicbuy)

{

if(NewTP==0) {NewTP=OrderTakeProfit();}

if(NewTP>OrderTakeProfit()) {NewTP=OrderTakeProfit();}

 

}

 

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==magicsell)

{

if(NewTP==0) {NewTP=OrderTakeProfit();}

if(NewTP<OrderTakeProfit()) {NewTP=OrderTakeProfit();}

}

 

}

 

for(iCount=0;iCount<OrdersTotal();iCount++)

{

 

OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);

 

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==magicbuy)

{

OrderModify(OrderTicket(), OrderLots(), 0, NewTP, 0);

}

 

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==magicsell)

{

OrderModify(OrderTicket(), OrderLots(), 0, NewTP, 0);

}

 

}

}

Edited by leonytham

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

×
×
  • Create New...