qrvomcdu7jmwl2_2mxhh2f4az

Author: Sergey Golikov
Price Data Components
Series array that contains the lowest prices of each barSeries array that contains the lowest prices of each barSeries array that contains the highest prices of each barSeries array that contains the highest prices of each barSeries array that contains open prices of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Bears Power indicatorMoving average indicatorBulls Power indicator
1 Views
0 Downloads
0 Favorites
qrvomcdu7jmwl2_2mxhh2f4az
//+------------------------------------------------------------------+
//|                                                Äíåâíîé îòêàò.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property copyright "Sergey Golikov"
/*
Äàííûå íàñòðîéêè ïîëó÷åíû íà ïåðèîäå îïòèìèçàöèè ñ 01.01.2009 ïî 01.03.2009 íà êîòèðîâêàõ ÄÖ."Àëüïàðè".
Ôîðâàðä-òåñò ïðîâîäèëñÿ ñ 01.03.2009 ïî 17.07.2009 .Ïîêà äåðæèò.
Êîìïîçèòíûé èíäåêñ äîëëàðà, âêëþ÷àåò â ñåáÿ âàëþòû ñî ñëåäóþùèìè âåñàìè: 57.6% åâðî, 13.6% ÿïîíñêàÿ éåíà, 11.9% áðèòàíñêèé
ôóíò, 9.1% êàíàäñêèé äîëëàð, 4.2% øâåäñêàÿ êðîíà, 3.6% øâåéöàðñêèé ôðàíê. ** Ðàçíèöà ìåæäó êîòèðîâêàìè: òåêóùåé è â÷åðà íà 0.00 Ìñê
*/
//+------------------------------------------------------------------+
#define MB 11111
#define MS 22222
//+------------------------------------------------------------------+
extern string y="EURUSD"; 

extern string y1             ="ÑòîïËîññ ïî ïàðå";
extern int ON_SL             =1;// åñëè 0 òî ñòîïëîññ îòêëþ÷åí
//extern int Sl                =50;
extern double n              =0.91;//áåçðàçìåðíûé êîýô-íò îòíîøåíèÿ ñòîïàëîññà è òåéêïðîôèòà.Èñïîëüçóåòñÿ ìíîþ â ñëó÷àå ðàáîòû ñ èñïîëüçîâàíèåì ìàðòèíãåéëà 
                                  //Î÷åíü ïðîñòî äîáèòüñÿ áîëüøîé % ïðèáûëüíûõ ñäåëîê ïðè ìàëåíüêîì òåéêïðîôèòå è áîëüøîì ñòîïëîññå.
                                  //Íî ïðè ýòîì îäèí ëîññ óáüåò âåñü ïðåäûäóùèé òåéêïðîôèò.Ïîýòîìó ïðè òåñòèðîâàíèè ÿ çàêîììåíòèðîâûâàþ  //extern int Sl =50;,
                                  //è èñïîëüçóþ â ðàññ÷åòàõ äàííûé êîýô-íò.Òîãäà ïðè òåñòèðîâàíèè  ñîâåòíèê âûíóæäåí ñîîòíîñèò ðàçìåðû òåéêïðîôèòà è ñòîïëîññà.
                                  //Ïðè èñïîëüçîâàíèè ìàðòèíãåéëà  âàæíî ,÷òîáû ðàçìåð òåéêïðîôèòà è ñòîïëîñà áûëè ïðèìåðíî ðàâíû â ïóíêòàõ.Òîãäà ïåðâàÿ ïðèáûëüíàÿ ñäåëêà 
                                  // ñìîæåò ïåðåêðûòü (èëè ïî÷òè ïåðåêðûòü) ñåðèþ âñåõ ïðåäûäóùèõ óáûòî÷íûõ ñäåëîê.Ïîýòîìó íå íàçíà÷àþ n áîëå 2 ñ øàãîì 0.1.
extern string y2             ="ÒåéêÏðîôèò ïî ïàðå";
extern int ON_TP             =1;//åñëè 0 òî òåéêïðîôèò îòêëþ÷åí
extern int Profit            =302;

extern string y3            ="Íà÷àëüíûé ëîò";
extern double Lots          =0.1;
extern double K_0           =2;//2  ìíîæèòåëü íà÷àëüíîãî ëîòà
extern double K             =2;//2 ìíîæèòåëü ïîñëåäóþùèõ ëîòîâ
extern double MaxLot        =6.4;
extern int Losse            =1;//êîë-âî îòðèöàèåëüíûõ ñäåëîê ïîñëå êîòîðûõ âêëè÷àåòñÿ ìàðòèíãåéë

extern string y4            ="Âêëþ÷åíèå ôóíêöèè âûñòàâëåíèÿ äèíàìè÷åñêîãî ëîòà";
extern bool LotsSize        =false;
extern double MaximumRisk   =0.01;

extern string y5           ="ÒðåéëèíãÑòîï ïî ïàðå";
extern bool TS             =false;
extern int Sl_TS           =272;
extern int TrailingStep    =126;

extern string y6           = "Íàñòðîéêè îïðåäåëèòåëÿ òðåíäà ";
extern int PeriodPower     =15;
extern int Period_Bulls    =10;
extern int Period_Bears    =14;
extern double Ãðàíèöà_UP   =0.05;//ãðàíèöà ñðàáàòûâàíèÿ îïðåäåëèòåëÿ òðåíäà äëÿ ïîêóïêè
extern double Ãðàíèöà_DN   =0.15;//ãðàíèöà ñðàáàòûâàíèÿ îïðåäåëèòåëÿ òðåíäà äëÿ ïðîäàæè
extern int ê               = 870;// áåçðàçìåðíûé êîýôôèöèåíò äëÿ óäîáñòâà ðàñ÷åòà ðàçíèöû ñèëû áûêîâ è ìåäâåäåé.Òàê êàê çíà÷åíèå Delta = (MA_Bears + MA_Bulls)
                                 //î÷åíü ìàëî è ÷òîáû íå îøèáàòüñÿ â íîëÿõ ïîñëå çàïÿòîé äëÿ Delta ÿ è ïðèìåíèë ýòîò êîýô-íò. òåñòåðå â íàñòðîéêàõ çàäàþ
                                 //ãðàíèöû îò 10 äî 1000 ñ øàãîì 10 


extern string  y7           ="Íàñòðîéêè ãðàíèö êàíàëà äëÿ âõîäà â ñäåëêó";
extern int Delta2           =794;//ñðåäíÿÿ ðàçíèöà ìåæäó öåíîé â íà÷àëå òîðãîâûõ ñóòîê è òåêóùåé öåíîé (äëÿ ïðîäàæ)çà îïòèìèçèðóåìûé ïåðèîä.
extern int Delta1           =1128;//ñðåäíÿÿ ðàçíèöà ìåæäó öåíîé â íà÷àëå òîðãîâûõ ñóòîê è òåêóùåé öåíîé (äëÿ ïîêóïîê)çà îïòèìèçèðóåìûé ïåðèîä.
extern int Razmax           =1250;//ñðåäíÿÿ ðàçíèöà ìåæäó ìàêñ. è ìèí. öåíîé â òå÷åíèè äíÿ çà îïòèìèçèðóåìûé ïåðèîä.

extern string  y8            =  " Íàñòðîéêè âðåìåíè ðàáîòû";
extern int       StartHour   = 0;//÷àñ íà÷àëà âû÷èñëåíèÿ ãðàíèö êàíàëà äâèæåíèÿ öåíû â òå÷åíèè äíÿ
extern int       EndHour     = 14;//÷àñ îêîí÷àíèÿ âû÷èñëåíèÿ ãðàíèö êàíàëà äâèæåíèÿ öåíû â òå÷åíèè äíÿ.
                                 // Îí æå ÷àñ  ðàçðåøåíèÿ íà÷àëà òîðãîâëè
extern int       StopHour    = 24;//Âðåìÿ îêîí÷àíèÿ ðàçðåøåíèÿ íà òîðãîâëþ.Ïîñëå ýòîãî âðåìåíè ñîâåòíèê ìîæåò òîëüêî ñîïðàâîæäàòü îòêðûòûå ñäåëêè.
extern int PeriodMA=40;  
#include <stdlib.mqh>
#include <stderror.mqh>  

//=======================================================================================================


double LotsOptimized()
{
   double x=Losse;
   double lot=Lots;
   int    orders=HistoryTotal();     
   int    losses=0; 
   int    Pair ;               
//=====================Ðàññ÷åò âåëè÷èíû íà÷àëüíîãî ëîòà â çàâèñèìîñòè îò ðàçìåðà äåïîçèòà================
  {
   if(LotsSize)
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);
  }
//==================Ðàññ÷åò âåëè÷èíû ëîòîâ â ñëó÷àå êîãäà, ïðåäûäóùÿÿ ñäåëêà áûëà îòðèöàòåëüíîé==========
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
 //==========================Ðàññ÷åò âåëè÷èíû ëîòîâ ñ ïåðåìåííûì Ê, åñëè ïðåäûäóùÿÿ ñäåëêà áûëà îòðèöàòåëüíîé==============
        
      if(losses>((x)-1)) lot=NormalizeDouble(lot*K_0,2);//åñëè âûâåñòè â ïåðåìåííûå îòäåëüíî Ê_0,Ê_1,.......Ê_100 , òîãäà ìîæíî ïîäáèðàòü ìíîæåòåëü äëÿ êàæäîãî ëîòà îòäåëüíî
      if(losses>((x*2)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*3)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*4)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*5)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*6)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*7)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*8)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*9)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*10)-1)) lot=NormalizeDouble(lot*K,2);
      if(losses>((x*11)-1)) lot=NormalizeDouble(lot*K,2);
     }
    
 //----------------------------------------------------------------------+
 //     òîì ñëó÷àå åñëè Âû õîòèòå ÷òîáû ìíîæåòåëü Ê áûë ïîñòîÿííûì      +
 //    ðåêîìåíäóåòñÿ èñïîëüçîâàòü ñëåäóþùóþ êîíñòðóêöèþ êîäà ïðåäëîæåííóþ+
 //    òðåéäåðîì Vinin.Ñïàñèáî àâòîðó çà ïîìîùü.                         +
 //    À âåðõíþþ ÷àñòü êîäà ïðîñòî çàêîììåíòèðîâàòü.                     +
 //----------------------------------------------------------------------+
 //==========================Ðàññ÷åò âåëè÷èíû ëîòîâ ñ ïîñòîÿííûì Ê, åñëè ïðåäûäóùÿÿ ñäåëêà áûëà îòðèöàòåëüíîé==============
 /*
      if(losses>((x)-1)) lot=NormalizeDouble(lot*K_0,2);
      for(int k=2;k<=11;k++)
         if(losses>((x*k)-1)) 
            lot=NormalizeDouble(lot*K,2);
   }
    
 */    
//===========================Ïðîâåðêà ïðàâèëüíîñòè ðàçìåðà ëîòà===============================================
/*
 double minlot=MarketInfo(Pair,MODE_MINLOT);
 double maxlot=MarketInfo(Pair,MODE_MAXLOT);   
 lot=MathMax(maxlot,MathMin(minlot,lot));
*/
   if(lot<0.1) lot=0.1;
   if(lot>MaxLot) lot=MaxLot;
   return(lot);

}

int start()
{
  
   LotsOptimized();
   Open_Äíåâíîé_îòêàò();
   if(TS) TradingStop();
   return(0);
}
//================================================================================================================

int i,buy,sell,Pair,Trend/* ,Razmax */;
int Open_Äíåâíîé_îòêàò()
{
 buy=0;sell=0;
 for(int  i=0;i<OrdersTotal();i++)
                 {
                   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
                   if(OrderType()==OP_BUY ){buy=1;}
                   if(OrderType()==OP_SELL){sell=1;}
                 }          
//==========================================Ðàññ÷åò âðåìåíè ðàáîòû è ãðàíèö äíåâíîãî äâèæåíèÿ öåíû==================  
// Äàííàÿ êîíñòðóêöèÿ âçÿòà èç ñîâåòíèêà   MorninFlat_Expert.mq4 àâòîð òðåéäåð Scriptong.Ñïàñèáî àâòîðó çà èäåþ.   =
//==================================================================================================================                                                                                   
 {
  datetime BeginDay = iTime(Pair, PERIOD_D1, 0);  // Ðàñ÷åò âðåìåíè íà÷àëà ñóòîê
  double StartBar   = iBarShift(Pair, PERIOD_H1, BeginDay+StartHour*3600);   // Áàð, ñîîòâåòñâóþùèé íà÷àëó ñóòîê ïëþñ ñìåùåíèå â ÷àñàõ
  double FinishBar  = iBarShift(Pair, PERIOD_H1, BeginDay+(EndHour-1)*3600); // Áàð, ñîîòâåòñòâóþùèé ïîñëåäíåìó áàðó "óòðåííåãî ôëýòà"
  double LowV       = iLow(Pair, PERIOD_H1, iLowest(Pair, PERIOD_H1, MODE_LOW, StartBar-FinishBar+1, FinishBar));  // Íèæíÿÿ ãðàíèöà
  double HighV      = iHigh(Pair, PERIOD_H1, iHighest(Pair, PERIOD_H1, MODE_HIGH, StartBar-FinishBar+1, FinishBar)); // Âåðõíÿÿ ãðàíèöà
  double Target     = (HighV-LowV)/Point;
 }  
  int HourCurrent=TimeHour(TimeCurrent());

//Razmax =(iMA(NULL, PERIOD_D1,PeriodMA , 0, MODE_EMA, PRICE_HIGH, 1)/Point)-(iMA(NULL, PERIOD_D1,PeriodMA , 0, MODE_EMA, PRICE_LOW, 1)/Point);   
//================================== Îïðåäåëèòåëü òðåíäà ============================================================ 
// Äàííàÿ êîíñòðóêöèÿ áûëà ïðåäëîæåíà â ñâîå âðåìÿ òðåéäåðîì Ëåîíèä 533.Ñïàñèáî àâòîðó çà èäåþ.                     =
//===================================================================================================================    
     double Bears_array[50]; int cx=0; while (cx<51)
     {Bears_array[cx]= iBearsPower(NULL, 0, PeriodPower,PRICE_CLOSE,cx); cx++; }
     ArraySetAsSeries(Bears_array,true);
     double MA_Bears =iMAOnArray(Bears_array,0,Period_Bears,1,MODE_SMMA,0); 

     double Bulls_array[50]; int lx=0; while (lx<51)
     {Bulls_array[lx]= iBullsPower(NULL, 0, PeriodPower,PRICE_CLOSE,lx); lx++; } 
     ArraySetAsSeries(Bulls_array,true);
     double MA_Bulls =iMAOnArray(Bulls_array,0,Period_Bulls,1,MODE_SMMA,0); 

     double Delta = (MA_Bears + MA_Bulls)*ê;
//=============================================Îïðåäåëåíèå öåíû â òå÷åíèè òîðãîâîâûõ ñóòîê===========================  
// Äàííàÿ êîíñòðóêöèÿ áûëà ïðåäëîæåíà  òðåéäåðîì Vinin.Ñïàñèáî àâòîðó çà ïîìîùü.  
//===================================================================================================================      
     double Price_00=iOpen(NULL,PERIOD_D1,0); // Öåíà îòêðûòèÿ äíÿ
     double Price_Cur=Close[0];               // Òåêóùÿÿ öåíà

      double Sl = n*Profit;                //çäåñü ñîâåòíèê ðàñ÷èòûâàåò ñòîï,ñ ó÷åòîì òîãî,÷òî-áû îãðàíè÷èòü åãî âåëè÷èíó.
                                             //×åì ìåíüøå ï òåì ëó÷øå äëÿ ñòðàòåãèè (ìåíüøå ïðîñàäêà è îäíîâðåìåíî åñòü çàäà÷à óâåëè÷èòü ðàçìåð ïðîôèòà)
                                             //ß èñïîëüçóþ ýòîò âàðèàíò ïðè ðàñ÷åòå ñòîïëîññà ïðè ìàíòåéãåéëå.
//=============================================Óñëîâèÿ äëÿ ñîâåðøåíèÿ ïîêóïêè========================================

 //if  (((Price_Cur-Price_00)/Point)>Delta1  && buy==0 && sell==0) // â äàííîì âàðèàíòå ïðè ïîêóïêå íå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà   
 
 // if  ((Delta+Ãðàíèöà_DN) < 0&&((Price_Cur-Price_00)/Point)>Delta1 &&  buy==0  && sell==0  ) //â äàííîì âàðèàíòå ïðè ïîêóïêå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà

 //if  (((Price_Cur-Price_00)/Point)>Delta1  &&sell==0 && buy==0 && Target>Razmax ) //â äàííîì âàðèàíòå ïðè ïîêóïêå ó÷èòûâàåòñÿ äíåâíîå äâèæåíèå öåíû   
 
 // if ((( Price_00-Price_Cur)/Point)>Delta1 && buy==0 && sell==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âðåìÿ ðàáîòû ñîâåòíèêà

if ((Delta+Ãðàíèöà_DN) < 0&&(( Price_00-Price_Cur)/Point)>Delta1 && buy==0 && sell==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âñå ñèãíàëû äëÿ îòêðûòèÿ ñäåëêè

      {
       RefreshRates();
       OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,
       (Bid-Sl*Point)*ON_SL,
       (Ask+Profit*Point)*ON_TP,"",MB,0,Red);
      }
//===========================Óñëîâèÿ äëÿ ñîâåðøåíèÿ ïðîäàæè=========================================================== 
 
// if ((( Price_00-Price_Cur)/Point)>Delta2 && sell==0 && buy==0  )// â äàííîì âàðèàíòå ïðè ïðîäàæå íå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà  
 
 // if ( (Delta-Ãðàíèöà_UP) > 0 &&(( Price_00-Price_Cur)/Point)>Delta2 && sell==0  &&  buy==0)  //â äàííîì âàðèàíòå ïðè ïðîäàæå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà        
 
 // if ((( Price_00-Price_Cur)/Point)>Delta2 &&buy==0 && sell==0 && Target>Razmax )//â äàííîì âàðèàíòå ïðè ïðîäàæå ó÷èòûâàåòñÿ äíåâíîå äâèæåíèå öåíû     
    
 //  if  (((Price_Cur-Price_00)/Point)>Delta2  && sell==0  && buy==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âðåìÿ ðàáîòû ñîâåòíèêà
     
  if  ((Delta-Ãðàíèöà_UP) > 0 &&((Price_Cur-Price_00)/Point)>Delta2  && sell==0  && buy==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âñå ñèãíàëû äëÿ îòêðûòèÿ ñäåëêè                
      {
       RefreshRates();
       OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,
       (Ask+Sl*Point)*ON_SL,
       (Bid-Profit*Point)*ON_TP,"",MS,0,Red);
      }
}                 
   
//========================================Òðåéëèòã ñòîï===============================================================
 
int i1,buy1,sell1;
int TradingStop()
{                
buy1=0;sell1=0;  
for(int  i1=0;i1<OrdersTotal();i1++)
                 {
                   OrderSelect(i1, SELECT_BY_POS, MODE_TRADES);
                   if(OrderType()==OP_BUY ){buy1=1;}
                   if(OrderType()==OP_SELL){sell1=1;}
                 }  
if(buy1==1)  
                 {                 
                   if(Bid - OrderOpenPrice() > Point*TrailingStep)
                     {
                       if(OrderStopLoss() < Bid - Point*TrailingStep)
                         {
                           OrderModify(OrderTicket(), OrderOpenPrice(), 
                                       Bid - Point*Sl_TS,
                                       OrderTakeProfit(), 0, Green);
                           return(0);
                         }
                     }
                 }
if(sell1==1)  
                 {                 
                   if((OrderOpenPrice() - Ask) > Point*TrailingStep)
                     {
                       if(OrderStopLoss() > Ask+Point*TrailingStep)
                       
                         {
                           OrderModify(OrderTicket(), OrderOpenPrice(), 
                                       Ask + Point*Sl_TS,
                                       OrderTakeProfit(), 0, Red);
                           return(0);
                         }
                     }
                 }
}






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