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
Hello Trader.
Can someone help me and knows what Indicators are the one in this two .ex4 files?!
Best regards, oink!
Hello Trader.
Can someone help me and knows what Indicators are the one in this two .ex4 files?!
Best regards, oink!Alert signals is a simple zigzag made to show arrows :
Thanksmladen, I know your name from around 10000 Indikators! ;-)
Then I google for the zigzag+arrows indicator.
The other one is undefined?
Best regards, oink!
Thanksmladen, I know your name from around 10000 Indikators! ;-)
Then I google for the zigzag+arrows indicator.
The other one is undefined?
Best regards, oink!Frankly, I could not recognize the other. Sorry
Hello,
I don't understand why this ea don't work, compllation OK, nothing in journal nor expert tab, but not any trade .
Thanks in advance.
Jo
extern int magicNum=200;
extern double TakeProfit = 50;
extern double Lots = 0.01;
extern double TrailingStop = 30;
//extern double MACDOpenLevel=3;
//extern double MACDCloseLevel=2;
extern double MATrendPeriod=5;
int start()
{
double MaCurrent,MaPrevious,MavPrevious;
double close=iClose(Symbol(),0,0);
double vclose=iClose(Symbol(),0,1);
double vvclose=iClose(Symbol(),0,2);
// double MacdCurrent, MacdPrevious, SignalCurrent;
// double SignalPrevious, MaCurrent, MaPrevious;
// double RSIj,RSIv;
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_SMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);
double PlusHaut =High;
double PlusBas =Low;
double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);
double TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33);
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);
// RSIv= iRSI(NULL,0,9,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
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"MA",magicNum,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 (RSIv>70 && RSIj<70)
if ( MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"MA",magicNum,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
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDCloseLevel*Point))
// if (RSIv>70 && RSIj<70)
if ( MaCurrent <MaPrevious)
{
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(MacdCurrentSignalCurrent &&
// MacdPrevious(MACDCloseLevel*Point))
if
// (RSIv30)
( MaCurrent >MaPrevious)
{
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.
Hello,
I don't understand why this ea don't work, compllation OK, nothing in journal nor expert tab, but not any trade .
Thanks in advance.
Jo
extern int magicNum=200;
extern double TakeProfit = 50;
extern double Lots = 0.01;
extern double TrailingStop = 30;
//extern double MACDOpenLevel=3;
//extern double MACDCloseLevel=2;
extern double MATrendPeriod=5;
int start()
{
double MaCurrent,MaPrevious,MavPrevious;
double close=iClose(Symbol(),0,0);
double vclose=iClose(Symbol(),0,1);
double vvclose=iClose(Symbol(),0,2);
// double MacdCurrent, MacdPrevious, SignalCurrent;
// double SignalPrevious, MaCurrent, MaPrevious;
// double RSIj,RSIv;
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_SMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);
double PlusHaut =High;
double PlusBas =Low;
double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);
double TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33);
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);
// RSIv= iRSI(NULL,0,9,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
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"MA",magicNum,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 (RSIv>70 && RSIj<70)
if ( MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"MA",magicNum,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
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
// MacdCurrent>(MACDCloseLevel*Point))
// if (RSIv>70 && RSIj<70)
if ( MaCurrent <MaPrevious)
{
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(MacdCurrentSignalCurrent &&
// MacdPrevious(MACDCloseLevel*Point))
if
// (RSIv30)
( MaCurrent >MaPrevious)
{
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.It works in my back tests :
Hi mladen,
I want to make a partial sale of my profitOrder with the same value as me Variable "LossValue".
I tried to calculate the lotsize in the following steps:
-Read out the actual Profit from the profitOrder
-Calculate the ProfitPerLotstep
-Calculate the LossValue/ProfitPerLotstep am round the Lot-result up
-But if I sell this Lotsize the Profit Value ist too small (I think because of the spread)
What's the correct calculation way?
Here's an additional question.
If I make a partial Close, than the rest of the Position is automatically opend by the Broker. Before I gave the Position a comment to differ that Position. How can I recognize it now?
Here's an additional question. If I make a partial Close, than the rest of the Position is automatically opend by the Broker. Before I gave the Position a comment to differ that Position. How can I recognize it now?
sunshineh
You can not do anything
Only broker can change the comment field of an order. Maybe a broker changes the comment in the way it tells something like "from nnnn" where nnnn is the previous ticket number, but in most cases they don't, so you are left with no solution that can uniquely identify previous order in cases like that
Thanks mladen! Do you have a solution to my post before with the calculation from the lotsize according a defined value like 100 EUR?