← К каталогу
Исходный код · ID 347

mouteki ea 0.4 modifie16-11-2006-23-46.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Получить полный код

Поиск по коду файла

extern int ExpertID = 20050610;
extern string nameEA       = "Mouteki";

extern bool    AlertsOn=True;
extern bool    MultiPositions=False;
extern int     ProfitToMoveSL=40;
extern int     PositiveSL=10;
extern int     SL_Offset=0;
extern int     TP_Offset=0;

int         spread;
bool        TD=False;/*Default is False. True setting draws up and down arrows instead of dots on TD Points creating more clutter.*/ 
int         BackSteps=0;/*Used to be extern int now just int. Leave at 0*/
int         ShowingSteps=1;/*Used to be extern int now just int.  Leave at 1*/
bool        FractalAsTD=False;/*Used to be extern bool now just bool.  Leave at False, otherwise Trend Lines based on Fractal Points not TD Points*/

double      TrendLineBreakUp=-1;//Line added.
double      TrendLineBreakUpPrev=-1;//Line added.
double      TrendLineBreakUpPrev1=-1;//Line added.
bool        TrendLineBreakUpFlag=False;//Line added.
double      TrendLineBreakDown=-1;//Line added.
double      TrendLineBreakDownPrev=-1;//Line added.
double      TrendLineBreakDownPrev1=-1;//Line added.
bool        TrendLineBreakDownFlag=False;//Line added.
bool        BothTLBroken=False;

double highs[100000];
double lows[100000];

extern bool      Comments=true;/*Optional Comments.  Default is false. Orginal variable called "Commen"*/
extern bool      TrendLine=True;/*Default is true to draw current TD Lines*/
extern int       TrendLineStyle=STYLE_SOLID;/*STYLE>_SOLID=0,DASH=1,_DOT=2,_DASHDOT=3,_DASHDDOTDOT=4. Line of code added from original.*/
extern int       TrendLineWidth=1;/*Thinnest or allow dots and dashes = 0 or 1, Thinner=2, Medium=3,Thicker=4,Thickest=5.  Line of code added from original.*/
extern color     UpperTrendLineColour=LimeGreen;/*Line of code added from original.*/
extern color     LowerTrendLineColour=Red;/*Line of code added from original.*/
extern bool      ProjectionLines=True;/*Default is True.  These are the TD Price Projections. Original variable called "Take Prof"*/
extern int       ProjectionLinesStyle=STYLE_DOT;/*STYLE>_SOLID=0,DASH=1,_DOT=2,_DASHDOT=3,_DASHDDOTDOT=4. Line of code added from original.*/
extern int       ProjectionLinesWidth=1;/*Thinnest or allow dots and dashes = 0 or 1, Thinner=2, Medium=3,Thicker=4,Thickest=5.  Line of code added from original.*/
extern color     UpperProjectionLineColour=LimeGreen;/*Line of code added from original.*/
extern color     LowerProjectionLineColour=Red;/*Line of code added from original.*/
extern bool      HorizontLine=true;/*Default is false.  It seems the Horizontal Lines are were the code predicts price may cross TD line.*/
string Comm="";

extern double  Lots              = 0.1;
extern double  MaximumRisk       = 0.02;
extern double  DecreaseFactor    = 3;

bool isBuying = false;
bool isSelling = false;
bool isClosing = false;

int init()
   {
      // код доступен только после оплаты
   }

int deinit()
   {

      for (int i=1;i<=10;i++)
         {
            ObjectDelete("HHL_"+i);ObjectDelete("HL_"+i);
            ObjectDelete("HLL_"+i);ObjectDelete("LL_"+i);
            ObjectDelete("HC1_"+i);
            ObjectDelete("HC2_"+i);
            ObjectDelete("HC3_"+i);
            ObjectDelete("LC1_"+i);
            ObjectDelete("LC2_"+i);
            ObjectDelete("LC3_"+i);
         }
      Comment("");     

   return(0);
  }

double LotsOptimized()
   {
      double lot=Lots;
      int    orders=HistoryTotal();     // Historique des ordres
      int    losses=0;                  // Nombre de trade perdants cons?cutif
/* Selection de la taille du lot */
      lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000,1);
/* Calcul du nombre de perte consecutive */
      if(DecreaseFactor>0)
         {
            for(int i=orders-1;i>=0;i--)
               {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==False) { Print("Erreur dans l historique!"); break; }
                  if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;

                  if(OrderProfit()>0) break;
                  if(OrderProfit()<0) losses++;
               }
            if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
         }
/* Retour de la taille du lot */
      if(lot<0.1) lot=0.1;
      return(lot);
   }

/* Recherche des Hauts et des Bas dans le graph */
int SetTDPoint(int B)
   {
      int shift;
      if (FractalAsTD==False)
         {
            for (shift=B;shift>2;shift--)
               {       

/* Si le Haut de la barre de gauche et egale au Haut de la barre courante, le Haut de la barre courante est un Haut valide */
                  if (High[shift+2]<=High[shift] && High[shift+1]<=High[shift] && 
                  High[shift-1]<High[shift]  && High[shift-2]<High[shift])
                     highs[shift]=High[shift];

/* Si le Bas de la barre de gauche et egale au Bas de la barre courante, le Bas de la barre courante est un Bas valide */
                  if (Low[shift+2]>=Low[shift] && Low[shift+1]>=Low[shift] && 
                  Low[shift-1]>Low[shift]  && Low[shift-2]>Low[shift])
                     lows[shift]=Low[shift];

               }  
            highs[0]=0;
            lows[0]=0;
            highs[1]=0;
            lows[1]=0;
         }
      else
         {
            for (shift=B;shift>3;shift--)
               {
                  if (High[shift+1]<=High[shift] && High[shift-1]<High[shift] &&
                  High[shift+2]<=High[shift] && High[shift-2]<High[shift])
                     highs[shift]=High[shift];
                  else 
                     highs[shift]=0;    
                  if (Low[shift+1]>=Low[shift] && Low[shift-1]>Low[shift] && 
                  Low[shift+2]>=Low[shift] && Low[shift-2]>Low[shift])
                     lows[shift]=Low[shift];
                  else 
                     lows[shift]=0;    
               }  
            highs[0]=0;
            lows[0]=0;
            highs[1]=0;
            lows[1]=0;
            highs[2]=0;
            lows[2]=0;    
         }  
      return(0);
   }

/* Sommet Haut 1 */
int GetHighTD(int P)
   {
      int i=0,j=0;
      while (j<P)
         {
            i++;
            while(highs[i]==0)
               {
                  i++;if(i>Bars-2)return(-1);
               }
            j++;
         }   
      return (i);         
   }
/* Sommet Haut 2 */
int GetNextHighTD(int P)
   { 
      int i=P+1;
      while(lows[i]<=High[P])
         {
            i++;if(i>Bars-2)return(-1);
         }
      return (i);
   }
/* Sommet Bas 1 */
int GetLowTD(int P)
   {
      int i=0,j=0;
      while (j<P)
         {
            i++;
            while(lows[i]==0)
               {
                  i++;if(i>Bars-2)return(-1);
               }
            j++;
         }   
      return (i); 
   }
/* Sommet Bas 2 */
int GetNextLowTD(int P)
   {
      int i=P+1;
      while(lows[i]>=Low[P] || lows[i]==0)
         {
            i++;if(i>Bars-2)return(-1);
         }
      return (i);
   }

int TrendLineHighTD(int H1,int H2,int Step,int Col)
   {
      ObjectSet("HL_"+Step,OBJPROP_TIME1,Time[H2]);
      ObjectSet("HL_"+Step,OBJPROP_TIME2,Time[H1]);
      ObjectSet("HL_"+Step,OBJPROP_PRICE1,High[H2]);
      ObjectSet("HL_"+Step,OBJPROP_PRICE2,High[H1]);
      ObjectSet("HL_"+Step,OBJPROP_COLOR,UpperTrendLineColour);/*TEMP Original OBJPROP_COLOR,Col*/
      if (Step==1)
         ObjectSet("HL_"+Step,OBJPROP_WIDTH,TrendLineWidth);/*Original OBJPROP_WIDTH,2*/
      else 
         ObjectSet("HL_"+Step,OBJPROP_WIDTH,1);
      return(0);
   }   

int TrendLineLowTD(int L1,int L2,int Step,int Col)/*Draw Lower Trend Line*/
   {
      ObjectSet("LL_"+Step,OBJPROP_TIME1,Time[L2]);
      ObjectSet("LL_"+Step,OBJPROP_TIME2,Time[L1]);
      ObjectSet("LL_"+Step,OBJPROP_PRICE1,Low[L2]);
      ObjectSet("LL_"+Step,OBJPROP_PRICE2,Low[L1]);
      ObjectSet("LL_"+Step,OBJPROP_COLOR,LowerTrendLineColour);/*TEMP Original OBJPROP_COLOR,Col*/
      if (Step==1)
         ObjectSet("LL_"+Step,OBJPROP_WIDTH,TrendLineWidth);/*Original OBJPROP_WIDTH,2*/
      else 
         ObjectSet("LL_"+Step,OBJPROP_WIDTH,1);      
      return(0);
   }

string TakeProfitHighTD(int H1,int H2,int Step,int Col)/*Draw Buy TD Price Projection(s)*/
   {
      int i,ii,j=0;
      string Comm="";
      double kH,HC1,HC2,HC3,k,St;
      kH=(High[H2]-High[H1])/(H2-H1);
      while (NormalizeDouble(Point,j)==0)j++; 
         k=0;
         for(i=H1;i>0;i--)
            if(Close[i]>High[H2]-kH*(H2-i)){k=High[H2]-kH*(H2-i);
               break;}
            if (k>0)
               { 
                  Comm=Comm+"UTD_Line ("+DoubleToStr(High[H2]-kH*H2,j)+") broken at "+DoubleToStr(k,j)+", uptargets:\n";
                  ii=Lowest(NULL,0,MODE_LOW,H2-i,i);    
                  HC1=High[H2]-kH*(H2-ii)-Low[ii];
                  HC2=High[H2]-kH*(H2-ii)-Close[ii];
                  ii=Lowest(NULL,0,MODE_CLOSE,H2-i,i);
                  HC3=High[H2]-kH*(H2-ii)-Close[ii];
                  St=TrendLineStyle;/*Original STYLE_SOLID*/ 
               } 
            else
               {
                  k=High[H2]-kH*H2;
                  Comm=Comm+"UTD_Line ("+DoubleToStr(k,j)+"), probable break-up targets:\n";  
                  ii=Lowest(NULL,0,MODE_LOW,H2,0);    
                  HC1=High[H2]-kH*(H2-ii)-Low[ii];
                  HC2=High[H2]-kH*(H2-ii)-Close[ii];
                  ii=Lowest(NULL,0,MODE_CLOSE,H2,0);
                  HC3=High[H2]-kH*(H2-ii)-Close[ii];
                  St=TrendLineStyle;/*Original STYLE_DASHDOT*/ 
               }
            ObjectSet("HL_"+Step,OBJPROP_STYLE,St);  
            Comm=Comm+"T1="+DoubleToStr(HC1+k,j)+" ("+DoubleToStr(HC1/Point,0)+"pts.)\n";//changed "pts.)" to "pts.)\n"
            ObjectSet("HC1_"+Step,OBJPROP_TIME1,Time[H1]);ObjectSet("HC1_"+Step,OBJPROP_TIME2,Time[0]);
            ObjectSet("HC1_"+Step,OBJPROP_PRICE1,HC1+k);ObjectSet("HC1_"+Step,OBJPROP_PRICE2,HC1+k);
            ObjectSet("HC1_"+Step,OBJPROP_COLOR,Col);ObjectSet("HC1_"+Step,OBJPROP_STYLE,St);      
            if (Step==1)
               {
                  ObjectSet("HC1_"+Step,OBJPROP_WIDTH,ProjectionLinesWidth);/*Original OBJPROP_WIDTH,2*/
                  ObjectSet("HC1_"+Step,OBJPROP_STYLE,ProjectionLinesStyle);/*This Line of code added from original. TD Upper Projection Line Style*/
               } 
            else
               {
                  ObjectSet("HC1_"+Step,OBJPROP_WIDTH,2);
               }
            return(Comm); 
   }

string TakeProfitLowTD(int L1,int L2,int Step,int Col)/*Draw Sell TD Price Projection(s)*/
   {
      int i,ii,j=0;
      string Comm="";
      double kL,LC1,LC2,LC3,k,St;
      kL=(Low[L1]-Low[L2])/(L2-L1);
      while (NormalizeDouble(Point,j)==0)j++; 
         k=0;
         for(i=L1;i>0;i--)
            if(Close[i]<Low[L2]+kL*(L2-i))
               {k=Low[L2]+kL*(L2-i);
               break;}
            if (k>0)
               {
                  Comm=Comm+"LTD_Line ("+DoubleToStr(Low[L2]+kL*L2,j)+") broken at "+DoubleToStr(k,j)+", downtargets:\n";
                  ii=Highest(NULL,0,MODE_HIGH,L2-i,i);    
                  LC1=High[ii]-(Low[L2]+kL*(L2-ii));
                  LC2=Close[ii]-(Low[L2]+kL*(L2-ii));
                  i=Highest(NULL,0,MODE_CLOSE,L2-i,i);
                  LC3=Close[ii]-(Low[L2]+kL*(L2-ii));
                  St=TrendLineStyle;/*Original STYLE_SOLID*/ 
               } 
            else
               {
                  k=Low[L2]+kL*L2;
                  Comm=Comm+"LTD_Line ("+DoubleToStr(k,j)+"), probable downbreak targets:\n";        
                  ii=Highest(NULL,0,MODE_HIGH,L2,0);    
                  LC1=High[ii]-(Low[L2]+kL*(L2-ii));
                  LC2=Close[ii]-(Low[L2]+kL*(L2-ii));
                  ii=Highest(NULL,0,MODE_CLOSE,L2,0);
                  LC3=Close[ii]-(Low[L2]+kL*(L2-ii));
                  St=TrendLineStyle;/*Original STYLE_DASHDOT*/ 
               }
            ObjectSet("LL_"+Step,OBJPROP_STYLE,St);   
            Comm=Comm+"T1="+DoubleToStr(k-LC1,j)+" ("+DoubleToStr(LC1/Point,0)+"pts.)\n";//changed "pts.)" to "pts.)\n"
            ObjectSet("LC1_"+Step,OBJPROP_TIME1,Time[L1]);ObjectSet("LC1_"+Step,OBJPROP_TIME2,Time[0]);
            ObjectSet("LC1_"+Step,OBJPROP_PRICE1,k-LC1);ObjectSet("LC1_"+Step,OBJPROP_PRICE2,k-LC1);
            ObjectSet("LC1_"+Step,OBJPROP_COLOR,Col);ObjectSet("LC1_"+Step,OBJPROP_STYLE,St);      
            if (Step==1)
               {
                  ObjectSet("LC1_"+Step,OBJPROP_WIDTH,ProjectionLinesWidth);/*Original OBJPROP_WIDTH,2*/
                  ObjectSet("LC1_"+Step,OBJPROP_STYLE,ProjectionLinesStyle);/*This Line of code added from original. TD Lower Projection Line Style*/
               } 
            else
               {
                  ObjectSet("LC1_"+Step,OBJPROP_WIDTH,2);
               }
            return(Comm);
   }

string TDMain(int Step)
   {
      int H1,H2,L1,L2;

      int i,j; while (NormalizeDouble(Point,j)==0)j++;
      double Style;
      double Col[20];Col[0]=UpperProjectionLineColour/*Original Col[0]=Red, Colour for Current Upper TD Projection*/;Col[2]=Magenta;Col[4]=Chocolate;Col[6]=Goldenrod;Col[8]=SlateBlue;
                Col[1]=LowerProjectionLineColour/*Original Col[1]=Blue, Colour for Current Lower TD Projection*/;Col[3]=FireBrick;Col[5]=Green;Col[7]=MediumOrchid;Col[9]=CornflowerBlue;
                Col[10]=Red;Col[12]=Magenta;Col[14]=Chocolate;Col[16]=Goldenrod;Col[18]=SlateBlue;
                Col[11]=Blue;Col[13]=FireBrick;Col[15]=Green;Col[17]=MediumOrchid;Col[19]=CornflowerBlue;
      Step=Step+BackSteps;  
      H1=GetHighTD(Step);
      H2=GetNextHighTD(H1);
      L1=GetLowTD(Step);
      L2=GetNextLowTD(L1);
      TrendLineBreakUp=High[H2]-(High[H2]-High[H1])/(H2-H1)*H2;//added line
      TrendLineBreakDown=Low[L2]+(Low[L1]-Low[L2])/(L2-L1)*L2;//added line
      if (H1<0)
         Comm=Comm+"UTD no TD up-point \n";
      else 
      if (H2<0)
         Comm=Comm+"UTD no TD point-upper then last one ("+DoubleToStr(High[H1],j)+")\n";
      else 
         Comm=Comm+"UTD "+DoubleToStr(High[H2],j)+"  "+DoubleToStr(High[H1],j)+"\n"; 
      if (L1<0)
         Comm=Comm+"LTD no TD down-point \n";
      else 
      if (L2<0)
         Comm=Comm+"LTD no TD point-lower then last one ("+DoubleToStr(Low[L1],j)+")\n";   
      else 
         Comm=Comm+"LTD  "+DoubleToStr(Low[L2],j)+"  "+DoubleToStr(Low[L1],j)+"\n";

      if (Step==1)
         Style=STYLE_SOLID;
      else 
         Style=STYLE_DOT;
      if (H1>0 && H2>0)
         {
            if (TrendLine==1)
               {
                  ObjectCreate("HL_"+Step,OBJ_TREND,0,0,0,0,0);
                  TrendLineHighTD(H1,H2,Step,Col[Step*2-2]);
               } 
            else 
               ObjectDelete("HL_"+Step);
            if (HorizontLine==1 && Step==1)
               {
                  ObjectCreate("HHL_"+Step,OBJ_HLINE,0,0,0,0,0);
                  ObjectSet("HHL_"+Step,OBJPROP_BACK,True);//Line added
               } 
            else 
               ObjectDelete("HHL_"+Step);
            if (ProjectionLines==1)
     

Показано первые 50% кода (символов: 19999)

Что вы получите после оплаты

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
2 000₽