ea_pipfinite_trend_laser

Author: Copyright � Master Forex - 2016
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
ea_pipfinite_trend_laser
//+------------------------------------------------------------------+
//|                                     EA_PipFinite_Trend_Laser.mq4 |
//|                                  Copyright © Master Forex - 2016 |
//|             https://www.mql5.com/en/users/Master_Forex/portfolio |
//+------------------------------------------------------------------+
#property copyright "Copyright © Master Forex - 2016"
#property link      "https://www.mql5.com/en/users/Master_Forex/portfolio"
#property version   "1.00"
#property strict
#include <stderror.mqh> 
#include <stdlib.mqh> 

input string InpEAComment            = "Trend Laser";// EA Comment
input double InpLot                  = 0.01;         // Lot Size
input double InpTakeProfit           = 300;          // Take Profit (in points)  
input double InpStopLoss             = 300;          // Stop Loss (in points)  
input bool   InpExitOpposite         = 1;            // Exit by Opposite Signal
input int    InpMagicNumber          = 0;            // Magic Number
input string InpIndicatorSettings    = "--------------------< PipFinite Trend Laser >--------------------";//Indicator PipFinite Trend Laser ............................................................................................................
input int    InpPeriods              = 3;            // Trend Laser Period
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
double lots=0,SL=0,TP=0,ClosingArray[100];
int Pip=1,lotdigit=0;
bool Buy=0,Sell=0;
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
   return;
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//  
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   return;
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   Lots();Entry();Exit(); return;
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+------------------------------------------------------------------+
//| Calculate Trade Volume(Lot)                                      |
//+------------------------------------------------------------------+
void Lots()
  {
   lots=InpLot;
   if(lots<MarketInfo(Symbol(),MODE_MINLOT)) lots=MarketInfo(Symbol(),MODE_MINLOT);
   if(lots>MarketInfo(Symbol(),MODE_MAXLOT)) lots=MarketInfo(Symbol(),MODE_MAXLOT);
  }
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO//
//+------------------------------------------------------------------+
//|  Get Signals                                                     |  
//+------------------------------------------------------------------+
double TL(int buff)
  {
   return(iCustom(_Symbol,0,"Market\\PipFinite Trend Laser","",InpPeriods,1000,"",0,0,0,15,8,1,1,"",2,1,"",0,0,0,0,"alert.wav",buff,1));
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//  
//+------------------------------------------------------------------+
//| Trade Entry Function                                             |
//+------------------------------------------------------------------+
void Entry()
  {
   bool ban=0;int err;
//+------------------------------------------------------------------+   
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==InpMagicNumber)
           {
            if(OrderOpenTime()>=iTime(NULL,0,0)) ban=true;
           }
        }
     }
//+------------------------------------------------------------------+ 
//===== Check Free Margin =====\\
   if(AccountFreeMarginCheck(Symbol(),OP_BUY,lots)<=0.0 || 
      AccountFreeMarginCheck(Symbol(),OP_SELL,lots)<=0.0 || 
      GetLastError()==ERR_NOT_ENOUGH_MONEY)
     {
      Print("NOT ENOUGH MONEY TO TRADE OPEN");return;
     }
//+------------------------------------------------------------------+ 

   if(1>Orders(-1) && ban==false)
     {
      if(TL(14)!=0)
        {
         if(InpStopLoss==0){ SL=0;}else{ SL=Bid-InpStopLoss *_Point;}
         if(InpTakeProfit==0){ TP=0;}else{ TP=Ask+InpTakeProfit *_Point;}
         int Ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,1,SL,TP,InpEAComment,InpMagicNumber,0,clrGreen);
         err=GetLastError();if(err!=ERR_NO_ERROR){ Print("Error on Order open = ",ErrorDescription(err));}
        }
      if(TL(15)!=0)
        {
         if(InpStopLoss==0){ SL=0;}else{ SL=Ask+InpStopLoss *_Point;}
         if(InpTakeProfit==0){ TP=0;}else{ TP=Bid-InpTakeProfit *_Point;}
         int Tickets=OrderSend(Symbol(),OP_SELL,lots,Bid,1,SL,TP,InpEAComment,InpMagicNumber,0,clrRed);
         err=GetLastError();if(err!=ERR_NO_ERROR){ Print("Error on Order open = ",ErrorDescription(err));}
        }
     }
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+------------------------------------------------------------------+
//| Trade Exit Function                                              |
//+------------------------------------------------------------------+
void Exit()
  {
   int err;
   for(int i=0; i<OrdersTotal(); i++)
     {
      bool OrSel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==InpMagicNumber)
        {
         if(OrderType()==OP_BUY)
           {
            if(InpExitOpposite && TL(15)!=0)
               bool close=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrBlue);err=GetLastError();
            if(err!=ERR_NO_ERROR){ Print("Error on Order closing = ",ErrorDescription(err));}
           }
         if(OrderType()==OP_SELL)
           {
            if(InpExitOpposite && TL(14)!=0)
               bool close=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrRed);err=GetLastError();
            if(err!=ERR_NO_ERROR){ Print("Error on Order closing = ",ErrorDescription(err));}
           }
        }
     }
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+------------------------------------------------------------------+
//| Get total orders count                                           |
//+------------------------------------------------------------------+
int Orders(int type)
  {
   int count=0;
//-1= All,0=Buy,1=Sell,2=BuyLimit,3=SellLimit,4=BuyStop,5=SellStop;   
   for(int x=OrdersTotal()-1;x>=0;x--)
     {
      if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==InpMagicNumber)
           {
            if(type<0){ count++;}
            if(OrderType()==type && type>=0){ count++;}
           }
        }
     }
   return(count);
  }
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH// 

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---