JS_ma_paraboliks_Trades

Author: js_sergey@list.ru
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Indicators Used
Moving average indicatorParabolic Stop and Reverse system
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
JS_ma_paraboliks_Trades
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
//|\           \                JS.ma.paraboliks.Trades.mq4                      /           / |
//| )----)------)---------------------------------------------------------------(------(----(  |
//|/           /     Ïèøó òîðãîâûå ñèñòåìû  js_sergey@list.ru  Ñåðãåé  © 2009    \           \ |
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+

#property copyright " js_sergey@list.ru "
#property link      " http://multiexperts.ru/ "
/*#include <JS-Lots.mqh> // Áèáëèîòåêà ôóíêöèé ðàñ÷¸òà ðàçìåðà ëîòà.*/
/*extern*/ int mn = 10;
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
extern bool    Times              = True;           // ----------- 1 - âêëþ÷åíî, 0 - âûêëþ÷åíî |
extern int     starttime          = 1;              // --------------------- ÷àñû ðàáîòû ñòàðò |
extern int     stoptime           = 22;             // ---------------------- ÷àñû ðàáîòû ñòîï |
extern double  Lots               = 0.1;            // ----------------------------------------|
extern int     prof               = 40;
extern int     SL.ðåàë            = 20;             // ----------------------------------------| 
extern int     TP.ðåàë            = 300;            // ----------------------------------------| 
extern bool    Óðîâåíü.áåçóáûòêà  = True;           // ----------------------------------------| 
extern int     Áåçóáûòîê          = 9;              // ----------------------------------------| 
extern int     Magic              = 185967;         // ----------------------------------------| 
extern int     UR.profit          = 0;              // ----------------------------------------| 
extern int     Slippage           = 20;             // ----------------------------------------| 
extern bool    ClosePosicion      = True;           // ----------------------------------------|
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
extern int     Ma.per.1           = 5;             // Ïåðèîä ÌÀ ------------------------------|
extern int     Ma.per.2           = 9;             // Ïåðèîä ÌÀ ------------------------------|
extern int     Ma.per.3           = 55;             // Ïåðèîä ÌÀ ------------------------------|
extern int     Ma.per.4           = 89;            // Ïåðèîä ÌÀ ------------------------------|
extern int     mashag             = 1120;           // Ôèëüòð ÌÀ ------------------------------|
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
extern double  Par.sar            = 0.02;           // ----------------------------------------| 
extern double  Par.shag           = 0.2;           // ----------------------------------------|
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
extern bool    UseSound           = True;  // ------------------- Èñïîëüçîâàòü çâóêîâîé ñèãíàë |
extern string  Sound.bay          = "news.wav";     // ---------- Íàèìåíîâàíèå çâóêîâîãî ôàéëà |
extern string  Sound.sell         = "alert2.wav";   // ---------- Íàèìåíîâàíèå çâóêîâîãî ôàéëà |
extern string  Sound.stops        = "stops.wav";    // ---------- Íàèìåíîâàíèå çâóêîâîãî ôàéëà |
extern string  Sound.close        = "ok.wav";       // ---------- Íàèìåíîâàíèå çâóêîâîãî ôàéëà |
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
double SAR0,ma.1,ma.3,ma.5,ma.6,ma.7,ma.8;
double Dig,dBid,dAsk,point,stoplevel;
double sar, SARs, SARn;
int ticket,Trend;
//+--------------------------------------------------------------------------------------------+
//|HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
//+--------------------------------------------------------------------------------------------+
#include <stdlib.mqh>
int init()
  {
//----
//----
   return(0);
  }

///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
int start()
 {
   Dig = MarketInfo(Symbol(),MODE_DIGITS);
   dBid = MarketInfo(Symbol(),MODE_BID);
   dAsk = MarketInfo(Symbol(),MODE_ASK);
   point = MarketInfo(Symbol(),MODE_POINT)*mn;
   stoplevel = MarketInfo(Symbol(),MODE_STOPLEVEL);  
   if(ClosePosicion)ClosePos();
   if(Óðîâåíü.áåçóáûòêà)OrdersModif();  
   OpenPosicion();  
   line();
   return(0);
 }
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
int deinit()
 {
  //---
  ObjectDelete("linestops");
  ObjectDelete("_price");
  ObjectDelete("_pricel");
  ObjectDelete("line");
  //---
 return(0);
 }
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
void ClosePos()
{    
   int CLbay = 0; 
   int CLsell = 0; 

   if(SARs>=ma.1)CLbay=1;
   if(SARs<=ma.1)CLsell=1;
   
   bool eer;
   int cnt = OrdersTotal();
   for (int i=cnt-1; i>=0; i--) {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
    if (OrderSymbol() != Symbol()) continue;
    if (OrderMagicNumber() != Magic) continue; 
    if (OrderType() == OP_BUY && CLbay==1 && OrderProfit()>prof) {
        eer=OrderClose(OrderTicket(), OrderLots(), ND(dBid), Slippage);
        if(UseSound && eer==true){ PlaySound(Sound.close);
      }
    }
    if (OrderType() == OP_SELL && CLsell==1 && OrderProfit()>prof) { 
        eer=OrderClose(OrderTicket(), OrderLots(), ND(dAsk), Slippage);
        if(UseSound && eer==true){ PlaySound(Sound.close);
      }
    }
  }
}
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
void OrdersModif()
{
  double dBid = MarketInfo(Symbol(),MODE_BID);
  double dAsk = MarketInfo(Symbol(),MODE_ASK);
  int cnt = OrdersTotal();
  bool eer;
  for (int i=0; i<cnt; i++) 
  {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
     if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != Magic) continue;
       if (OrderType() == OP_BUY){
         if (OrderStopLoss()<OrderOpenPrice() && (OrderOpenPrice()+(stoplevel*point+Áåçóáûòîê*point))<dBid){
         eer=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + Áåçóáûòîê*point,OrderTakeProfit(),OrderExpiration());
         if(UseSound && eer==true){ PlaySound(Sound.stops);
        }
      }
    }  
    if (OrderType() == OP_SELL){
         if (OrderStopLoss()>OrderOpenPrice() && (OrderOpenPrice()-(stoplevel*point+Áåçóáûòîê*point))>dAsk){
         eer=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Áåçóáûòîê*point,OrderTakeProfit(),OrderExpiration());
         if(UseSound && eer==true){ PlaySound(Sound.stops);
        }
      } 
    }
  }
}
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
void OpenPosicion()
 {     
   ma.1 = iMA(Symbol(),0,Ma.per.1,0,MODE_LWMA,PRICE_MEDIAN,0);
   ma.3 = iMA(Symbol(),0,Ma.per.2,0,MODE_LWMA,PRICE_MEDIAN,0);
   ma.5 = iMA(Symbol(),0,Ma.per.3,0,MODE_LWMA,PRICE_MEDIAN,0);
   ma.6 = iMA(Symbol(),0,Ma.per.3,0,MODE_LWMA,PRICE_MEDIAN,1);  
   ma.7 = iMA(Symbol(),0,Ma.per.4,0,MODE_LWMA,PRICE_MEDIAN,0);
   ma.8 = iMA(Symbol(),0,Ma.per.4,0,MODE_LWMA,PRICE_MEDIAN,1);
   
   int filtrs = (MathAbs(ma.1-ma.8)/point)*mn;
   double tp,sl,tmp;
   
   
   if(DayOfWeek()==6 || DayOfWeek()==4)return(0);// íå ðàáîòàåò â âûõîäíûå äíè.
   
//----------------------   
   if(SARs<Close[1] &&  SARs>Low[1] && ma.5>ma.6 && ma.7>ma.8 && ma.1>ma.3 &&  ma.5>ma.7 &&  Posor()==0 && timecontrol()==True)//sarfast<=dAsk && dLow<Psar && 
    {
     if(TP.ðåàë>=stoplevel) tp=dAsk+(TP.ðåàë*point);

     ticket = OrderSend(Symbol(), OP_BUY, Lots, ND(dAsk), Slippage, ND(SARn), ND(tp), "", Magic, 0, Green);
     if(ticket<0){Print("OrderSend Îøèáêà OP_BUY.  price "+DT(dAsk)+" sl "+DT(SARn)+" tp "+DT(tp)+" "+GetLastError());return(-1);}
     if(ticket>0)
     {
      if(UseSound) PlaySound(Sound.bay);
      return (ticket);   
     }
   }
   
//----------------------
   if(SARs>Close[1] &&  SARs<High[1] && ma.5<ma.6 && ma.7<ma.8 && ma.1<ma.3 &&  ma.5<ma.7 &&  Posor()==0 && timecontrol()==True)//sarfast>=dBid && dHigh>Psar && 
    {
      if(TP.ðåàë>=stoplevel) tp = dBid-(TP.ðåàë*point);

      ticket = OrderSend(Symbol(), OP_SELL, Lots, ND(dBid), Slippage, ND(SARn), ND(tp), "", Magic, 0, Red);
      if(ticket<0){Print("OrderSend Îøèáêà OP_SELL.  price "+DT(dAsk)+" sl "+DT(SARn)+" tp "+DT(tp)+" "+GetLastError());return(-1);}
      if(ticket>0)
      {
       if(UseSound) PlaySound(Sound.sell);
       return (ticket);       
      }
    }
   return(0);
}
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
bool Posor(string sy="", int op=-1, datetime ot=0) {
 int i, k=OrdersTotal();
 if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (Magic<0 || OrderMagicNumber()==Magic) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
   double ND(double A){//  Ïðèâåäåíèå çíà÷åíèé ê òî÷íîñòè                                      |
   return(NormalizeDouble(MathAbs(A),Dig));//                                                  |
   }                                       //                                                  |
   string DT(double R){                    //                                                  |
   return(DoubleToStr(MathAbs(R),Dig));    //                                                  |
   }                                       //                                                  |
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|

void line()
{

  SAR0 = iSAR(NULL, 0, Par.sar, Par.shag, 0);  
  int cnt = 0;
  for (int i=0; i < Bars; i++) {
  double SAR = iSAR(NULL, 0, Par.sar, Par.shag, i);
  if (SAR0 > Close[0]) {
  if (SAR < Close[i]) break;
  }
  if (SAR0 < Close[0]) {
   if (SAR > Close[i]) break;
   }
    cnt++;
   }
  if(cnt>1){
  SARs = iSAR(NULL, 0, Par.sar, Par.shag, cnt);
  SARn = iSAR(NULL, 0, Par.sar, Par.shag, cnt-1);
  }
 } 
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|
//========== *  Timecontrol * =============
int timecontrol()
 {
   if(((Hour()>=0 && Hour()<=stoptime-1) || (Hour()>=starttime && Hour()<=23)) && starttime>stoptime){
      return(True);}  
      if ( (Hour()>=starttime && Hour()<=stoptime-1) && starttime<stoptime){
      return(True);}  
   if(Times==False){ return(True);}    
   return(0);
 }
///////////////////////////////////////////////////////////////////////////////////////////////|
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH|
///////////////////////////////////////////////////////////////////////////////////////////////|





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 ---