Fractal Break Out-Stuck - página 6

 

primero sobre ese soporte

ver esto

 int total = OrdersTotal();
if(total<1)
{

//--------------------------------------//
//------------Money Management----------//
 if (Money.Management)
   {
      if (Risk<1 || Risk>1000)
      {
         Comment("Invalid Risk Value.");
         return(0);
      }
      else
      {
         Lots=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*pips2dbl*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);
      }
   }
//------------------------------------------//
//-------------EMA SETTINGS-----------------//
double EMA=iMA(NULL,0,MA_Period,MA_Shift,MA_Type,MA_Price,0);
double BarClose;
BarClose=Bid;

//---------------------------------------------------------//
//-----------------FRACTALS--------------------------------//
double fractalU=iFractals(NULL,Fractal_TF,1,Fractal_Buffer);
double fractalD=iFractals(NULL,Fractal_TF,2,Fractal_Buffer);
Print( "This Up Fractal is",fractalU,"Down Fractal is",fractalD);

//----------------PRCOESSING BUY---------------------------//
if(BarClose>EMA && BarClose== fractalU)
{
double SLB=Bid-StopLoss*pips2dbl;
double TPB=Bid+TakeProfit*pips2dbl;
int buy= OrderSend(Symbol(),0,Lots,Ask,Slippage*pips2points,0,0);
}

if(buy>0) 
{
OrderSelect(buy,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(buy,OrderOpenPrice(),SLB,TPB,0,Green);
}

//---------PROCESSING SELL---------//
if(BarClose<EMA&&BarClose==fractalD)
{
double SLS=Ask+StopLoss*pips2dbl;
double TPS=Ask-TakeProfit*pips2dbl;

int sell= OrderSend(Symbol(),1,Lots,Bid,Slippage*pips2points,0,0);
}

if (sell>0)
{
OrderSelect(sell,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(sell,OrderOpenPrice(),SLS,TPB,0,Green);
}




//----------------------------------------------//
//-----------------EXITING ORDERS---------------//

for(int i=OrdersTotal()-1; i>=0;i--)          <===HOW Can be here one trade in the loop if OrdersTotal() < 1 
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;

if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

double SL=OrderStopLoss();
bool result;
int  error;
//-----The Differnt Order types---//

if(OrderType()==OP_BUY)
{

  if(BreakEven>0)
  {
   
     if(Bid-OrderOpenPrice() >=BreakEven*pips2dbl)
     {
      
        if(OrderStopLoss() <OrderOpenPrice())
        {
         
          SL=OrderOpenPrice()+Point;
        }
     }
  }
}
                  
          

if(OrderType()==OP_SELL){

 if(BreakEven>0)
 {
  
    if(OrderOpenPrice()-Ask >= BreakEven*pips2dbl)
    {
     
       if(OrderStopLoss()>OrderOpenPrice())
       {
        
          SL=OrderOpenPrice() - Point;
    
       }
    }
  }
}


if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);}     
}
return(0);
}//THIS IS THE BRACKET FOR ORDERS OPEN CLOSE********************

No creo que puedas explicar lo que señalé aquí....

 

sobre los fractales...... ¿qué hace esta prueba?

   double fractalU;
   for(int y=0;fractalU < Point;y++)
     {
      fractalU=iFractals(NULL,0,1,y);
      Alert("fractalUp  y =  "+y+ " "+fractalU);
     } 

Haz lo mismo y verás qué barra tienes que elegir para obtener el fractalbar correcto

.

¿Tenemos los fractales siempre en la misma barra?

 

Veo lo de la:

Sería imposible entrar en este bucle si no hay ninguna operación. Necesito codificar una sección de Contabilidad de Órdenes diferente

for(int i=OrdersTotal()-1; i>=0;i--)          <===HOW Can be here one trade in the loop if OrdersTotal() < 1 
{

 
deVries:

sobre los fractales...... ¿qué hace esta prueba?

Haz lo mismo y verás qué barra tienes que elegir para obtener el fractalbar correcto

.

¿Tenemos los fractales siempre en la misma barra?


Sí, siempre está en la misma barra, no importa el fractal arriba o el fractal abajo....

 
//---------------FRACTAL INPUTS--------------------//
extern string Label6="===FRACTAL INPUTS===";
extern int    Fractal_Buffer=0;
extern int    Fractal_TF=0;


//--------Start Funcitons-------//
int start()
{

//-----------------FRACTALS--------------------------------//
double fractalU=iFractals(NULL,Fractal_TF,1,Fractal_Buffer);
double fractalD=iFractals(NULL,Fractal_TF,2,Fractal_Buffer);
Print( "This Up Fractal is",fractalU,"Down Fractal is",fractalD);

Su códigoFractal_Buffer= 0 SIEMPRE 0

La prueba que hice demostró que nunca había un fractal que encontrar en la barra 0

HACER LA PRUEBA........ APRENDER

   double fractalU;
   for(int y=0;fractalU < Point;y++)
     {
      fractalU=iFractals(NULL,0,1,y);
      Alert("fractalUp  y =  "+y+ " "+fractalU);
     } 
 

Siento haber comunicado tan mal mi hallazgo deVries.


He hecho la prueba y sí, nunca hay un fractal en la barra 0.

Veo lo que estás haciendo, quieres que use for(loop) para encontrar el y para usar en lugar de Fractal_Buffer, porque no siempre debe ser establecido =0.

 
ZacharyRC:

Siento haber comunicado tan mal mi hallazgo deVries.


He hecho la prueba y sí, nunca hay un fractal en la barra 0.

Veo lo que estás haciendo, quieres que use for(loop) para encontrar el y para usar en lugar de Fractal_Buffer, porque no siempre debe ser establecido =0.




   double fractalU;
   for(int y=0;fractalU < Point;y++)
     {
      fractalU=iFractals(NULL,0,1,y);
     } 
     
double fractalD;
for(int x=0;fractalD< Point;x++)
 {
 fractalD=iFractals(NULL,0,2,x);
 }

 

Lo que me cuesta entender de la codificación, es que el EA seguía tomando operaciones correctas con el otro código fractal, que era incorrecto.

Además, mover el stop una vez, no sucedió cuando quité el filtro de tiempo que es incorrecto tampoco.


Actualmente estoy trabajando en mi contabilidad de órdenes...pero el libro hace difícil que muchas de estas cosas tomen creatividad.


¡Gracias por su poderosa paciencia!

 
AHHHH No puedo mover el stop por esto jajaja Soy muy lento
int total = OrdersTotal();
if(total<1)
{