Teni_svechi_v1

Author: Vladislav Semenov
Orders Execution
Checks for the total of open ordersChecks for the total of closed ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategy
0 Views
0 Downloads
0 Favorites
Teni_svechi_v1
//+------------------------------------------------------------------+
// 05.09.2011
#property copyright "Vladislav Semenov"
//ðàçðàáîòàíî ïîä 5-çíà÷íóþ ñèñòåìó (äëÿ 4-õ çíà÷íîé ïîäåëèòü íà 10:TakeProfit,StopLoss,TrailingStop,shum,dopusk
//ïðîòåñòèðîâàíî íà eurusd H1 è M30 çà 2011ã., çà 2010ã. - ñëèâàåò
//Ñòîÿò ïàðàìåòðû íà Í1, äëÿ Ì30: shum=180, TrailingStop=150,min=5, îñòàëüíîå êàê äëÿ Í1
//-------------------------------------------------Âíåøíèå ïåðåìåííûå-------------------------------------------------
extern double Prots = 0.4; // Óðîâåíü ðèñêà
extern double TakeProfit = 2000; // Óðîâåíü ôèêñàöèè ïðèáûëè â ïèïñàõ,íå äîëæåí ñðàáàòûâàòü, ïðèáûëü ïî òðàëó
extern double StopLoss = 2000; // Óðîâåíü ôèêñàöèè óáûòêîâ â ïèïñàõ, íå äîëæåí ñðàáàòûâàòü, âûõîä ïî òðàëó
extern double TrailingStop = 30; //Ñêîëüçÿùèé òåéê-ïðîôèò, íîëü ÷òîáû îòêëþ÷èòü åãî
extern int bar_kol = 2; // Ñòîëüêî áàðîâ æèâåò ïîçèöèÿ
extern bool autoStopLoss = true;//íà ñëåä.áàðå TakeProfit áóäåò ðàâåí öåíå îòêðûòèÿ ñäåëêè (áåçóáûòîê)
extern bool MaxHistoryCheck=false;//Åñëè âêë.-èñïîëüçóåò âñþ èñòîðèþ, èíà÷å-òîëüêî ïîñëåäíèé îðäåð (âêëþ÷èòü,åñëè òîðãóåòå íå òîëüêî ïî ýòîìó ñîâåòíèêó)
extern int min = 7; // ïîçèöèÿ îòêðûâàåòñÿ â ïåðâûå õ ìèíóò,çà îñòàâøååñÿ âðåìÿ ïðåäïîëîãàåì, ÷òî áóäåò îòêàò
extern double shum = 150;// íà ýòó âåëè÷èíó â ïèïñàõ äîëæíà óéòè öåíà îò öåíû îòêðûòèÿ áàðà
extern double dopusk = 0; // äëèíà ïðîòèâîïîëîæíîé òåíè íå äîëæíà ïðåâûøàòü ýòî çíà÷åíèå
extern int open_hour = 0; //Ñ ýòîãî ÷àñà ðàçðåøåíî îòêðûâàòü ñäåëêè
extern int stop_hour = 24; //Ïîñëå ýòîãî ÷àñà çàïðåùàåòñÿ îòêðûâàòü ñäåëêè
extern int magic = 56565;
extern int Slip = 10;// Ìàêñèìàëüíî äîïóñòèìîå îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ (îðäåðîâ íà ïîêóïêó èëè ïðîäàæó)
//--------------------------------------------------------------------------------------------------------------------
int start() 
// 
  {
    int cnt,  total,i;
    total = OrdersTotal(); 
    
//Âêëþ÷åíèå/îòêëþ÷åíèå ïðîâåðêè âñåé èñòîðèè------------------------
if (MaxHistoryCheck==true) //Âêëþ÷åíà ïðîâåðêà âñåé èñòîðèè 
   { int k_history=0; } //ïðîâåðÿþòñÿ âñå ñäåëêè ñ ñàìîé ïåðâîé
   else k_history=(OrdersHistoryTotal());//ïðîâåðÿåòñÿ òîëüêî ïîñëåäíÿÿ ñäåëêà (óñêîðÿåò ïðîöåññ îïòèìèçàöèè è ðàáîòû ñîâåòíèêà)

// íàðàñòàþùèé ëîò
double Lots, Lotik;  
Lotik=MathFloor(AccountFreeMargin()*Prots/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP);// Ëîòû 
if (Lotik >= 5) Lots=5;
if (Lotik < 5) Lots = Lotik;

//-----------------------------------------------------------------------------------------
// Çàïðåò íà òîðãîâëþ,åñëè íà ýòîì áàðå áûëà îòêðûòà ñäåëêà
int op = 0; // ââîäèì ïåðåìåííóþ, îíà ðàâíà 1, åñëè áûëà îòêðûòà èëè çàêðûòà ïîçèöèÿ íà áàðå, èíà÷å 0
for(i = k_history; i <= OrdersHistoryTotal(); i++)
  { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
   if( iBarShift(NULL,NULL, OrderOpenTime() ) ==0  ) // 
   op=1;
  }

//--------------------------------------------------1)Îòêðûòèå ïîçèöèè íà ïîêóïêó-------------------------------------

if(total<1 && Hour()>=open_hour && Hour()<=stop_hour  && (TimeCurrent()-Time[0])<=min*60  ) // Íåò îòêðûòûõ îðäåðîâ+îãðàíè÷åíèå ïî âðåìåíè 
{
if (  op==0
      && High[0]<=(Open[0]+dopusk*Point)
      && (Open[0]-NormalizeDouble(Ask,Digits))>=shum*Point     
      )
  {  OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask,Digits), Slip, NormalizeDouble((Bid - StopLoss*Point),Digits), NormalizeDouble((Ask + TakeProfit*Point),Digits), "buy", magic, 0, Green);  
  }
//1á)Ïðîâåðêà íà âîçìîæíîñòü îòêðûòü êîðîòêóþ ïîçèöèþ 

if (  op==0
      && Low[0]>=(Open[0]-dopusk*Point)
      && (NormalizeDouble(Bid,Digits)-Open[0])>=shum*Point
      )
  { OrderSend(Symbol(), OP_SELL, Lots, NormalizeDouble(Bid,Digits), Slip, NormalizeDouble((Ask + StopLoss*Point),Digits), NormalizeDouble((Bid - TakeProfit*Point),Digits), "sell", magic, 0, Red);  }
return(0);
} 

//----------------------------------------------2)Çàêðûòèå ïîçèöèé ÷åðåç áàð íà áåçóáûòîê-----------------------------------------------      
for(cnt = 0; cnt < total; cnt++)
 { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderType() <= OP_SELL &&  OrderSymbol()==Symbol())  // ïðîâåðêà îòêðûòûõ ïîçèöèé      
   {
//2à)Çàêðûòèå íà áåçóáûòîê äëèííîé ïîçèöèè      
    if(OrderType() == OP_BUY)   // îòêðûòà äëèííàÿ ïîçèöèÿ
      {
       if  ( autoStopLoss == true
    && iBarShift(NULL,NULL, OrderOpenTime() ) ==1 
    && NormalizeDouble(Bid,Digits) >=OrderOpenPrice()
            )
         { OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), Slip, Violet); // çàêðûòèå ïîçèöèè
           return(0); }

         }
    else 
//2â)Çàêðûòèå íà áåçóáûòîê êîðîòêîé ïîçèöèè
       {
        if ( autoStopLoss == true
    && iBarShift(NULL,NULL, OrderOpenTime() ) ==1 
    && NormalizeDouble(Ask,Digits) <=OrderOpenPrice()
            ) 
         { OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slip, Violet); // çàêðûòèå ïîçèöèè
            return(0);  }
 }  }  }  


//---------------------------------------------------3)Çàêðûòèå ïîçèöèé -----------------------------------------------      
for(cnt = 0; cnt < total; cnt++)
 { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderType() <= OP_SELL &&  OrderSymbol()==Symbol())  // ïðîâåðêà îòêðûòûõ ïîçèöèé      
   {
//3à)Çàêðûòèå äëèííîé ïîçèöèè      
     if(OrderType() == OP_BUY)   // îòêðûòà äëèííàÿ ïîçèöèÿ
      {  if 
    ( 
     iBarShift(NULL,NULL, OrderOpenTime() ) >=bar_kol //óñëîâèå çàêðûòèÿ ïî âðåìåíè
    )
         { OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), Slip, Violet); // çàêðûòèå ïîçèöèè
           return(0); }
//3á)Òðåéëèíã-ñòîï íà äëèííîé ïîçèöèè
       if(TrailingStop > 0)  
           { if(NormalizeDouble((Bid - OrderOpenPrice()),Digits) > NormalizeDouble(Point*TrailingStop,Digits))
             { if(NormalizeDouble(OrderStopLoss(),Digits) < (NormalizeDouble((Bid - Point*TrailingStop ),Digits)) || (OrderStopLoss() == 0))
               { OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble((Bid-Point*TrailingStop),Digits), OrderTakeProfit(), 0, Green);
        return(0);  }  }  }
         }
    else 
//3â)Çàêðûòèå êîðîòêîé ïîçèöèè
       {  if 
    ( 
    iBarShift(NULL,NULL, OrderOpenTime() ) >=bar_kol //óñëîâèå çàêðûòèÿ ïî âðåìåíè
     )
         { OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slip, Violet); // çàêðûòèå ïîçèöèè
            return(0);  }
//3ã)Òðåéëèíã-ñòîï íà êîðîòêîé ïîçèöèè
      if(TrailingStop > 0)  
           { if((NormalizeDouble(OrderOpenPrice(),Digits) - NormalizeDouble(Ask,Digits)) > NormalizeDouble(Point*TrailingStop,Digits))
               { if((NormalizeDouble(OrderStopLoss(),Digits) > (NormalizeDouble(Ask,Digits) + NormalizeDouble(Point*TrailingStop,Digits))) || (OrderStopLoss() == 0))
                 { OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble((Ask + Point*TrailingStop),Digits), OrderTakeProfit(), 0,Red);
      return(0);  }  }  }
//----------------------------------------------------------------------------------------------------------------------

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