• Home
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • User/Email: Password:
  • 9:59pm
Menu
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • 9:59pm
Sister Sites
  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

Buy Stop Limit and Sell Stop Limit Orders on MT4 4 replies

Auto SL/TP & buy limit, sell limit/buy stop, sell stop EA/indi 2 replies

Difference between buy limit, sell limit, buy stop, & sell stop? 4 replies

MT4 Draw Symbol instead of Arrow, Draw n instead of square 2 replies

Triggering Limit/Stop orders on Candle closes instead of Ticks 3 replies

  • Platform Tech
  • /
  • Reply to Thread
  • Subscribe
Tags: Stop orders instead of limit orders
Cancel

Stop orders instead of limit orders

  • Post #1
  • Quote
  • First Post: Jan 16, 2012 10:11am Jan 16, 2012 10:11am
  •  EnPoint
  • | Joined Nov 2010 | Status: Member | 30 Posts
I found this EA on another site and I thought a couple changes would get it to do what I wanted it to do but apparently, its a little bit tougher than that. I've been trying to wrap my head around some MQL but it just isnt happening. I thought by changing BUYLIMIT to BUYSTOP and vice versa for sells would get it how I wanted but instead, it places one instant order on symbol1.

This is what Im trying to do: First off, I don't need symbol3 but whenever I delete information pertaining to symbol3, the last section on count order gives me a bunch of errors. In a essence, I want this EA to do what it already does except with stop orders and only 2 symbols.

I want it to open an order at market price then seperate stop orders at levels defined. One bloop it has is placing 2 orders at the same price on the 1st level limit order. If this cant be changed, I can deal with that, but again, they should be stop orders.

Heres the original code:

Inserted Code
//+------------------------------------------------------------------+
//|                                         Limit Orders Manager.mq4 |
//|                              Copyright © 2009, TradingSytemForex |
//|                                [url]http://www.tradingsystemforex.com[/url] |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, TradingSytemForex"
#property link "[url]http://www.tradingsystemforex.com[/url]"
extern string S1="---------------- Entry Settings";
extern string Symbol1="EURUSD";
extern string Symbol2="GBPUSD";
extern string Symbol3="USDCHF";
extern string S2="---------------- First Limit Order Type";
extern double Levels=3;
extern double PipStep=30;
extern string Symbol1OrderType="BUY"; // "BUY" for buy, "SELL" for sell
extern string Symbol2OrderType="SELL";
extern string Symbol3OrderType="SELL";
extern string S3="---------------- Money Management";
extern double Symbol1Lots=0.1;
extern double Symbol2Lots=0.1;
extern double Symbol3Lots=0.1;
extern string S4="---------------- Order Management";
extern int Symbol1StopLoss=0;
extern int Symbol2StopLoss=0;
extern int Symbol3StopLoss=0;
extern int Symbol1TakeProfit=0;
extern int Symbol2TakeProfit=0;
extern int Symbol3TakeProfit=0;
extern int Slippage=10;
extern int Magic=0;
datetime PreviousBarTime;
//+------------------------------------------------------------------+
void start()
{
   double SL,TP;
   int cpt,Total;
   double Symbol1Ask=MarketInfo(Symbol1,MODE_ASK);
   double Symbol1Bid=MarketInfo(Symbol1,MODE_BID);
   double Symbol1Point=MarketInfo(Symbol1,MODE_POINT);
   double Symbol1Digits=MarketInfo(Symbol1,MODE_DIGITS);
   double Symbol2Ask=MarketInfo(Symbol2,MODE_ASK);
   double Symbol2Bid=MarketInfo(Symbol2,MODE_BID);
   double Symbol2Point=MarketInfo(Symbol2,MODE_POINT);
   double Symbol2Digits=MarketInfo(Symbol2,MODE_DIGITS);
   double Symbol3Ask=MarketInfo(Symbol3,MODE_ASK);
   double Symbol3Bid=MarketInfo(Symbol3,MODE_BID);
   double Symbol3Point=MarketInfo(Symbol3,MODE_POINT);
   double Symbol3Digits=MarketInfo(Symbol3,MODE_DIGITS);
//+------------------------------------------------------------------+
     if(Symbol1OrderType=="BUY")
     {  
        if(Symbol1StopLoss>0)SL=Symbol1Ask-Symbol1StopLoss*Symbol1Point;else SL=0;
        if(Symbol1TakeProfit>0)TP=Symbol1Ask+Symbol1TakeProfit*Symbol1Point;else TP=0;
        if(CountOrders(Symbol1,OP_BUY,Magic)<1)OrderSend(Symbol1,OP_BUY,Symbol1Lots,Symbol1Ask,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol1StopLoss>0)SL=Symbol1Ask-cpt*PipStep*Symbol1Point-Symbol1StopLoss*Symbol1Point;else SL=0;
           if(Symbol1TakeProfit>0)TP=Symbol1Ask-cpt*PipStep*Symbol1Point+Symbol1TakeProfit*Symbol1Point;else TP=0;
           if(CountOrders(Symbol1,OP_BUYLIMIT,Magic)<3)OrderSend(Symbol1,OP_BUYLIMIT,Symbol1Lots,NormalizeDouble(Symbol1Ask-cpt*PipStep*Symbol1Point,Symbol1Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol1OrderType=="SELL")
     {  
        if(Symbol1StopLoss>0)SL=Symbol1Bid+Symbol1StopLoss*Symbol1Point;else SL=0;
        if(Symbol1TakeProfit>0)TP=Symbol1Bid-Symbol1TakeProfit*Symbol1Point;else TP=0;
        if(CountOrders(Symbol1,OP_SELL,Magic)<1)OrderSend(Symbol1,OP_SELL,Symbol1Lots,Symbol1Bid,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol1StopLoss>0)SL=Symbol1Bid+cpt*PipStep*Symbol1Point+Symbol1StopLoss*Symbol1Point;else SL=0;
           if(Symbol1TakeProfit>0)TP=Symbol1Bid+cpt*PipStep*Symbol1Point-Symbol1TakeProfit*Symbol1Point;else TP=0;
           if(CountOrders(Symbol1,OP_SELLLIMIT,Magic)<3)OrderSend(Symbol1,OP_SELLLIMIT,Symbol1Lots,NormalizeDouble(Symbol1Bid+cpt*PipStep*Symbol1Point,Symbol1Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol2OrderType=="BUY")
     {  
        if(Symbol2StopLoss>0)SL=Symbol2Ask-Symbol2StopLoss*Symbol2Point;else SL=0;
        if(Symbol2TakeProfit>0)TP=Symbol2Ask+Symbol2TakeProfit*Symbol2Point;else TP=0;
        if(CountOrders(Symbol2,OP_BUY,Magic)<1)OrderSend(Symbol2,OP_BUY,Symbol2Lots,Symbol2Ask,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol2StopLoss>0)SL=Symbol2Ask-cpt*PipStep*Symbol2Point-Symbol2StopLoss*Symbol2Point;else SL=0;
           if(Symbol2TakeProfit>0)TP=Symbol2Ask-cpt*PipStep*Symbol2Point+Symbol2TakeProfit*Symbol2Point;else TP=0;
           if(CountOrders(Symbol2,OP_BUYLIMIT,Magic)<3)OrderSend(Symbol2,OP_BUYLIMIT,Symbol2Lots,NormalizeDouble(Symbol2Ask-cpt*PipStep*Symbol2Point,Symbol2Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol2OrderType=="SELL")
     {  
        if(Symbol2StopLoss>0)SL=Symbol2Bid+Symbol2StopLoss*Symbol2Point;else SL=0;
        if(Symbol2TakeProfit>0)TP=Symbol2Bid-Symbol2TakeProfit*Symbol2Point;else TP=0;
        if(CountOrders(Symbol2,OP_SELL,Magic)<1)OrderSend(Symbol2,OP_SELL,Symbol2Lots,Symbol2Bid,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol2StopLoss>0)SL=Symbol2Bid+cpt*PipStep*Symbol2Point+Symbol2StopLoss*Symbol2Point;else SL=0;
           if(Symbol2TakeProfit>0)TP=Symbol2Bid+cpt*PipStep*Symbol2Point-Symbol2TakeProfit*Symbol2Point;else TP=0;
           if(CountOrders(Symbol2,OP_SELLLIMIT,Magic)<3)OrderSend(Symbol2,OP_SELLLIMIT,Symbol2Lots,NormalizeDouble(Symbol2Bid+cpt*PipStep*Symbol2Point,Symbol2Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol3OrderType=="BUY")
     {  
        if(Symbol3StopLoss>0)SL=Symbol3Ask-Symbol3StopLoss*Symbol3Point;else SL=0;
        if(Symbol3TakeProfit>0)TP=Symbol3Ask+Symbol3TakeProfit*Symbol3Point;else TP=0;
        if(CountOrders(Symbol3,OP_BUY,Magic)<1)OrderSend(Symbol3,OP_BUY,Symbol3Lots,Symbol3Ask,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol3StopLoss>0)SL=Symbol3Ask-cpt*PipStep*Symbol3Point-Symbol3StopLoss*Symbol3Point;else SL=0;
           if(Symbol3TakeProfit>0)TP=Symbol3Ask-cpt*PipStep*Symbol3Point+Symbol3TakeProfit*Symbol3Point;else TP=0;
           if(CountOrders(Symbol3,OP_BUYLIMIT,Magic)<3)OrderSend(Symbol3,OP_BUYLIMIT,Symbol3Lots,NormalizeDouble(Symbol3Ask-cpt*PipStep*Symbol3Point,Symbol3Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol3OrderType=="SELL")
     {  
        if(Symbol3StopLoss>0)SL=Symbol3Bid+Symbol3StopLoss*Symbol3Point;else SL=0;
        if(Symbol3TakeProfit>0)TP=Symbol3Bid-Symbol3TakeProfit*Symbol3Point;else TP=0;
        if(CountOrders(Symbol3,OP_SELL,Magic)<1)OrderSend(Symbol3,OP_SELL,Symbol3Lots,Symbol3Bid,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol3StopLoss>0)SL=Symbol3Bid+cpt*PipStep*Symbol3Point+Symbol3StopLoss*Symbol3Point;else SL=0;
           if(Symbol3TakeProfit>0)TP=Symbol3Bid+cpt*PipStep*Symbol3Point-Symbol3TakeProfit*Symbol3Point;else TP=0;
           if(CountOrders(Symbol3,OP_SELLLIMIT,Magic)<3)OrderSend(Symbol3,OP_SELLLIMIT,Symbol3Lots,NormalizeDouble(Symbol3Bid+cpt*PipStep*Symbol3Point,Symbol3Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     return(0);
  }
//|---------count orders
int CountOrders(string symbol,int Type,int Magic)
{
   int _CountOrd;
   _CountOrd=0;
   for(int i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==symbol)
      {
         if((OrderType()==Type&&(OrderMagicNumber()==Magic)||Magic==0))_CountOrd++;
      }
   }
   return(_CountOrd);
}



And heres my take at it, I only changed the buy/selllimit to buy/sellstop but it messes it all up:

Inserted Code
//+------------------------------------------------------------------+
//|                                    (mod)Limit Orders Manager.mq4 |
//|                              Copyright © 2009, TradingSytemForex |
//|                                [url]http://www.tradingsystemforex.com[/url] |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, TradingSytemForex"
#property link "[url]http://www.tradingsystemforex.com[/url]"
extern string S1="---------------- Entry Settings";
extern string Symbol1="EURUSDm";
extern string Symbol2="AUDUSDm";
extern string Symbol3="";
extern string S2="---------------- First Limit Order Type";
extern double Levels=3;
extern double PipStep=30;
extern string Symbol1OrderType="BUY"; // "BUY" for buy, "SELL" for sell
extern string Symbol2OrderType="SELL";
extern string Symbol3OrderType="";
extern string S3="---------------- Money Management";
extern double Symbol1Lots=0.01;
extern double Symbol2Lots=0.01;
extern double Symbol3Lots=0.0;
extern string S4="---------------- Order Management";
extern int Symbol1StopLoss=0;
extern int Symbol2StopLoss=0;
extern int Symbol3StopLoss=0;
extern int Symbol1TakeProfit=0;
extern int Symbol2TakeProfit=0;
extern int Symbol3TakeProfit=0;
extern int Slippage=10;
extern int Magic=0;
datetime PreviousBarTime;
//+------------------------------------------------------------------+
void start()
{
   double SL,TP;
   int cpt,Total;
   double Symbol1Ask=MarketInfo(Symbol1,MODE_ASK);
   double Symbol1Bid=MarketInfo(Symbol1,MODE_BID);
   double Symbol1Point=MarketInfo(Symbol1,MODE_POINT);
   double Symbol1Digits=MarketInfo(Symbol1,MODE_DIGITS);
   double Symbol2Ask=MarketInfo(Symbol2,MODE_ASK);
   double Symbol2Bid=MarketInfo(Symbol2,MODE_BID);
   double Symbol2Point=MarketInfo(Symbol2,MODE_POINT);
   double Symbol2Digits=MarketInfo(Symbol2,MODE_DIGITS);
   double Symbol3Ask=MarketInfo(Symbol3,MODE_ASK);
   double Symbol3Bid=MarketInfo(Symbol3,MODE_BID);
   double Symbol3Point=MarketInfo(Symbol3,MODE_POINT);
   double Symbol3Digits=MarketInfo(Symbol3,MODE_DIGITS);
//+------------------------------------------------------------------+
     if(Symbol1OrderType=="BUY")
     {  
        if(Symbol1StopLoss>0)SL=Symbol1Ask-Symbol1StopLoss*Symbol1Point;else SL=0;
        if(Symbol1TakeProfit>0)TP=Symbol1Ask+Symbol1TakeProfit*Symbol1Point;else TP=0;
        if(CountOrders(Symbol1,OP_BUY,Magic)<1)OrderSend(Symbol1,OP_BUY,Symbol1Lots,Symbol1Ask,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol1StopLoss>0)SL=Symbol1Ask-cpt*PipStep*Symbol1Point-Symbol1StopLoss*Symbol1Point;else SL=0;
           if(Symbol1TakeProfit>0)TP=Symbol1Ask-cpt*PipStep*Symbol1Point+Symbol1TakeProfit*Symbol1Point;else TP=0;
           if(CountOrders(Symbol1,OP_BUYSTOP,Magic)<3)OrderSend(Symbol1,OP_BUYSTOP,Symbol1Lots,NormalizeDouble(Symbol1Ask-cpt*PipStep*Symbol1Point,Symbol1Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol1OrderType=="SELL")
     {  
        if(Symbol1StopLoss>0)SL=Symbol1Bid+Symbol1StopLoss*Symbol1Point;else SL=0;
        if(Symbol1TakeProfit>0)TP=Symbol1Bid-Symbol1TakeProfit*Symbol1Point;else TP=0;
        if(CountOrders(Symbol1,OP_SELL,Magic)<1)OrderSend(Symbol1,OP_SELL,Symbol1Lots,Symbol1Bid,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol1StopLoss>0)SL=Symbol1Bid+cpt*PipStep*Symbol1Point+Symbol1StopLoss*Symbol1Point;else SL=0;
           if(Symbol1TakeProfit>0)TP=Symbol1Bid+cpt*PipStep*Symbol1Point-Symbol1TakeProfit*Symbol1Point;else TP=0;
           if(CountOrders(Symbol1,OP_SELLSTOP,Magic)<3)OrderSend(Symbol1,OP_SELLSTOP,Symbol1Lots,NormalizeDouble(Symbol1Bid+cpt*PipStep*Symbol1Point,Symbol1Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol2OrderType=="BUY")
     {  
        if(Symbol2StopLoss>0)SL=Symbol2Ask-Symbol2StopLoss*Symbol2Point;else SL=0;
        if(Symbol2TakeProfit>0)TP=Symbol2Ask+Symbol2TakeProfit*Symbol2Point;else TP=0;
        if(CountOrders(Symbol2,OP_BUY,Magic)<1)OrderSend(Symbol2,OP_BUY,Symbol2Lots,Symbol2Ask,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol2StopLoss>0)SL=Symbol2Ask-cpt*PipStep*Symbol2Point-Symbol2StopLoss*Symbol2Point;else SL=0;
           if(Symbol2TakeProfit>0)TP=Symbol2Ask-cpt*PipStep*Symbol2Point+Symbol2TakeProfit*Symbol2Point;else TP=0;
           if(CountOrders(Symbol2,OP_BUYSTOP,Magic)<3)OrderSend(Symbol2,OP_BUYSTOP,Symbol2Lots,NormalizeDouble(Symbol2Ask-cpt*PipStep*Symbol2Point,Symbol2Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol2OrderType=="SELL")
     {  
        if(Symbol2StopLoss>0)SL=Symbol2Bid+Symbol2StopLoss*Symbol2Point;else SL=0;
        if(Symbol2TakeProfit>0)TP=Symbol2Bid-Symbol2TakeProfit*Symbol2Point;else TP=0;
        if(CountOrders(Symbol2,OP_SELL,Magic)<1)OrderSend(Symbol2,OP_SELL,Symbol2Lots,Symbol2Bid,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol2StopLoss>0)SL=Symbol2Bid+cpt*PipStep*Symbol2Point+Symbol2StopLoss*Symbol2Point;else SL=0;
           if(Symbol2TakeProfit>0)TP=Symbol2Bid+cpt*PipStep*Symbol2Point-Symbol2TakeProfit*Symbol2Point;else TP=0;
           if(CountOrders(Symbol2,OP_SELLSTOP,Magic)<3)OrderSend(Symbol2,OP_SELLSTOP,Symbol2Lots,NormalizeDouble(Symbol2Bid+cpt*PipStep*Symbol2Point,Symbol2Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol3OrderType=="BUY")
     {  
        if(Symbol3StopLoss>0)SL=Symbol3Ask-Symbol3StopLoss*Symbol3Point;else SL=0;
        if(Symbol3TakeProfit>0)TP=Symbol3Ask+Symbol3TakeProfit*Symbol3Point;else TP=0;
        if(CountOrders(Symbol3,OP_BUY,Magic)<1)OrderSend(Symbol3,OP_BUY,Symbol3Lots,Symbol3Ask,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol3StopLoss>0)SL=Symbol3Ask-cpt*PipStep*Symbol3Point-Symbol3StopLoss*Symbol3Point;else SL=0;
           if(Symbol3TakeProfit>0)TP=Symbol3Ask-cpt*PipStep*Symbol3Point+Symbol3TakeProfit*Symbol3Point;else TP=0;
           if(CountOrders(Symbol3,OP_BUYSTOP,Magic)<3)OrderSend(Symbol3,OP_BUYSTOP,Symbol3Lots,NormalizeDouble(Symbol3Ask-cpt*PipStep*Symbol3Point,Symbol3Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     if(Symbol3OrderType=="SELL")
     {  
        if(Symbol3StopLoss>0)SL=Symbol3Bid+Symbol3StopLoss*Symbol3Point;else SL=0;
        if(Symbol3TakeProfit>0)TP=Symbol3Bid-Symbol3TakeProfit*Symbol3Point;else TP=0;
        if(CountOrders(Symbol3,OP_SELL,Magic)<1)OrderSend(Symbol3,OP_SELL,Symbol3Lots,Symbol3Bid,Slippage,SL,TP,"Limit Orders Manager",Magic,0,Blue);
          
        for(cpt=1;cpt<=Levels;cpt++)
        {
           if(Symbol3StopLoss>0)SL=Symbol3Bid+cpt*PipStep*Symbol3Point+Symbol3StopLoss*Symbol3Point;else SL=0;
           if(Symbol3TakeProfit>0)TP=Symbol3Bid+cpt*PipStep*Symbol3Point-Symbol3TakeProfit*Symbol3Point;else TP=0;
           if(CountOrders(Symbol3,OP_SELLSTOP,Magic)<3)OrderSend(Symbol3,OP_SELLSTOP,Symbol3Lots,NormalizeDouble(Symbol3Bid+cpt*PipStep*Symbol3Point,Symbol3Digits),Slippage,SL,TP,"Limit Orders Manager",Magic,0);
        }
     }
     return(0);
  }
//|---------count orders
int CountOrders(string symbol,int Type,int Magic)
{
   int _CountOrd;
   _CountOrd=0;
   for(int i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==symbol)
      {
         if((OrderType()==Type&&(OrderMagicNumber()==Magic)||Magic==0))_CountOrd++;
      }
   }
   return(_CountOrd);
}



Any help is much appreciated. You don't have to spoonfeed me, maybe just a point in the right direction if possible.
  • Platform Tech
  • /
  • Stop orders instead of limit orders
  • Reply to Thread
0 traders viewing now
Top of Page
  • Facebook
  • Twitter
About FF
  • Mission
  • Products
  • User Guide
  • Media Kit
  • Blog
  • Contact
FF Products
  • Forums
  • Trades
  • Calendar
  • News
  • Market
  • Brokers
  • Trade Explorer
FF Website
  • Homepage
  • Search
  • Members
  • Report a Bug
Follow FF
  • Facebook
  • Twitter

FF Sister Sites:

  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Forex Factory® is a brand of Fair Economy, Inc.

Terms of Service / ©2023