Coding help - page 469

 

Hello Trader.

Can someone help me and knows what Indicators are the one in this two .ex4 files?!

Best regards, oink!

Files:
 
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 :

Files:
zz.gif  76 kb
 

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!

 
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.

 
Jovager:
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 :

Files:
jo.gif  90 kb
 

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?

 
sunshineh:
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?

Reason: