Yes, i think most dealers allow you to open opposite trades.
The formula is in the OrderSend() function.
Send an order to buy, and send an order to sell.
A separate order, OrderClose(), is used to close a position.
The formula is in the OrderSend() function.
Send an order to buy, and send an order to sell.
A separate order, OrderClose(), is used to close a position.
Yes, i think most dealers allow you to open opposite trades.
The formula is in the OrderSend() function.
Send an order to buy, and send an order to sell.
A separate order, OrderClose(), is used to close a position.
The formula is in the OrderSend() function.
Send an order to buy, and send an order to sell.
A separate order, OrderClose(), is used to close a position.
Hi, thanks.
This is a formula, can you help me?
//+------------------------------------------------------------------+
//| MACD Sample.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
extern double TakeProfit = 100;
extern double StopLoss = 100;
extern double Lots = 0.1;
extern double TrailingStop = 0;
extern double MACDOpenLevel=0;
extern double MACDCloseLevel=0;
extern double MATrendPeriod=0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include <lot_lib.mqh>
int init()
{
lotlib_PrevLots = 0.0; lotlib_PrevProfit = 0.0;
}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external
// variables (Lots, StopLoss, TakeProfit,
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
// to simplify the coding and speed up access
// data are put into internal variables
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
total=OrdersTotal();
if(total<1)
{
// no opened orders identified
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// check for long position (BUY) possibility
if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&
MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
//----
lotlib_OpenPriceLevel = Ask; lotlib_StopLossLevel = Ask-StopLoss*Point;
//----
ticket=OrderSend(Symbol(),OP_BUY,Lot(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
// check for short position (SELL) possibility
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
//----
lotlib_OpenPriceLevel = Bid; lotlib_StopLossLevel = Bid+StopLoss*Point;
//----
ticket=OrderSend(Symbol(),OP_SELL,Lot(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
// it is important to enter the market correctly,
// but it is more important to exit it correctly...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
//----
lotlib_PrevLots = OrderLots(); lotlib_PrevProfit = OrderProfit();
//----
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}
// check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}
// check for trailing stop
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
// the end.
I like to help people with their own code problems, giving hints, explanation, or small example, but I
do not care much to modify or debug 3rd party code.
You write, I fix.
Maybe someone else would like to volunteer?
do not care much to modify or debug 3rd party code.
You write, I fix.
Maybe someone else would like to volunteer?
phy :
I like to help people with their own code problems, giving hints, explanation, or small example, but I
do not care much to modify or debug 3rd party code.
You write, I fix.
Maybe someone else would like to volunteer?
I like to help people with their own code problems, giving hints, explanation, or small example, but I
do not care much to modify or debug 3rd party code.
You write, I fix.
Maybe someone else would like to volunteer?
The original MACD Sample.mq4 has no stop loss setting, can someone help to add? Or please advise how is the stop loss work in this EA?
Thank you.
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
can MACD simple ex.4 open a second inverse trade, at another number of lots,
at the same time?
example: (stop 10 pips, profit 10 pips)
09:00 open buy eur/usd 1,4180 lots 0,10 stop 1,4170 profit 1,4190 ( original trade)
09:00 open sell eur/usd 1,4180 lots 0,50 stop 1,4190 profit 1,4170 (inverse trade)
09:12 s/loss buy eur/usd 1,4170 lots 0,10 - 0,10
09:12 t/p sell eur/usd 1,4170 lots 0,50 +0,50
etc etc ??
Where is the formula ?
thanks so mutch
Antonio