Changing Tp & Sl Automaticly !!!

 

Hi
I wrote this order
and after i enter the TP and SL... they will change Automaticly
For example i chose TP = 20.... SL = 10...... for first entry it is ok..
But for other orders.... it will change to :

TP=18....SL=12

OR

TP 15=...SL=15
OR

TP= -5.... SL=35
WHY????????

input int  TP=20;
input int SL=10;
input double Vol=0.01;

               OrderSend(Symbol(),OP_BUY,Vol,Ask,0,NormalizeDouble(Ask-(SL*Point),Digits),NormalizeDouble(Ask+(TP*Point),Digits),NULL,0,0,clrGreen);
 
  1. Your post is unclear. Add some concrete examples.
  2. OrderSend(Symbol(),OP_BUY,Vol,Ask,0,NormalizeDouble(Ask-(SL*Point),Digits),NormalizeDouble(Ask+(TP*Point),Digits),NULL,0,0,clrGreen);

    You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit and open at the Ask.

    1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?

    2. Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close to a specific Bid price, add the average spread.
                MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

    3. The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)
      Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes. My GBPJPY shows average spread = 26 points, but average maximum spread = 134 (your broker will be similar).