TTF_MW_expert

Author: Copyright � 2007, lukas1
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
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
TTF_MW_expert
//+------------------------------------------------------------------+
//|         Adviser working by some indicator
//|         Copyright 2007, Victor Lukashuk aka lukas1
//|              
//|         version 01    25.07.2007
//+------------------------------------------------------------------+
//
// Ýêñïåðò îòêðûâàåò è çàêðûâàåò ïîçèöèè ïî ïðîïèñàííîìó èíäèêàòîðó "TTF_MW.mq4"
// à ìîæåò è ïî äðóãîìó èíäèêàòîðó - ýòà âåðñèÿ äëÿ èíäèêàòîðîâ, ðèñóþùèõ òî÷êè
#property copyright "Copyright © 2007, lukas1"
#include <stdlib.mqh>         // áèáëèîòåêà îòîáðàæåíèÿ îøèáîê

extern int    Take_profit=120;
extern int    Stop_loss=40;
extern int    TrailingStep=95;           // øàã òðåéëèíãà
extern double TrailingStop=15;           // ñòîïû ïî òðåéëèíãó
// ïàðàìåòðû äëÿ 1 ÷àñîâîê äëÿ EURUSD
extern string indicator = "TTF_MW";
extern double    open_param1=80;
extern double    open_param2=18;
extern double    open_param3=27.1;
extern int    buffer_for_open_buy=0;
extern int    buffer_for_open_sell=1;

extern double    close_param4=78;
extern double    close_param5=54;
extern double    close_param6=4.6;
extern int    buffer_for_close_buy=0;
extern int    buffer_for_close_sell=0;

extern double    level_comparity=0.5;

extern double Lots  =0.1;
extern int    MAGIC=111222;
int    digits;     // êîëè÷åñòâî çíàêîâ äëÿ ðàáîòû ñ äàííîé âàë. ïàðîé
int    stoplevel;     // ìèíèìàëüíûé îòñòóï óñòàíîâêè ñòîïîâûõ îðäåðîâ
int    spred;  
double f1=0.01;
double s1=0.01;
int Buy=0;
int Sell=0;
double b=1;
int    cnt=0;
double PROF=0;
double STOP=0;
int    ticket,st,pr;  
//+------------------------------------------------------------------+
//|  
//------------------------------------------------------------------------------------------------------------- 
int start() 
  { 
   // â ñàìîì íà÷àëå 20 ðàç ïðîâåðÿåì ÷òî òîðãîâëÿ ðàçðåøåíà
    if (!IsTradeAllowed())  return(0);
    Buy=0;Sell=0;
    f1 =  iCustom(NULL,0,indicator,close_param4,close_param5,close_param6,buffer_for_close_buy, 1);
    s1 =  iCustom(NULL,0,indicator,close_param4,close_param5,close_param6,buffer_for_close_sell, 1);
    if (f1>level_comparity) {Buy=1; }
    if (s1>level_comparity) {Sell=1;}
//Comment (" f1=  ",f1, " s1=  ",s1, " b=  ",b) ;  

if(b<Bars)
  {
// çàêðûâàåì îòêðûòûå ïîçèöèè äëÿ ÁÀÉ
for(cnt=OrdersTotal();cnt>=0;cnt--)
   {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if ( OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC )  
         if(OrderType()==OP_BUY)   
           {// åñëè ÑÅËË äëèííóþ ïîçèöèþ çàêðûòü 
            if((Sell==1)&&(b<Bars))
              {OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);  // close position
               s1=0.01;
               return(0);
              }
            // check for trailing stop for BUY
            if(TrailingStop>0) // åñëè ïàðàìåòð TrailingStop çàäàí è áîëüøå 0 
              {                 
               if(OrderOpenPrice()<(Bid-Point*TrailingStep)) 
                 {
                  if(OrderStopLoss()<(Bid-Point*(TrailingStop+TrailingStep+1))) 
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,DodgerBlue);
                     // òî ïåðåíîñèì ñòîï óðîâåíü îðäåðà íà óðîâåíü Bid-Point*TrailingStop                    
                     return(0);
    }      }  }  }  }
// çàêðûâàåì îòêðûòûå ïîçèöèè äëÿ ÑÅËË
for(cnt=OrdersTotal();cnt>=0;cnt--)
   {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if ( OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC)  
         if(OrderType()==OP_SELL)   
           {// åñëè ÁÀÉ êîðîòêóþ ïîçèöèþ çàêðûòü 
            if ((Buy==1)&&(b<Bars))
              {OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);    // close position
               f1=0.01;
               return(0);
              }
            // check for trailing stop for SELL
            if(TrailingStop>0)  
              {                 
               if(OrderOpenPrice()>(Ask+Point*TrailingStep))
                 {
                  if((OrderStopLoss()>(Ask+Point*(TrailingStop+TrailingStep+1))))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Coral);
                     return(0);
    }      }  }  }  }
    Buy=0;Sell=0;
    f1 =  iCustom(NULL,0,indicator,open_param1,open_param2,open_param3,buffer_for_open_buy, 1);
    s1 =  iCustom(NULL,0,indicator,open_param1,open_param2,open_param3,buffer_for_open_sell, 1);
    if (f1>level_comparity) {Buy=1; }
    if (s1>level_comparity) {Sell=1;}
//Comment (" f1=  ",f1, " s1=  ",s1, " b=  ",b) ;  

// îòêðûâàåì íîâûå îðäåðà ÑÅËË
if (OrdersTotal()<1)
    if((Sell==1)&&(b<Bars))
              {b=Bars;
               // ðàñ÷åò ñòîïîâûõ îðäåðîâ
               PROF=0; STOP=0;
               if(Stop_loss>0)
                  {if(Stop_loss-spred<=stoplevel)   st=stoplevel; else st=Stop_loss-spred;
                   STOP=NormalizeDouble(Ask+st*Point,digits);     
                  }
               if(Take_profit>0)
                  {pr=Take_profit+spred;   //ðàñ÷åò TP îò Ask
                   PROF=NormalizeDouble(Ask-pr*Point,digits);
                  }
               ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,
                                 NormalizeDouble(STOP,digits),    // SL
                                 NormalizeDouble(PROF,digits),    // TP
                                 "sell_",MAGIC,0,Red);
               if(ticket<1) 
                  {Print("Oøèáêà ",ErrorDescription(GetLastError())); 
                   return(0); 
                  }
               else s1=0.01;
               return(0); // exit
              }

// îòêðûâàåì íîâûå îðäåðà ÁÀÉ
if (OrdersTotal()<1)
    if((Buy==1)&&(b<Bars))
              {b=Bars;
               // ðàñ÷åò ñòîïîâûõ îðäåðîâ
               PROF=0; STOP=0;
               stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
               spred    =MarketInfo(Symbol(),MODE_SPREAD);
               digits   =MarketInfo(Symbol(),MODE_DIGITS);        
               if (Stop_loss>0)
                  {if(Stop_loss-spred<=stoplevel)   st=stoplevel; else st=Stop_loss-spred;     
                   STOP=NormalizeDouble(Bid-st*Point,digits);
                  }
               if(Take_profit>0)
                  {pr=Take_profit+spred;   //ðàñ÷åò TP îò Bid
                   PROF=NormalizeDouble(Bid+pr*Point,digits);
                  }               
               ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,
                                 NormalizeDouble(STOP,digits),   // SL
                                 NormalizeDouble(PROF,digits),   // TP
                                 "buy_",MAGIC,0,Blue);
               if(ticket<1) 
                  {Print("Oøèáêà ",ErrorDescription(GetLastError())); 
                   return(0); 
                  }
               else f1=0.01;
               return(0); // exit
              }
   if(AccountFreeMargin()<(300*Lots)) // Ïðîâåðêà íàëè÷èÿ ñâîáîäíûõ ñðåäñòâ äëÿ òîðãîâëè
      {Alert("Ìû íå èìååì äåíåã. Free Margin = ", AccountFreeMargin()); /*ÿ çàìåíèë ôóíêöèþ Print 
       âûâîäÿùóþ ñîîáùåíèÿ â ôàéë îò÷¸òà, êîòîðûé íåïîíÿòíî ãäå ñìîòðåòü íà ôóíêöèþ Alert*/
       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 ---