isnotme 发表于 2016-9-19 09:18:48

1111111111111111111

729438505 发表于 2016-9-25 00:10:25

{:132_147:}

yhyfc520 发表于 2016-9-26 15:42:59

你这是天天传EA啊

langle 发表于 2016-9-26 15:45:22

sdfgsdfgsergswertgwert

1tianshuang1 发表于 2016-9-26 16:35:01

学习学习

halinxj 发表于 2016-9-26 17:45:17

kkkkkkkkkkkkkkkkkk

张波 发表于 2016-9-26 17:55:26

dreetyutuyi

lum0543 发表于 2016-9-26 21:15:02

//==========================================================================================================================
//                         顶级趋势V1.0 坐石观云清修改
//==========================================================================================================================

#include <stdlib.mqh>      


extern stringMain    = "==== Main SETTINGS ====";

extern bool EA_Goiler             = true;
extern bool Line_on_Chart         = true;
extern bool EA_Diver            = true;
extern double MaxRiskPercent      = 0.7;
extern double MaxLotSize          = 5;   
extern double DecreaseFactor      = 135;
extern double Lots                = 0.01;
//extern int    StopLoss            = 500;
extern int    TakeProfit          = 800;
extern int    Trall               = 700;
extern double TrallKoef         = 2.2;
int    NumberOfTry               = 5;   
int    PauseAfterError         = 2;   
int    Slippage                  = 10;   
color      clOpenBuy             = Aqua;
color      clOpenSell            = Red;


//==========================================================================================================================
extern stringGoiler                   = "==== Goiler SETTINGS====";
extern int    Start_Goiler            = 00;   
//extern int    Start_Trade_Buy         = 00;      
//extern int    Start_Trade_Sell      = 00;      
extern int    MAGICGO1                  = 11;      
extern int    MAGICGO2                  = 22;      
extern int koef1Buy_up                   = 251;      
extern int koef2Buy_up                   = 541;      
extern int koef3Buy_up                   = 365;      
extern int koef1Sell_up                  = 441;      
extern int koef2Sell_up                  = 389;      
extern int koef3Sell_up                  = 369;      



//==========================================================================================================================
//----variables for indicator Diver
extern stringDiver                  = "==== Diver SETTINGS ====";

extern int    fastEMAbuy                   = 10;
extern int    slowEMAbuy                   = 53;
extern int    signalSMAbuy               = 5;
extern int    fastEMAsell                  = 46;
extern int    slowEMAsell                  = 83;
extern int    signalSMAsell                = 17;
extern int    TF                        = 15;      
extern int    MAGICDI1                  = 33;      
extern int    MAGICDI2                  = 44;      

double DiverBuy= 0;
double DiverSell = 0;



//----variables from Goiler


staticdouble   EntryBuy;
staticdouble   TP1Buy;
staticdouble   TP2Buy;
staticdouble   SLBuy;
staticdouble   TPBuy;

staticdouble   EntrySell;
staticdouble   TP1Sell;
staticdouble   TP2Sell;
staticdouble   SLSell;
staticdouble   TPSell;

int koef1Orig         = 180;      
int koef2Orig         = 225;      
int koef3Orig         = 360;
   
double NewEntryOrig   ;
double NewEntry2Orig;            
double NewTP1Orig   ;               
double NewTP2Orig   ;               
double NewSLOrig      ;

double NewEntryBuy    ;
double NewEntry2Buy   ;               
double NewTP1Buy      ;               
double NewTP2Buy      ;               
double NewSLBuy       ;
         
double NewEntrySell   ;
double NewEntry2Sell;               
double NewTP1Sell   ;               
double NewTP2Sell   ;               
double NewSLSell      ;

string   SymbolString;

static datetime prevtime_GO    ;
static datetime prevtimebuy_Di    ;
static datetime prevtimesell_Di   ;
   
static datetime prevtimetrallbuy;   
static datetime prevtimetrallsell ;   

double min    = 0.01;
double max    = 5;
double OrdLot = 0.01;

int      width=2;
int      style=1;




//+------------------------------------------------------------------+
//| Check forindicator                            |
//+------------------------------------------------------------------+
void Goiler()
{
    if (Time<=prevtime_GO+60*60) return;
    prevtime_GO=Time;
   
   
   
   
    NewEntryOrig               = iCustom(NULL,0,"顶级趋势V3",koef1Orig,koef2Orig,koef3Orig,0,0);
    //NewEntry2Orig            = iCustom(NULL,0,"顶级趋势V3",koef1Orig,koef2Orig,koef3Orig,1,0);
    NewTP1Orig               = iCustom(NULL,0,"顶级趋势V3",koef1Orig,koef2Orig,koef3Orig,2,0);
    NewTP2Orig               = iCustom(NULL,0,"顶级趋势V3",koef1Orig,koef2Orig,koef3Orig,3,0);   
    NewSLOrig                  = iCustom(NULL,0,"顶级趋势V3",koef1Orig,koef2Orig,koef3Orig,4,0);

    NewEntryBuy               = iCustom(NULL,0,"顶级趋势V3",koef1Buy_up,koef2Buy_up,koef3Buy_up,0,0);
    //NewEntry2Buy            = iCustom(NULL,0,"顶级趋势V3",koef1Buy_up,koef2Buy_up,koef3Buy_up,1,0);
    NewTP1Buy               = iCustom(NULL,0,"顶级趋势V3",koef1Buy_up,koef2Buy_up,koef3Buy_up,2,0);
    NewTP2Buy               = iCustom(NULL,0,"顶级趋势V3",koef1Buy_up,koef2Buy_up,koef3Buy_up,3,0);   
    NewSLBuy                  = iCustom(NULL,0,"顶级趋势V3",koef1Buy_up,koef2Buy_up,koef3Buy_up,4,0);
            
    NewEntrySell               = iCustom(NULL,0,"顶级趋势V3",koef1Sell_up,koef2Sell_up,koef3Sell_up,0,0);
    //NewEntry2Sell            = iCustom(NULL,0,"顶级趋势V3",koef1Sell_up,koef2Sell_up,koef3Sell_up,1,0);
    NewTP1Sell               = iCustom(NULL,0,"顶级趋势V3",koef1Sell_up,koef2Sell_up,koef3Sell_up,2,0);
    NewTP2Sell               = iCustom(NULL,0,"顶级趋势V3",koef1Sell_up,koef2Sell_up,koef3Sell_up,3,0);   
    NewSLSell                  = iCustom(NULL,0,"顶级趋势V3",koef1Sell_up,koef2Sell_up,koef3Sell_up,4,0);
            
            
            
             if (NewEntryBuy>0.0 && (NewTP1Buy>NewEntryBuy && NewTP1Orig>NewEntryOrig))
            {

                   EntryBuy=NewEntryBuy;
                   TP1Buy=NewTP1Buy;
                   TP2Buy=NewTP2Buy;
                   SLBuy=NewSLBuy;
                  
               if (Line_on_Chart)
                  {
                   PlotLine("怩钿拎閇"+NewEntryBuy+"]",NewEntryBuy,Gold, TimeCurrent(), TimeCurrent()+20*3600) ;
                   //PlotLine("漕徉怅郲"+shift+"]",Entry2,Orange);
                   PlotLine("蝈殛拎閇"+NewTP1Buy+"]",NewTP1Buy,Lime, TimeCurrent(), TimeCurrent()+20*3600);
                   PlotLine("蝈殛_2拎閇"+NewTP2Buy+"]",NewTP2Buy,DodgerBlue, TimeCurrent(), TimeCurrent()+20*3600);
                   PlotLine("耱铒拎閇"+NewSLBuy+"]",NewSLBuy,Red, TimeCurrent(), TimeCurrent()+20*3600);
                  }
                  
               CheckForOpenGoilerBuy();
         
            }
               
             if (NewEntrySell>0.0 && (NewTP1Sell<NewEntrySell&& NewTP1Orig<NewEntryOrig))
            {

                   EntrySell=NewEntrySell;
                   TP1Sell=NewTP1Sell;
                   TP2Sell=NewTP2Sell;
                   SLSell=NewSLSell;
                  
               if (Line_on_Chart)
                  {
                   PlotLine("怩钿彦腚["+NewEntrySell+"]",NewEntrySell,Gold, TimeCurrent(), TimeCurrent()+20*3600) ;
                   //PlotLine("漕徉怅郲"+shift+"]",Entry2,Orange);
                   PlotLine("蝈殛彦腚["+NewTP1Sell+"]",NewTP1Sell,Lime, TimeCurrent(), TimeCurrent()+20*3600);
                   PlotLine("蝈殛_2彦腚["+NewTP2Sell+"]",NewTP2Sell,DodgerBlue, TimeCurrent(), TimeCurrent()+20*3600);
                   PlotLine("耱铒彦腚["+NewSLSell+"]",NewSLSell,Red, TimeCurrent(), TimeCurrent()+20*3600);
                  }
                  
               CheckForOpenGoilerSell();
               
            }

               
               

}

//+------------------------------------------------------------------+
//| Check for open Buy order conditions                     |
//+------------------------------------------------------------------+
void CheckForOpenGoilerBuy()
{


   int i, k=OrdersTotal()-1;
   for(i=k; i>=0; i--)
    {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&& OrderType()==OP_BUY && OrderMagicNumber()==MAGICGO1 && TimeCurrent()-OrderOpenTime()<3600) return(0);
      }
    }


   
   TPBuy = NormalizeDouble(Ask+TakeProfit*Point, Digits);



   OpenPosition(OP_BUY, SLBuy, TPBuy, MAGICGO1, LotsOptimizedBuy()*3, " Goiler Buy"+MAGICGO1);

      
}


   
//+------------------------------------------------------------------+
//| Check for open Sell order conditions                     |
//+------------------------------------------------------------------+
void CheckForOpenGoilerSell()
{


   int i, k=OrdersTotal()-1;
   for(i=k; i>=0; i--)
    {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&& OrderType()==OP_SELL && OrderMagicNumber()==MAGICGO2 && TimeCurrent()-OrderOpenTime()<3600) return(0);
      }
    }



   TPSell = NormalizeDouble(Bid-TakeProfit*Point, Digits);


   OpenPosition(OP_SELL, SLSell, TPSell, MAGICGO2, LotsOptimizedSell()*3, " Goiler Sell"+MAGICGO2);

   
}



//+------------------------------------------------------------------+
//| Function for open order                                          |
//+------------------------------------------------------------------+
void OpenPosition(int op, double sl, double tp, int mn, double ll, string lsComm)
{
colorclOpen;
double pp;
int    err, it, ticket, ticketmod;


if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
//ll=GetSizeLot();
for (it=1; it<=NumberOfTry; it++)
{
    //if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
    while (!IsTradeAllowed()) Sleep(5000);
    RefreshRates();
    if (op==OP_BUY) pp=Ask; else pp=Bid;
    pp=NormalizeDouble(pp, Digits);
    ticket=OrderSend(Symbol(),op,ll,pp,Slippage,0,0,lsComm,mn,0,clOpen);
    if (ticket>0)
   {
       ticketmod=OrderModify(ticket,OrderOpenPrice(),sl,tp,0,clOpen);   
       if (ticketmod>0) break;
   }
    else
    {
      err=GetLastError();
      if (err==128 || err==142 || err==143 || err==144)
      {
      Sleep(1000*PauseAfterError);
      if (ExistPositions(Symbol(), op, mn))break;
      Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
      continue;
      }
      if (err==146) while (IsTradeContextBusy()) Sleep(1000*PauseAfterError);
      Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
      //Print("Ask=",Ask,"Bid=",Bid,"ll=",ll,"op=",GetNameOP(op),
      //      "pp=",pp,"sl=",sl,"tp=",tp,"mn=",mn);
      if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
      Sleep(1000*PauseAfterError);
    }
}
}
//+----------------------------------------------------------------------------+

//+----------------------------------------------------------------------------+
//|                     |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sym, int op, int mn)
{
int i, k=OrdersTotal();
if (sym=="") sym=Symbol();
for (i=0; i<k; i++)
{
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
      if (OrderSymbol()==sym)
      {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
      {
          if (OrderType()==op)
          {
            if (OrderMagicNumber()==mn)
             {
            if (TimeCurrent()-OrderOpenTime()<600)return(True);
             }
          }
      }
      }
    }
}
return(False);
}


//+------------------------------------------------------------------+
//| Calculate optimal lot size Buy                                 |
//+------------------------------------------------------------------+
double LotsOptimizedBuy()
{

   double lotBuy;
   if (Lots>0)
    {
   lotBuy=Lots;
   return(lotBuy);
    }
   

   int    lossesBuy=0;                        // number of losses orders without a break
//---- select lot size
   lotBuy=NormalizeDouble(AccountFreeMargin()*MaxRiskPercent/100000.0, 2);
//---- calculate number of losses orders without a break
   if(DecreaseFactor>0)
   {
      int i, k=OrdersHistoryTotal()-1;
      for(i=k; i>=0; i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol()) continue;
         //----
         if(OrderMagicNumber()==MAGICGO1)
             {
            if(OrderProfit()>=0) break;
            if(OrderProfit()<0) lossesBuy++;
             }
      }
   }
   if(lossesBuy>0)
    {
   lotBuy=NormalizeDouble(lotBuy-lotBuy*lossesBuy/DecreaseFactor,2);

    }
//---- return lot size
   if(lotBuy< min) lotBuy=min;

   if(MaxLotSize>max) MaxLotSize=max;

   if(lotBuy>MaxLotSize) lotBuy=MaxLotSize;

   return(lotBuy);
}



//+------------------------------------------------------------------+
//| Calculate optimal lot size Sell                                  |
//+------------------------------------------------------------------+
double LotsOptimizedSell()
{
   
   
   double lotSell;
   if (Lots>0)
    {
   lotSell=Lots;
   return(lotSell);
    }
   

   int    lossesSell=0;                        // number of losses orders without a break
//---- select lot size
   lotSell=NormalizeDouble(AccountFreeMargin()*MaxRiskPercent/100000.0, 2);
//---- calculate number of losses orders without a break
   if(DecreaseFactor>0)
   {
      int i, k=OrdersHistoryTotal()-1;
      for(i=k; i>=0; i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol()) continue;
         //----
         if(OrderMagicNumber()==MAGICGO2)
             {
            if(OrderProfit()>=0) break;
            if(OrderProfit()<0) lossesSell++;
             }
      }
   }
   if(lossesSell>0)
    {
   lotSell=NormalizeDouble(lotSell-lotSell*lossesSell/DecreaseFactor,2);

    }
//---- return lot size
   if(lotSell< min) lotSell=min;

   if(MaxLotSize>max) MaxLotSize=max;

   if(lotSell>MaxLotSize) lotSell=MaxLotSize;

   return(lotSell);
}



//+------------------------------------------------------------------+
//| Check TrallBuy                                                 |
//+------------------------------------------------------------------+
voidCheck_TR_Buy()

   {
    if (Time<=prevtimetrallbuy) return;
    prevtimetrallbuy=Time;
    if (Bid < TP1Buy) return;
    double newSL=0.0;
    int i, k=OrdersTotal()-1;
    for(i=k; i>=0; i--)
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   {
      if (OrderProfit() <= 0.0) continue;                  
       {
         if (OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGICGO1 || OrderMagicNumber()==MAGICDI1))
          {   
            
            
            
            
            
            if (Bid >= TP1Buy) // && OrderMagicNumber()==MAGICGO1)
             {
                  newSL= NormalizeDouble(EntryBuy,Digits);            //          OrderOpenPrice();
                  if (newSL<=OrderStopLoss()) newSL=OrderStopLoss();
             }
            if (Bid >= TP2Buy) // && OrderMagicNumber()==MAGICGO1)
             {
                  newSL=NormalizeDouble(TP1Buy,Digits);
                  if (newSL<=OrderStopLoss()) newSL=OrderStopLoss();
             }
            if (Bid >= TP2Buy && Bid>=OrderStopLoss()+Trall*TrallKoef*Point)
             {
                  newSL=NormalizeDouble(Bid-Trall*Point,Digits);
                  if (newSL<=OrderStopLoss()) newSL=OrderStopLoss();      
             }
            
            if (newSL<=0.0) return;
            if (newSL<=OrderStopLoss()) continue;
            
            if (OrderModify(OrderTicket(),OrderOpenPrice(),newSL,OrderTakeProfit(),0,Yellow))
             {
                  OrdLot = NormalizeDouble(OrderLots()/3.0,3);
               
                  if (OrdLot<min) OrdLot=min;
               
                  OrderClose(OrderTicket(),OrdLot,Bid,Slippage,Aqua);
                  continue;
             }
            
            
          }
         
       }
       continue;      
   }
   
    return;   
   }

   
//+------------------------------------------------------------------+
//| Check TrallSell                                                |
//+------------------------------------------------------------------+
voidCheck_TR_Sell()
   {
    if (Time<=prevtimetrallsell) return;
    prevtimetrallsell=Time;
    if (Ask > TP1Sell) return;
    double newSL=0;
    int i, k=OrdersTotal()-1;
    for(i=k; i>=0; i--)
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   {
      if (OrderProfit() <= 0.0) continue;                  
       {
         if (OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGICGO2 || OrderMagicNumber()==MAGICDI2))
          {
            
            
            
            
            
            if (Ask <= TP1Sell) // && OrderMagicNumber()==MAGICGO2)
             {
                  newSL= NormalizeDouble(EntrySell,Digits);   //       OrderOpenPrice();
                  if (newSL>=OrderStopLoss()) newSL=OrderStopLoss();
             }
            if (Ask <= TP2Sell) // && OrderMagicNumber()==MAGICGO2)
             {
                  newSL=NormalizeDouble(TP1Sell,Digits);
                  if (newSL>=OrderStopLoss()) newSL=OrderStopLoss();
             }
            if (Ask <= TP2Sell && Ask<=OrderStopLoss()-Trall*TrallKoef*Point)
             {
                  newSL=NormalizeDouble(Ask+Trall*Point,Digits);
                  if (newSL>=OrderStopLoss()) newSL=OrderStopLoss();         
             }
         if (newSL<=0.0) return;
         if (newSL>=OrderStopLoss()) continue;
         
         if (OrderModify(OrderTicket(),OrderOpenPrice(),newSL,OrderTakeProfit(),0,Yellow))
             {
               OrdLot = NormalizeDouble(OrderLots()/3.0,3);
            
               if (OrdLot<min) OrdLot=min;
            
               OrderClose(OrderTicket(),OrdLot,Ask,Slippage,Red);
               continue;   
             }
      
            
          }
         
       }
      continue;         
   }
   
    return;   
   }
   


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


//+------------------------------------------------------------------+
//| Check for open Buy order conditions Diver                     |
//+------------------------------------------------------------------+
void CheckForOpenDiverBuy()
{

   if (Time==prevtimebuy_Di) return;
   prevtimebuy_Di=Time;
   double DiverTPBuy = 0;
   double DiverSLBuy = 0;
   bool GolierBuy = false;

   int i, k=OrdersTotal()-1;
    for(i=k; i>=0; i--)
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
   
      {
       if(OrderSymbol()==Symbol()&& OrderType()==OP_BUY && OrderMagicNumber()==MAGICGO1) // && OrderOpenTime()<TimeCurrent()-260000)
         {
          SLBuy=OrderStopLoss();
          TPBuy=OrderTakeProfit();
          GolierBuy = true;
          break;
         }
         
       else continue;
      }
    }



   double DiverBuy = iCustom(NULL,TF,"顶级趋势V5",fastEMAbuy,slowEMAbuy,signalSMAbuy,0,2);
   
   if (DiverBuy != 2147483647 && GolierBuy == true)
          {
         
         OpenPosition(OP_BUY, SLBuy, TPBuy, MAGICDI1, LotsOptimizedBuy()*3, " Diver Buy "+MAGICDI1);


          }
}


   
//+------------------------------------------------------------------+
//| Check for open Sell order conditions Diver                  |
//+------------------------------------------------------------------+
void CheckForOpenDiverSell()
{
   if (Time==prevtimesell_Di) return;
   prevtimesell_Di=Time;
   double DiverTPSell = 0;
   double DiverSLSell = 0;
   bool GolierSell = false;   

   int i, k=OrdersTotal()-1;
    for(i=k; i>=0; i--)
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
   
      {
       if(OrderSymbol()==Symbol()&& OrderType()==OP_SELL && OrderMagicNumber()==MAGICGO2) // && OrderOpenTime()<TimeCurrent()-260000)
         {
          SLBuy=OrderStopLoss();
          TPBuy=OrderTakeProfit();
          GolierSell = true;
          break;
         }
      
       else continue;
      }
    }
   


   
   DiverSell = iCustom(NULL,TF,"顶级趋势V5",fastEMAsell,slowEMAsell,signalSMAsell,1,2);
   if(DiverSell != 2147483647 && GolierSell == true)
          {

         OpenPosition(OP_SELL, SLSell, TPSell, MAGICDI2, LotsOptimizedSell()*3, " Diver Sell"+MAGICDI2);
   
          }
}





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

//+------------------------------------------------------------------+
//|                                       |
//+------------------------------------------------------------------+   

void PlotLine(string name,double value,color line_color, datetime time1, datetime time2)
{
   double valueN=NormalizeDouble(value,Digits);
   bool res = ObjectCreate(name,OBJ_TREND,0,time1,valueN,time2,valueN);
   ObjectSet(name, OBJPROP_WIDTH, width);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_RAY, false);
   ObjectSet(name, OBJPROP_BACK, true);
   ObjectSet(name, OBJPROP_COLOR, line_color);
}   



   
//+------------------------------------------------------------------+
//| Initfunction                                                   |
//+------------------------------------------------------------------+
   void init ()
   {

    SymbolString = Symbol();
    min=MarketInfo(Symbol(),MODE_MINLOT);
    max=MarketInfo(Symbol(),MODE_MAXLOT);      
    Comment ("The Expert is loaded and waiting data.");
   }
   
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
{


   if(Bars<100 || IsTradeAllowed()==false) return;
   Comment (SymbolString,": The Expert is working..."+"\nTime: ", TimeToStr( TimeCurrent(), TIME_DATE|TIME_SECONDS));
   

if(OrdersTotal()>0)
    {
   Check_TR_Buy();
   Check_TR_Sell();
    }

if (EA_Goiler==true)
   {

      if(TimeHour(TimeCurrent()) == Start_Goiler)Goiler();
      
   }
   
if (EA_Diver==true)
   {      
    CheckForOpenDiverBuy();   
    CheckForOpenDiverSell();
   
   }   
      
}
// =================================================================================================

plrf 发表于 2016-9-29 07:27:51

咯聊聊聊聊聊聊是世俗之中

zhangli8754 发表于 2016-9-29 08:12:12

ggggggggggggggggggggggggggggggggggggggg
页: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19
查看完整版本: 趋势稳增长EA源码