JK_BullP____





//+------------------------------------------------------------------+
//|                                          JK_BullP_AutoTrader.mq4 |
//|                                     Copyright © 2005, Johnny Kor |
//|                                                   autojk@mail.ru |
//|        On-Line Testing http://vesna.on-plus.ru/forex/stat/69740/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Johnny Kor"
#property link      "autojk@mail.ru"

//---- input parameters
extern double TakeProfit = 7;
extern double Lots = 1;
extern double StopLoss = 30;
extern int TrailingStop = 15;
extern double Patr=9,Prange=5,Kstop=1.5,kts=2,Vts=2; 


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{double pos1pre, pos2cur, hzbul1, hzbul2, hzbear1, hzbear2;
 int cnt, ticket, total,TotalOpenOrders;

pos1pre = iBullsPower(NULL, 0, 13,PRICE_CLOSE,2);
pos2cur = iBullsPower(NULL, 0, 13,PRICE_CLOSE,1);
//hzbear1 = iBearsPower(NULL, 0, 13,PRICE_WEIGHTED,1);
//hzbear2 = iBearsPower(NULL, 0, 13,PRICE_CLOSE,0);
// = ((hzbear1+hzbul1)/2);
// = ((hzbear2+hzbul2)/2);
total=OrdersTotal();


/*








  {
  int para; // - ïîðÿäêîâûé íîìåð äîðãóåìîé ïàðû 
  double sl[11]; //- ìàññèâ StopLoss ïî êàæäîé ïàðå - ðàâåí äëèíå ñâå÷è íà íà÷àëî óòðåííåé ñåññèè
  double ts[11]; //- ìàññèâ òðåéëèíãîâ ïî êàæäîé ïàðå - äèíàìè÷åñêèé òðåéëèíã

string arSym[12];


//---- 
   // Ïîðÿäêîâûé íîìåð ïàðû
if (Symbol()=="USDCHF")  para=0; arSym[0]="ïî ôðàíêó";
if (Symbol()=="GBPUSD")  para=1; arSym[1]="ïî Ôóíòó";
if (Symbol()=="USDJPY")  para=2; arSym[3]="ïî åíå";
if (Symbol()=="EURUSD")  para=3; arSym[3]="ïî åâðå";
if (Symbol()=="AUDUSD")  para=4; arSym[3]="ïî àâñòðàëèéöó";
if (Symbol()=="USDCAD")  para=5; arSym[3]="ïî êàíàäöó";
if (Symbol()=="EURGBP")  para=6; arSym[3]="ïî åâðî ôóíòó";
if (Symbol()=="EURCHF")  para=7; arSym[3]="ïî åâðî ôðàíêó";
if (Symbol()=="EURJPY")  para=8; arSym[3]="ïî åâðî åíå";
if (Symbol()=="GBPJPY")  para=9; arSym[3]="ïî Ôóíò åíå";
if (Symbol()=="GPBCHF")  para=10; arSym[3]="ïî ôóíò ôðàíêó";
if (Symbol()=="#EPU4")  para=11; arSym[3]="ïî Èíäåêñó";

double mode,ValATR,hi,lo;
int prevBars,I,j2;
int lang_mode=SPEECH_NATIVE;
// Äâèãàåì ñòîïû
	ts[para]=TrailingStop;
//------------------------------------------------------- 
if (prevBars != Bars)
 {
  ValATR=0; 

  for ( I=1 ; I<=Patr;I++){
   if (I<= Patr) ValATR += High[I]-Low[I]; }
   
 
  ValATR = NormalizeDouble(ValATR / Patr,4); 
     
   hi=High[Highest(NULL,0,MODE_HIGH,Prange,Prange)];  
   lo=Low[Lowest(NULL,0,MODE_LOW,Prange,Prange)];
  
  if (Vts==1)  { ts[para]=NormalizeDouble(kts*ValATR,4);
                sl[para]=Kstop*ValATR; }
  if (Vts==2) {  ts[para]=(hi-lo);
                 sl[para]=Kstop*(hi-lo); }
  prevBars = Bars;
  }
  if (Vts<1 || Vts>2) return(0); 
 
//------------------------------------------------------- 
// int total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
// Âûñòàâëåíèå ïåðâîãî ñòîïà
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
 if(OrderType()==OP_BUY &&  OrderSymbol()==Symbol()&& OrderStopLoss()== 0) {

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-sl[para],OrderTakeProfit(),0,Yellow);

 SpeechText("Còîï ëîñ"+ arSym[para]+" óñòàíîâëåí óñïåøíî!", lang_mode);
                  return(0);
               }

 if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderStopLoss()== 0) {
 OrderModify(OrderTicket(),OrderOpenPrice(),Ask+sl[para],OrderTakeProfit(),0,Yellow);
 SpeechText("Còîï ëîñ "+ arSym[para]+"óñòàíîâëåí óñïåøíî!", lang_mode); 
                  return(0);
               }

// Ìîäèôèêàöèÿ

   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderType()<=OP_SELL && 
   OrderSymbol()==Symbol())   
   {
      if(OrderType()==OP_BUY)   
      {
         
         if(ts[para]>0)  
         {                
            if(Bid-OrderOpenPrice()>TrailingStop*Point)
            {
               if(OrderStopLoss()<Bid-ts[para]|| OrderStopLoss()<OrderOpenPrice())
               {
                  OrderModify(OrderTicket(),OrderOpenPrice(),Bid-ts[para],OrderTakeProfit(),0,Blue);
 
                  return(0); 
               }
            }
         }
      }
      else 
      {
         
         if(ts[para]>0)  
         {    
            if((OrderOpenPrice()-Ask)>TrailingStop*Point)
            {
               if(OrderStopLoss()==0.0 || 
               OrderStopLoss()>(Ask+ts[para])|| OrderStopLoss()>OrderOpenPrice())
               {
                  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ts[para],OrderTakeProfit(),0,Red);
  
                  return(0); }
               }
            }
          }
      }
   }
}
 OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
  if (OrderType()==OP_BUY && OrderSymbol()==Symbol()&& OrderStopLoss()<Bid-ts[para])
    {  SpeechText("Îðäåð áàé"+ arSym[para]+" ìîäèôèöèðîâàí  óñïåøíî!", lang_mode); }
  
  if ( OrderType()==OP_SELL && OrderSymbol()==Symbol()&&  OrderStopLoss()>Ask+ts[para]){
    SpeechText("Îðäåð ñåëë"+ arSym[para]+" ìîäèôèöèðîâàí  óñïåøíî!", lang_mode);}
//----






//---- 
   
//----





*/




int H,L;

for (cnt=0;cnt<30;cnt++)
{if (H==0)
{if (H<High[cnt]) H=High[cnt];}}

for (cnt=0;cnt<30;cnt++)
{if (L==0)
{
if (L>Low[cnt]) L=Low[cnt];}}

Comment("  BullsPower - ",pos1pre,"  BearsPower - ",pos2cur);

int j;



for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && // ýòî îòêðûòàÿ ïîçèöèÿ? OP_BUY èëè OP_SELL 
         OrderSymbol()==Symbol())    // èíñòðóìåíò ñîâïàäàåò?
        {j=2;
         if(OrderType()==OP_BUY)   // îòêðûòà äëèííàÿ ïîçèöèÿ
           {
                // ïðîâåðèì - ìîæåò ìîæíî/íóæíî óæå òðåéëèíã ñòîï ñòàâèòü?
            if(TrailingStop>0)  // ïîëüçîâàòåëü âûñòàâèë â íàñòðîéêàõ òðåéëèíãñòîï
              {                 // çíà÷èò ìû èäåì åãî ïðîâåðÿòü
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
         else // èíà÷å ýòî êîðîòêàÿ ïîçèöèÿ
           {
              // ïðîâåðèì - ìîæåò ìîæíî/íóæíî óæå òðåéëèíã ñòîï ñòàâèòü?
            if(TrailingStop>0)  // ïîëüçîâàòåëü âûñòàâèë â íàñòðîéêàõ òðåéëèíãñòîï
              {                 // çíà÷èò ìû èäåì åãî ïðîâåðÿòü
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if(OrderStopLoss()==0.0 || 
                     OrderStopLoss()>(Ask+Point*TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }



/*if (pos1pre > pos2cur)
{
   for(cnt=0;cnt<total;cnt++)
   {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_BUY &&   
            OrderSymbol()==Symbol())
      {
           	if (Bid>(OrderSelect(cnt,OrderOpenPrice(), MODE_TRADES)+TrailingStop*Point))
            {
                 	OrderClose(OrderSelect(cnt,Symbol()),Lots,Bid,3,Violet);
            }
      }
   }
}
if (pos2cur<0)
{
   for(cnt=0;cnt<total;cnt++)
   {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   
            OrderSymbol()==Symbol())
      {
           	if (Ask>(OrderSelect(cnt,OrderOpenPrice(), MODE_TRADES)-TrailingStop*Point))
            {
                 	OrderClose(OrderSelect(cnt,Symbol()),Lots,Ask,3,Violet);
            }
      }
   }
}
*/

   

if (pos1pre>pos2cur && pos2cur>0  && j<2)
    {
      OrderSend(Symbol(), OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,NULL,0,0,Red);
    }
    
if (pos2cur<0 && j<1)
    {
      OrderSend(Symbol(), OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,0,0,Red);
     }


// TRALiNG





  
 return(0);
  }



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:


Indicators Used:

Bulls Power indicator


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It can change open orders parameters, due to possible stepping strategy
It Closes Orders by itself
It automatically opens orders when conditions are reached

Other Features:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for JK_BullP____


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: