Straddle EA with different lots size? Please help...

 

Hello,

I really need some advice from you,guys...

I'm trying to "persuade" an Ea to open different lot size positions on a straddle type range...but, as I'm totally crap at coding(trying to learn the basics), I wasn't able to do much...

What I want is to open let's say 0.01-0.01-0.03-0.03-0.06-0.06....and so on lots, each time price is at the edge of the range. First order is market order, and when this is opened, a pending order is to be send on the other side.So, all the other subsequent orders are pendings. Market orders works fine, even the 1st sequence of pendings, but after 1st sequence is closed in profit, things goes wrong...I use this piece of code for the pendings:

void SendNewPendingTrade()
{
//Called when there is a filled trade open but no pending hedge in place
if (!OrderSelect(TicketNo, SELECT_BY_TICKET) ) return;
if (OrderCloseTime() > 0) return;

RefreshRates();
double take, stop, price, tp, sl;
int type;
double PLot, HLot, HProfit;

if (OrderSelect(0, SELECT_BY_POS, MODE_HISTORY)== true )
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

HLot = OrderLots();

HProfit = OrderProfit();

if (OrderSelect(TicketNo, SELECT_BY_TICKET,MODE_TRADES) == true)
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

PLot = OrderLots();

if ((PLot == Lot) && (HProfit >=0)) SendLots = Lot;
if ((PLot == Lot) && (HLot == Lot) && (HProfit < 0)) SendLots = Lot * 3;
if ((PLot == Lot*3) && (HLot == Lot) && (HProfit < 0)) SendLots = Lot * 3;
if ((PLot == Lot*3) && (HLot == Lot*3) && (HProfit < 0)) SendLots = Lot * 6;
if ((PLot == Lot*6) && (HLot == Lot*3) && (HProfit < 0)) SendLots = Lot * 6;


if (OrderType() == OP_BUY)
{
if (!OrderSelect(TicketNo, SELECT_BY_TICKET) ) return;

if (OrderCloseTime() > 0) return;


price = OrderStopLoss(); //OrderOpenPrice() - (OrderOpenPrice()-OrderStopLoss());
take = price - (OrderTakeProfit()-OrderOpenPrice());
stop = price + (OrderOpenPrice()-OrderStopLoss());

if (IsTradeContextBusy() ) Sleep(100);
SendSingleTrade(OP_SELLSTOP, TradeComment, SendLots, price, stop, take);

}//if (OrderType == OP_BUY)

//Buy hedge

if (OrderType() == OP_SELL)
{
//Pending trade
if (!OrderSelect(TicketNo, SELECT_BY_TICKET) ) return;

if (OrderCloseTime() > 0) return;


price = OrderStopLoss(); //OrderOpenPrice() + (OrderStopLoss()-OrderOpenPrice());
take = price + (OrderOpenPrice()-OrderTakeProfit());
stop = price - (OrderStopLoss()-OrderOpenPrice());

if (IsTradeContextBusy() ) Sleep(100);
SendSingleTrade(OP_BUYSTOP, TradeComment, SendLots, price, stop, take);


}//if (OrderType == OP_SELL)

return;

}//void SendNewPendingTrade()


I've tried lots of ideeas, but it seems I can't find the problem, or the correct syntax. So, if anyone here is kind enough to help, I'll be forever grateful :-)

Thank's a lot!

 
Have you tried reading the Book to assist your learning.