BTC USD 75,561.0 Gold USD 4,359.74
Time now: Jun 1, 12:00 AM

pending order pakai script

Hanya broker yang offer instant execution yang boleh set sl dan tp semasa entry.

Script ni tak boleh apply pada market execution broker melainkan sl dan tp mesti 0

TQ bro..dah test ok..xde masalah..:)cgrock
 
as salam masta aiman...
nak mintak jasa baik masta tolong tengokkan script ni...nape masih xleh setkan tp & sl...still kuar invalid stop 130 :(

p/s: script ni bukan saye punyer...dpt kat FF...
sori TT...out of topic sat :( bole yer..

#property show_inputs

extern string XXXX = "*** TAKE CARE WITH CORRECT PRICES ****";
extern string XXXXX = "*** SET to 1 to Buy @ Market : 2 to Sell @ Market ***";
extern int mBuyorSell = 1;
extern int miTP1 = 100; // 5 digit broker
extern int miTP2 = 100;
extern int miTP3 = 100;
extern int miTP4 = 100;
extern int miSL1 = 0;
extern int miSL2 = 0;
extern int miSL3 = 0;
extern int miSL4 = 0;
extern int mSlip = 30;
extern int mNoOfOrders = 1;
extern double mLots = 0.01;

int start()
{
bool mError;
int i, Error, mOrder;
double mSLLevels[3], mTPLevels[3];
double mTP1= miTP1 * Point, mTP2= miTP2 * Point, mTP3= miTP3 * Point, mTP4= miTP4 * Point;
double mSL1 = miSL1 * Point, mSL2 = miSL2 * Point, mSL3 = miSL3 * Point, mSL4 = miSL4 * Point;
double mSpread = Ask - Bid;

mSLLevels[0] = mSL1; mSLLevels[1] = mSL2; mSLLevels[2] = mSL3; mSLLevels[3] = mSL4;
mTPLevels[0] = mTP1; mTPLevels[1] = mTP2; mTPLevels[2] = mTP3; mTPLevels[3] = mTP4;

if(mBuyorSell == 1) // BUY Order
{
for(i = 0; i < mNoOfOrders; i++)
{
RefreshRates();
mOrder = OrderSend(Symbol(), OP_BUY, mLots, Ask, mSlip, 0, 0, "4OrderTest", 201106, 0, Blue);
if (mOrder > 1)
{
if (OrderSelect(mOrder, SELECT_BY_TICKET))
OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - mSpread - mSLLevels, 5),
NormalizeDouble(OrderOpenPrice() + mTPLevels, 5), 0, Green );
}
}
}
else // SELL Order
{
for(i = 0; i < mNoOfOrders; i++)
{
RefreshRates();
mOrder = OrderSend(Symbol(), OP_SELL, mLots, Bid, mSlip, 0, 0, "4OrderTest", 201106, 0, Red);
if (mOrder > 1)
{
if (OrderSelect(mOrder, SELECT_BY_TICKET))
OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + mSpread + mSLLevels, 5),
NormalizeDouble(OrderOpenPrice() - mTPLevels, 5), 0, Green );
}
}
}
if(mError != true)
{
Error = GetLastError();
Print("LastError = ",Error);
}
else Error = 0;


return(0);
}
 
as salam masta aiman...
nak mintak jasa baik masta tolong tengokkan script ni...nape masih xleh setkan tp & sl...still kuar invalid stop 130 :(

p/s: script ni bukan saye punyer...dpt kat FF...
sori TT...out of topic sat :( bole yer..

besarkan sikit miSL1, miSL2, etc. cuba letak 10 ke. Broker ada minimum stoplevel dia. SL atau TP tak boleh kecil dari tu.

script tu pun ada bug sikit... cuba test code yang kat bawah ni. aku pun tak test...

Code:
#property show_inputs

extern string XXXX = "*** TAKE CARE WITH CORRECT PRICES ****";
extern string XXXXX = "*** SET to 1 to Buy @ Market : 2 to Sell @ Market ***";
extern int mBuyorSell = 1; 
extern int miTP1 = 100; // 5 digit broker
extern int miTP2 = 100;
extern int miTP3 = 100;
extern int miTP4 = 100;
extern int miSL1 = 0;
extern int miSL2 = 0;
extern int miSL3 = 0;
extern int miSL4 = 0;
extern int mSlip = 30;
extern int mNoOfOrders = 1;
extern double mLots = 0.01;

double tp,sl;

int start()
{
   bool mError;
   int i, Error, mOrder;
   int mSLLevels[4], mTPLevels[4];
   double mSpread = MarketInfo(Symbol(),MODE_SPREAD);

   mSLLevels[0] = miSL1; mSLLevels[1] = miSL2; mSLLevels[2] = miSL3; mSLLevels[3] = miSL4; 
   mTPLevels[0] = miTP1; mTPLevels[1] = miTP2; mTPLevels[2] = miTP3; mTPLevels[3] = miTP4;

   for(i=0;i<4;i++)
   {
      if(mSLLevels[i]>0) mSLLevels[i]=MathMax(mSLLevels[i],MarketInfo(Symbol(),MODE_STOPLEVEL));
      if(mTPLevels[i]>0) mTPLevels[i]=MathMax(mTPLevels[i],MarketInfo(Symbol(),MODE_STOPLEVEL));
   }

   if(mBuyorSell == 1) // BUY Order
   {
      for(i = 0; i < mNoOfOrders; i++) 
      {
         RefreshRates();
         mOrder = OrderSend(Symbol(), OP_BUY, mLots, Ask, mSlip, 0, 0, "4OrderTest", 201106, 0, Blue);
         if (mOrder > 1)
         {
            if (OrderSelect(mOrder, SELECT_BY_TICKET))
            {
               sl=0;
               if(mSLLevels[i]>0) sl=NormalizeDouble(OrderOpenPrice()-mSpread-mSLLevels[i]*Point,Digits);
               tp=0;
               if(mTPLevels[i]>0) tp=NormalizeDouble(OrderOpenPrice()+mTPLevels[i]*Point,Digits);
               OrderModify(OrderTicket(),OrderOpenPrice(), sl, tp, 0, Green );
            }
         } 
      }
   } 
   else // SELL Order
   {
      for(i = 0; i < mNoOfOrders; i++) 
      {
         RefreshRates();
         mOrder = OrderSend(Symbol(), OP_SELL, mLots, Bid, mSlip, 0, 0, "4OrderTest", 201106, 0, Red);
         if (mOrder > 1)
         {
            if (OrderSelect(mOrder, SELECT_BY_TICKET))
            {
               sl=0;
               if(mSLLevels[i]>0) sl=NormalizeDouble(OrderOpenPrice()+mSpread+mSLLevels[i]*Point,Digits);
               tp=0;
               if(mTPLevels[i]>0) tp=NormalizeDouble(OrderOpenPrice()-mTPLevels[i]*Point,Digits);
               OrderModify(OrderTicket(),OrderOpenPrice(), sl, tp, 0, Green );
            }
         } 
      }
   }
   if(mError != true) 
   { 
   Error = GetLastError(); 
   Print("LastError = ",Error); 
   }
   else Error = 0;


   return(0);
}
 
Last edited:
thanks a million bro tempe...x terpikir pulak pasal nilai sl tu...hari isnin nanti cuba try test :)
 
no problem bro keaper.

Code yang aku bagi tu dah take care pasal tp dan sl tu. kalau kecik sangat, dia akan offset ke minimum stoplevel. kecuali kalau kau set ke 0.

selamat mencuba...
 
as salam bro tempe...
ok bro script tu...memang superb. thank u thank u.
 
assalamualaikum bro aiman dan kawan kawan.

cording memang menarik. newbi tumpang belajor....
masta aiman. ada tak PO yang boleh follow price yang telah kita open.
contohnya. kita dah OP, tapi floating, PO kita different -40 pip dari OP.
 
assalamualaikum bro aiman dan kawan kawan.

cording memang menarik. newbi tumpang belajor....
masta aiman. ada tak PO yang boleh follow price yang telah kita open.
contohnya. kita dah OP, tapi floating, PO kita different -40 pip dari OP.

Sebelum run po martingale, tuan boleh guna script bawah ni untuk kira price untuk po tuan.
Code:
//+------------------------------------------------------------------+
//|                                                     priceGap.mq4 |
//|                                          Copyright © 2011, Aiman |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Aiman"
#property link      ""
#property show_inputs

extern int pipsGap = 40;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
      string priceBuy="", priceSell="";
      
      for (int i=0; i<OrdersTotal(); i++)
      {
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol()!=Symbol()) continue;
         if (OrderType()==OP_BUY) 
         {
            priceBuy = priceBuy + "\n" + DoubleToStr(OrderOpenPrice(),Digits) + " (" + DoubleToStr(OrderOpenPrice()-pipsGap*Point,Digits) + ")";
         }
         if (OrderType()==OP_SELL) 
         {
            priceSell = priceSell + "\n" + DoubleToStr(OrderOpenPrice(),Digits) + " (" + DoubleToStr(OrderOpenPrice()+pipsGap*Point,Digits) + ")";
         }
      }
      
      string text = "Gap : " + DoubleToStr(pipsGap,0) + " pips";
      if (priceBuy!="")  text = text + "\n\nBuy" + priceBuy;
      if (priceSell!="") text = text + "\n\nSell" + priceSell;
      
      MessageBox(text, "Price Gap for " +Symbol());
                
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Sebelum run po martingale, tuan boleh guna script bawah ni untuk kira price untuk po tuan.
Code:
//+------------------------------------------------------------------+
//|                                                     priceGap.mq4 |
//|                                          Copyright © 2011, Aiman |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Aiman"
#property link      ""
#property show_inputs

extern int pipsGap = 40;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
      string priceBuy="", priceSell="";
      
      for (int i=0; i<OrdersTotal(); i++)
      {
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol()!=Symbol()) continue;
         if (OrderType()==OP_BUY) 
         {
            priceBuy = priceBuy + "\n" + DoubleToStr(OrderOpenPrice(),Digits) + " (" + DoubleToStr(OrderOpenPrice()-pipsGap*Point,Digits) + ")";
         }
         if (OrderType()==OP_SELL) 
         {
            priceSell = priceSell + "\n" + DoubleToStr(OrderOpenPrice(),Digits) + " (" + DoubleToStr(OrderOpenPrice()+pipsGap*Point,Digits) + ")";
         }
      }
      
      string text = "Gap : " + DoubleToStr(pipsGap,0) + " pips";
      if (priceBuy!="")  text = text + "\n\nBuy" + priceBuy;
      if (priceSell!="") text = text + "\n\nSell" + priceSell;
      
      MessageBox(text, "Price Gap for " +Symbol());
                
//----
   return(0);
  }
//+------------------------------------------------------------------+

terima kasih. saya cuba jap.....
PO memang berjalan dengan sempurna.
cuma kalau run kat mt5 kena tukar setting sikit.
gap 40 pip kepada 400.
tq bro aiman...
 
Last edited:
mnarik.boleh cuba.malas dh buat manual.ekekekeke
 

Live Forex Chart

Currency
Rates
EUR / USD
1.15386
USD / JPY
154.999
GBP / USD
1.34498
USD / CHF
0.81823
USD / CAD
1.39360
EUR / JPY
178.846
AUD / USD
0.71354
Back
Top
Log in Register