Navigation:Home > Content >

FrBestExp02_2_maloma_mod.mq4

Time: 2010-04-03 | Download file:FrBestExp02_2_maloma_mod.mq4

//+------------------------------------------------------------------+
//|                                                FrBestExp02_2.mq4 |
//|                                                                  |
//|                                        _2 а тут используем Pivot |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
extern double  Lots = 1.00;
extern int     Stop_Loss = 1000;
extern int     Take_Profit = 1000;
extern int     Trailing_Stop = 0;

//    Only for M15
extern int Vlim=50;
extern int fper=12,sper=26,sigper=9;// периоды индикатора OsMA
extern int stop=300;// Уровень отсечки профита
extern int  hedg=1;// флаг разрешения хеджа
extern double  kh=10;// коэфф.хеджирования
extern int lok;// флаг разрешения локирования позиции
extern int rpr=1;// флаг определения просадки позы или по всему тесту
extern int ttime=900;// Задержка выставления хедж-ордера на 1 свечу
extern int hstop=-3000;// стоп-лосс для хеджа


int cnt;// индекс цикла
int sigs,sigb;// суммирующий сигнал на проведение операции купли-продажи

double ssig,bsig;// сигналы на куплю-продажу от индикатора фракталов
double  osmanul,osmaone;// сигналы индикатора OsMA от нулевого и первого баров
int s,b;// количество активных сэлл и бай ордеров
int hml;// флаг закрытия позиции с минусовым профитом (закрывается позиция с меньшим лотом
int pl;// флаг закрытия всех позиций по условию наличия установленного положительного профита
double summa;// суммарный профит по всем позициям
double mlot;// величина торгуемого лота
double ssum,bsum;// профит по ордерам сэлл и бай раздельно
double pr;// величинга просадки
int hblok,shblok,bhblok;// флаг блокирования выставления хедж-ордера и флаги повторного запуска хедж-процедуры
double DHMax,DLMin;
bool ft=true;
int rang;
double pt;
int nul;// переменные для вычисления поворотной точки при запуске и в 00.00 каждых суток
int LastTradeTime;
//---------------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
double FractalBest(int Dir)
 {
  double up,dw;
  
   if(High[3]>High[4] && High[3]>High[5] && High[3]>High[2] && High[3]>High[1]){ 
      up=Low[0]-3*Point;
   }
   else{
      up=0;
   }
   if(Low[3]0 && hedg==1){ 
      for(cnt=0;cnt0){ 
               if(Bid-OrderOpenPrice()>Point*Trailing_Stop){ 
                  if(OrderStopLoss()Point*Trailing_Stop){ 
                  if(OrderStopLoss()>Ask+Point*Trailing_Stop){ 
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing_Stop,OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
            }
      }
   }
//---------------------------------------------------Выставление хедж-ордера--------------------------------------
   if(hblok==1){
      shblok=0;bhblok=0;
      for(cnt=0;cnt=150 || bsum<-300){ 
         OrderSend(Symbol(),OP_SELL,kh*mlot,Bid,5,Bid+Stop_Loss*Point,Bid-Take_Profit*Point,NULL,0,0,Aqua);
         //SetArrow(Time[0],H+5*Point,159,Aqua);
         hblok=1;
         return(0);
      }
      if(bsum>=150 || ssum<-300){
         OrderSend(Symbol(),OP_BUY,kh*mlot,Ask,5,Ask-Stop_Loss*Point,Ask+Take_Profit*Point,NULL,0,0,Red);
         //SetArrow(Time[0],L-5*Point,159,Red);
         hblok=1;
         return(0);
      }
   }
//------------------------------------------Вычисление просадки в процессе торгов------------------------------
   if(s+b==0 && rpr==0)pr=0;
   if(pr>summa && summa<0)pr=MathRound(summa);
//-----------------------------------Определение основного сигнала и сигналов индикаторов------------------------

//   bsig=iCustom(NULL,0,"FractalBest",0,0);
//   ssig=iCustom(NULL,0,"FractalBest",1,0);
   bsig=FractalBest(0);
   ssig=FractalBest(1);
   osmanul=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,0);
   osmaone=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,1);

Print (pt);

   if(ssig>1 && Volume[1]>Vlim && Volume[1]>Volume[2] && osmaone>osmanul && osmaone<=0 && osmanul<0 && Close[0]>pt){
      sigs=1;
   }
   else{
      sigs=0;
   }
   if(bsig>1 && Volume[1]>Vlim && Volume[1]>Volume[2] && osmaone=0 && osmanul>0 && Close[0]

Recommend