Limit Orders

 

Would anyone know how to place a limit order at a specific price? I'm trying to place them one pip above and/or below current price. Not having much luck. Thanks!

double SpreadA = (Ask - Bid);

double M=((Bid+SpreadA)+1*Point)

TakeTPB = (Bid+15*Point);

Order = OrderSend(Symbol(),OP_BUYLIMIT,Lot,M,2,0,TakeTPB);

 
Yellowbeard:
Would anyone know how to place a limit order at a specific price? I'm trying to place them one pip above and/or below current price. Not having much luck. Thanks!

double SpreadA = (Ask - Bid);

double M=((Bid+SpreadA)+1*Point)

TakeTPB = (Bid+15*Point);

Order = OrderSend(Symbol(),OP_BUYLIMIT,Lot,M,2,0,TakeTPB);

That is one point not one pip

These are the rules for orders opening prices :

[TH="width: 100"]Order Type[/TH]

[TH="width: 100"]Open Price[/TH]

[TH="width: 100"]Close Price[/TH]

[TH]Open Price of a Pending Order[/TH]

[TH]Transforming a Pending Order into aMarket Order

[/TH]

[/TR]

[TR]

[TD="bgcolor: #d8dde5"]
SellLimit
[TD] [TD]Above the current Bid price [TD]Bid price reaches open price

[TR]

[TD="bgcolor: #d8dde5"]
BuyStop
[TD] [TD] [TD]Above the current Ask price [TD]Ask price reaches open price

[TR]

[TD="bgcolor: #d8dde5"]
SellStop
[TD] [TD] [TD]Below the current Bid price [TD]Bid price reaches open price
Buy

[/TD]

Ask

[/TD]

Bid

[/TD]

[/TD] [/TD]

[/TR]

Sell

[/TD]

Bid

[/TD]

Ask

[/TD]

[/TD] [/TD]

[/TR]

BuyLimit

[/TD]

[/TD] [/TD] Below the current Ask price[/TD] Ask price reaches open price
 

I've managed to get buy and sell limit orders to open, but not buy and sell stop orders. Can you tell me what I'm doing wrong?

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

//| Custom_Test.mq4 |

//| me |

//| Non-Existent Domain |

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

#property copyright "me"

#property link "http://"

extern string Settings_n_1 = "--------------------------";

extern int Side = 1;

extern int MP_Y = 0;

extern int MP_X = 0;

int total, Ticket, Total, i, T, Buy = 0, Sell = 0, ZBLa, ZSLa, ZBLb, ZSLb, ZBLc, ZSLc, ZBLd, ZSLd, ZBLe, ZSLe, ZBLf, ZSLf, ZBLg, ZSLg, ZBLh, ZSLh, ZBLi, ZSLi, ZBLj, ZSLj, DNew, DOld, XHLB, XHLS, HLB, HLS, PB, PS, TB, TS, Tt, Bx = 0, Sx = 0, BLx = 0, SLx = 0, oBLx, oSLx, Ttx, Tx = 0, Bnx = 0, Snx = 0, Ttnx, PCNT =0, Cnt = 0, N = 0, BZ = 0, SZ = 0, BL = 0, SL = 0, TL = 0, CountZ, Count, oCount, CountX = 0, S, VH, VL, TVL, BFirstTicket, BFirstTicketI, BSecondTicket, SFirstTicket, SFirstTicketI, SSecondTicket, HighPoint = 0, LowPoint = 0, AU, AD, YU, YD, YUO, YDO, Tick = 0, LTM = 0, SLTM = 0, SAU = 0, SAD = 0, TAU, TAD, CNG, LCNG, XCNG, FXx, Xx, ZCNT = 0, ncenter, ocenter, CAy = 0, CBy = 0, CCy = 0, CDy = 0, CEy = 0, CFy = 0, CAz = 0, CBz = 0, CCz = 0, CDz = 0, CEz = 0, CFz = 0;

double vO, vH, vL, dB, dS, VX, VXb, SPDz, hSPDz, lSPDz, Lot, LotI, bid, ask, obid, oask, Mbx, Msx, Mmx, BStart, SStart, BFin, SFin, BTotal, STotal, TTotal = 0, ZTotal = 0, XTotal, YTotal = 0, oopen, Oldopen, TakePB, TakePS, TakeTPB, TakeTPS, OTakePB, OTakePS, TakePBX, TakePSX, TakeHBX, TakeHSX, Spread, PnvH, PnvL, oPnvH, oPnvL, FirstHL, HDiff, LDiff, BDiff, SDiff, LMkr, HMkr, Vol, BFirstPrice, BFirstPriceI, BSecondPrice, BFirstProfit, BFirstProfitI, BSecondProfit, BOldProfit, SFirstPrice, SFirstPriceI, SSecondPrice, SFirstProfit, SFirstProfitI, SSecondProfit, SOldProfit, CurBProfit, CurtBProfit, CurSProfit, CurtSProfit, NewProfit, DayHighI, DayLowI, WeekHighI, WeekLowI, MonthHighI, MonthLowI, BY, SY, HL;

string text, ArrowUpA, ArrowDownA, ArrowUpB, ArrowDownB, ArrowUpC, ArrowDownC, ArrowUpD, ArrowDownD, ArrowUpE, ArrowDownE, OHday, UpSymbol="ñ", DnSymbol="ò", NtSymbol="«";

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

//| expert initialization function |

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

int init()

{ObjectsDeleteAll();

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

bool Order, Modify;

Lot = 0.01;

Ticket = OrderTicket();

Total = OrdersTotal();

Spread = ((Ask - Bid)*100000);

double SpreadA = (Ask - Bid);

Tick = Tick + 1;

double vC=iClose(NULL,5,0); // 5 Minute Close

double M=(Bid+0.00001); // BUY Limit Price

double Nx=(Ask-0.00001); // SELL Limit Price

double MS=(Ask-0.00001); // SELL Stop Price

double NS=(Bid+0.00001); // BUY Stop Price

// ------------------------------------------------------------------------------ OPEN BUY -------------

Alert("OPEN BUY STOP");

Alert("Attempt to Open BUY Stop. Waiting for Response...");

//Alert(" Spread = " + DoubleToStr(NormalizeDouble(Spread,5),0));

// Alert(" SpreadA = " + DoubleToStr(SpreadA,Digits));

// Open Bracket 2

RefreshRates();

//T = T-1;

double TakeTPBS = (Bid+0.00002);

Alert("Take Profit = ",DoubleToStr(TakeTPBS,Digits));

Order = OrderSend(Symbol(),OP_BUYSTOP,Lot,MS,2,0,TakeTPBS);

Tt = GetLastError();

if(Cnt > 2)

{Cnt = 0; return(0);}

if (Tt > 0)

{Order = false; Alert("Break Buy Here! ",Tt," Bid= ",DoubleToStr(Bid,Digits)," Ask= ",DoubleToStr(Ask,Digits)," MS = ",DoubleToStr(MS,Digits)," Nx = ",DoubleToStr(Nx,Digits)," T = ",T); Sleep (5999); RefreshRates(); Cnt = Cnt + 1;

Alert (GetLastError());}

if (OrderSelect(0, SELECT_BY_POS)==True)

{Buy = 1; // Open Bracket 3

Alert ("Opened - Buy Order ",OrderTicket()," TP = ",(DoubleToStr(TakeTPBS, Digits))," Ask = ",DoubleToStr(Ask,Digits)," MS = ",DoubleToStr(MS,Digits)," Nx = ",DoubleToStr(Nx,Digits)," T = ",T);

}

Alert("OPEN BUY LIMIT");

Alert("Attempt to Open BUY Limit. Waiting for Response...");

// Alert(" Spread = " + DoubleToStr(NormalizeDouble(Spread,5),0));

// Alert(" SpreadA = " + DoubleToStr(SpreadA,Digits));

// Open Bracket 2

RefreshRates();

//T = T-1;

TakeTPB = (Bid+0.00002);

Alert("Take Profit = ",DoubleToStr(TakeTPB,Digits));

Order = OrderSend(Symbol(),OP_BUYLIMIT,Lot,M,2,0,TakeTPB);

Tt = GetLastError();

if(Cnt > 2)

{Cnt = 0; return(0);}

if (Tt > 0)

{Order = false; Alert("Break Buy Here! ",Tt," Bid= ",DoubleToStr(Bid,Digits)," Ask= ",DoubleToStr(Ask,Digits)," M = ",DoubleToStr(M,Digits)," Nx = ",DoubleToStr(Nx,Digits)," T = ",T); Sleep (5999); RefreshRates(); Cnt = Cnt + 1;

Alert (GetLastError());}

if (OrderSelect(0, SELECT_BY_POS)==True)

{Buy = 1; // Open Bracket 3

Alert ("Opened - Buy Order ",OrderTicket()," TP = ",(DoubleToStr(TakeTPB, Digits))," Ask = ",DoubleToStr(Ask,Digits)," M = ",DoubleToStr(M,Digits)," Nx = ",DoubleToStr(Nx,Digits)," T = ",T);

}

Alert("OPEN SELL STOP");

Alert("Attempt to Open SELL Stop. Waiting for Response...");

// Alert(" Spread = " + DoubleToStr(NormalizeDouble(Spread,5),0));

// Alert(" SpreadA = " + DoubleToStr(SpreadA,Digits));

{

RefreshRates();

double TakeTPSS = (Ask-0.00002);

Order = OrderSend(Symbol(),OP_SELLLIMIT,Lot,NS,2,0,TakeTPS);

Tt = GetLastError();

if(Cnt > 2)

{Cnt = 0; return(0);}

if (Tt > 0)

{Order = false; Alert("Break Sell Here! ",Tt," Bid= ",DoubleToStr(Bid,Digits)," Ask= ",DoubleToStr(Ask,Digits)," M = ",DoubleToStr(M,Digits)," NS = ",DoubleToStr(NS,Digits)," T = ",T); Sleep (5999); RefreshRates(); Cnt = Cnt + 1;

Alert (GetLastError());}

if (OrderSelect(0, SELECT_BY_POS)==True)

{Sell = 1; // Open Bracket 3

Alert ("Opened - Sell Order ",OrderTicket()," TP = ",(DoubleToStr(TakeTPSS, Digits))," Bid = ",DoubleToStr(Bid,Digits)," M = ",DoubleToStr(M,Digits)," NS = ",DoubleToStr(NS,Digits)," T = ",T);

}

}

Alert("OPEN SELL LIMIT");

Alert("Attempt to Open SELL Limit. Waiting for Response...");

//Alert(" Spread = " + DoubleToStr(NormalizeDouble(Spread,5),0));

//Alert(" SpreadA = " + DoubleToStr(SpreadA,Digits));

{

RefreshRates();

TakeTPS = (Ask-0.00002);

Order = OrderSend(Symbol(),OP_SELLLIMIT,Lot,Nx,2,0,TakeTPS);

Tt = GetLastError();

if(Cnt > 2)

{Cnt = 0; return(0);}

if (Tt > 0)

{Order = false; Alert("Break Sell Here! ",Tt," Bid= ",DoubleToStr(Bid,Digits)," Ask= ",DoubleToStr(Ask,Digits)," M = ",DoubleToStr(M,Digits)," Nx = ",DoubleToStr(Nx,Digits)," T = ",T); Sleep (5999); RefreshRates(); Cnt = Cnt + 1;

Alert (GetLastError());}

if (OrderSelect(0, SELECT_BY_POS)==True)

{Sell = 1; // Open Bracket 3

Alert ("Opened - Sell Order ",OrderTicket()," TP = ",(DoubleToStr(TakeTPS, Digits))," Bid = ",DoubleToStr(Bid,Digits)," M = ",DoubleToStr(M,Digits)," Nx = ",DoubleToStr(Nx,Digits)," T = ",T);

}

}

// -------------------------------------------------------------------------------------------

return(0);

}

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

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

//

Reason: