TickVolumen_MASignal

Author: Copyright 2018, MetaQuotes Software Corp.
Price Data Components
Series array that contains open prices of each barSeries array that contains tick volumes of each bar
Orders Execution
It automatically opens orders when conditions are reached
Indicators Used
Moving average indicatorIndicator of the average true range
0 Views
0 Downloads
0 Favorites
TickVolumen_MASignal
ÿþ#property copyright "Copyright 2018, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

enum ENUM_HAN_ZEI

  {

   H00M00 =     0,   // 00:00

   H00M30 =  1800,   // 00:30

   H01M00 =  3600,   // 01:00

   H01M30 =  5400,   // 01:30

   H02M00 =  7200,   // 02:00

   H02M30 =  9000,   // 02:30

   H03M00 = 10800,   // 03:00

   H03M30 = 12600,   // 03:30

   H04M00 = 14400,   // 04:00

   H04M30 = 16200,   // 04:30

   H05M00 = 18000,   // 05:00

   H05M30 = 19800,   // 05:30

   H06M00 = 21600,   // 06:00

   H06M30 = 23400,   // 06:30

   H07M00 = 25200,   // 07:00

   H07M30 = 27000,   // 07:30

   H08M00 = 28800,   // 08:00

   H08M30 = 30600,   // 08:30

   H09M00 = 32400,   // 09:00

   H09M30 = 34200,   // 09:30

   H10M00 = 36000,   // 10:00

   H10M30 = 37800,   // 10:30

   H11M00 = 39600,   // 11:00

   H11M30 = 41400,   // 11:30

   H12M00 = 43200,   // 12:00

   H12M30 = 45000,   // 12:30

   H13M00 = 46800,   // 13:00

   H13M30 = 48600,   // 13:30

   H14M00 = 50400,   // 14:00

   H14M30 = 52200,   // 14:30

   H15M00 = 54000,   // 15:00

   H15M30 = 55800,   // 15:30

   H16M00 = 57600,   // 16:00

   H16M30 = 59400,   // 16:30

   H17M00 = 61200,   // 17:00

   H17M30 = 63000,   // 17:30

   H18M00 = 64800,   // 18:00

   H18M30 = 66600,   // 18:30

   H19M00 = 68400,   // 19:00

   H19M30 = 70200,   // 19:30

   H20M00 = 72000,   // 20:00

   H20M30 = 73800,   // 20:30

   H21M00 = 75600,   // 21:00

   H21M30 = 77400,   // 21:30

   H22M00 = 79200,   // 22:00

   H22M30 = 81000,   // 22:30

   H23M00 = 82800,   // 23:00

   H23M30 = 84600    // 23:30

  };



input string I = ""; // +----- Handelszeiten -----+

input ENUM_HAN_ZEI HandelsBeginn = H09M00; // Handelsbeginn

input ENUM_HAN_ZEI HandelsEnde = H21M00; // Handelsende



input string Ii = ""; // +----- Zeit und Preis für alle Indis und Osis -----+

input ENUM_TIMEFRAMES Zeit = PERIOD_CURRENT; // Zeit (M1, M5, M15 usw.)

input ENUM_APPLIED_PRICE Preis = PRICE_CLOSE; // Preis (Close, Open usw.)



input string II =""; // +----- Lots/SL/TP -----+

extern double Lot=0; // Einsatz

extern double LotBalanceProz =100; // Einsatz in % von Kapital

input double SLFaktor = 10; //Stop

input double TPFaktor2 = 15; // Profit

input int PeriodeAtr = 14; // ATR Periode für SL und TP 

input string III = ""; // |----- Spread/Magic/Kommentar/Slippage -----|

input int MaxSpread = 10; // Maximaler Spread

input int Magic= 1; // Magic Nummer

input string Commentary=""; // Kommentar

input int Slippage=5; // Slippage



input string IV = ""; // MA-Signal

input ENUM_MA_METHOD MAMethode = MODE_EMA;

input int MASignal = 13;



input string V =""; // Tick-Volumen

input int Vol = 200;





datetime TradeStart, TradeEnd;

int orderTicket;





double spread;

double atr;





int OnInit()

  {

//---

   

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   TradeStart = StringToTime(TimeToString(TimeCurrent(), TIME_DATE)) + HandelsBeginn;

   TradeEnd   = StringToTime(TimeToString(TimeCurrent(), TIME_DATE)) + HandelsEnde;





   double maSignal = iMA(_Symbol,Zeit,MASignal,0,MAMethode,Preis,0); 



   

    atr = iATR(_Symbol,0,PeriodeAtr,1);

   CalcLot_Balance();     

//--wenn Erder ausgeführt wurde, neue Order ausfühen

   if(OrderSelect(orderTicket,SELECT_BY_TICKET)) 

     {

      if(OrderCloseTime()>0) 

        {

         orderTicket=0;

        }

     }

//--Order ausführen zu bestimmten Handelszeiten und zu maximalen Spread

  if(TimeCurrent() < TradeStart || TimeCurrent() >= TradeEnd){return;}

     spread = MarketInfo(_Symbol,MODE_SPREAD);

     if(MaxSpread > 0 && MaxSpread < spread) {return;} 

     spread = spread * Point; { 

        if(orderTicket<=0)

     {

                     if(checkAusbruch()=="sell")       

                       {

                       double entry = Bid;

                       entry = NormalizeDouble(entry,_Digits);

                        

                       double sl=entry+atr*SLFaktor;

                       sl=NormalizeDouble(sl,_Digits);

   

                        

                       double tp = entry - atr * TPFaktor2;

                       tp = NormalizeDouble(tp,_Digits);

   

                       orderTicket= OrderSend(_Symbol,OP_SELL,CalcLot_Balance(),entry,Slippage,sl,tp,Commentary,Magic);

                       }

                     else if(checkAusbruch()=="buy")       

                            {

                            double entry = Ask;

                            entry = NormalizeDouble(entry,_Digits);

                             

                            double sl=entry-atr*SLFaktor;

                            sl=NormalizeDouble(sl,_Digits);

                             

                             

                            double tp = entry + atr * TPFaktor2;

                            tp = NormalizeDouble(tp,_Digits);

                     

                                                   

                            orderTicket=OrderSend(_Symbol,OP_BUY,CalcLot_Balance(),entry,Slippage,sl,tp,Commentary,Magic);

                            }

      }

     }

    }

 

//-- Break out



string checkAusbruch(){

       string Ausbruch;

       double maSignal = iMA(_Symbol,Zeit,MASignal,0,MAMethode,Preis,0);

       if(iOpen(_Symbol,0,0) > maSignal &&

          iOpen(_Symbol,0,0) > Ask &&

          Ask < maSignal &&

          iVolume(_Symbol,0,0)> Vol)

          {Ausbruch = "sell";} 



       else if(iOpen(_Symbol,0,0) < maSignal &&

               iOpen(_Symbol,0,0) < Bid &&

               Bid > maSignal &&

               iVolume(_Symbol,0,0)>Vol)

              {Ausbruch = "buy";} 

              return Ausbruch;      

              }



double CalcLot_Balance()

   {

   double Lots=0;

   if(Lot>0)Lots=Lot;

   else Lots=MathFloor(AccountBalance()*LotBalanceProz*0.01/MarketInfo(NULL,MODE_MARGINREQUIRED)/MarketInfo(NULL,MODE_LOTSTEP))*MarketInfo(NULL,MODE_LOTSTEP);

   return(Lots);

   } 

                

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