Fracctal Break Out-Stuck

 

Ei, pessoal,


Estou tentando fazer uma fuga fractal EA, que é filtrada com a hora do dia e uma média móvel.


Alguém pode me indicar a direção/visão de algum defeito no código???


1: Só estou aceitando compras depois que eu introduzo o iFractal()

2: Não entra onde estão os fractais

//+------------------------------------------------------------------+
//|                                                    Simple EA.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//Literally copying Ferrus Format to a tee

extern string Label1="===General Trade Settings===";
extern int   TakeProfit=25;
extern int    StopLoss=10;
extern int    TrailingStop=0;
extern int    Slippage=2;
extern double  Lots=0.1;
//---------Time Filter--------//

//-----------Money Managerment---------//
extern bool Money.Management=true ;
extern double Risk=1;


//----------------------Moving Average-----//
extern string Label5="===Moving Average Settings===";
extern int    MA_Period=200;
extern int    MA_Shift=0;
extern int    MA_Type=1;
extern int    MA_Price=0;
//----------


//-------Initialize EA Orders Accounting-----//


int start()
{

int mypoint;

if (Digits==3||Digits==5){ mypoint=10;}
else {mypoint=1;}


//------------Orders Accounting---------//

 int total = OrdersTotal();
if(total<1)
{
//------------Money Management----------//

//Money Management sequence
 if (Money.Management)
   {
      if (Risk<1 || Risk>1000)
      {
         Comment("Invalid Risk Value.");
         return(0);
      }
      else
      {
         Lots=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*Point*mypoint*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 BarCloseB;
double BarCloseS;
BarCloseB=Bid;
BarCloseS=Ask;
//----Processing a buy---------//
//


double fractalU=iFractals(NULL,0,1,0);
double fractalD=iFractals(NULL,0,2,0);



//-----------------------------//
if((BarCloseB>EMA) && (BarCloseB>=fractalU))
{
double SLB=Bid-StopLoss*Point*mypoint;
double TPB=Bid+TakeProfit*Point*mypoint;
int buy= OrderSend(Symbol(),0,Lots,Ask,Slippage,0,0);
}

if(buy>0) 
{
OrderSelect(buy,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(buy,OrderOpenPrice(),SLB,TPB,0,Green);
}
//---------Processing a sell---------//
//
//-----------------------------------//
if((BarCloseS<EMA)&&(BarCloseS<=fractalD))
{
double SLS=Ask+StopLoss*Point*mypoint;
double TPS=Ask-TakeProfit*Point*mypoint;

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

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

Print(GetLastError());
return(0);
}
}
 
fractal

Quebrar ??

double fractalU=iFractals(NULL,0,1,0);     //What if you had chosen for bar 1  ??
double fractalD=iFractals(NULL,0,2,0);             //then i think you will get sell trades also

conte seus negócios antes de abrir uma nova....

e mais erros, mas experimente este primeiro


 
deVries:
fractal

Quebrar ???

conte seus negócios antes de abrir uma nova....

e mais erros, mas experimente este primeiro



Hey deVries,


Estou tendo dificuldade para entender essa afirmação. Minhas duas tomadas de posição foram:


1) Você quer que eu escolha o primeiro bar?

2) Refazer minhas ordensContabilidade


Obrigado novamente por seu apoio.

 
ZacharyRC:

Hey deVries,


Estou tendo dificuldade para entender essa afirmação. Minhas duas tomadas de posição foram:


1) Você quer que eu escolha o primeiro bar?

2) Refazer minhas ordensContabilidade


Obrigado novamente por seu apoio.


double fractalU=iFractals(NULL,0,1,0);

retornos ver meu próximo post .....

double fractalU=iFractals(NULL,0,1,1);

retorna ver meu próximo post......

sua contagem de ordens como

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

não dará nenhuma ordem de abertura se você tiver outra negociação que não esta EA aberta ou pendente

com o backtesting você não verá isso, mas executando a EA em uma conta você vai notar

 

Fez um pequeno teste em seu código frctal

como este

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

Faça o mesmo e você verá que barra você tem que escolher para obter a barra fractal direita

 
deVries:

Fez um pequeno teste em seu código frctal

como este

Faça o mesmo e você verá que barra você tem que escolher para obter a barra fractal direita


Olá deVries!



Você com certeza é um cara prestativo!

 
deVries:

Fez um pequeno teste em seu código frctal

como este

Faça o mesmo e você verá que barra você tem que escolher para obter a barra fractal direita


Hmmm...


deVries, o cheque funcionou perfeitamente e alertou o preço correto para cada fractal "para baixo" e "para cima" fractal.


Ainda estou investigando o código para erros, porque ele está "ignorando" os fractais ao processar o pedido.


Você está correto, preciso alterar as seções OrderAccounting, porque assim que coloco o EA no gráfico, é preciso fazer uma troca.

 
deVries:

Fez um pequeno teste em seu código frctal

como este

Faça o mesmo e você verá que barra você tem que escolher para obter a barra fractal direita


SILVEMENTE ME!


Após pesquisar o código, eu estava usando => ao invés de ==, o que estava causando problemas ao buffer.


Obrigado deVries!!!!

 
ZacharyRC:

SILVEMENTE ME!


Após pesquisar o código, eu estava usando => ao invés de ==, o que estava causando problemas ao buffer.


Obrigado deVries!!!!

Você quer dizer......
if((BarCloseB>EMA) && (BarCloseB>=fractalU))
mudou para
if((BarCloseB>EMA) && (BarCloseB==fractalU))

desta forma agora ???? que também não será correto

.

Algo como isto

if((BarCloseB>EMA) && (BarCloseB>fractalU)&& fractalU>Point)

pode funcionar para você e obter fractalU da maneira que você vê feito no teste...

 
deVries:
Você quer dizer......
mudou para

desta forma agora ???? que também não será correto

.

Algo como isto

pode funcionar para você e obter fractalU da maneira que você vê feito no teste...


Eu não implementei sua contribuição porque ela está sendo comercializada corretamente neste momento. Vou tentar mais tarde esta noite com sua contribuição.



Obrigado deVries!

 

Hey deVries:


Estou me deparando com problemas em meu código final, com a tentativa de colocar um fim à perda modificada para quebrar o equilíbrio depois de tantos pips.


Você vê algum erro gritante????

extern int    StopLoss=10;

//-------------------------------------------------//
extern bool Move.BE=true;
extern int  MoveStopTo=1;



//----------------------------------------------//
//-----------------EXITING ORDERS---------------//
if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==(OP_BUY)&&(Move.BE))
{
if(Bid - OrderOpenPrice() >= Point * StopLoss)
 {
    if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo)
     {
     OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
}
}
}
}

if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
{
 if(OrderType()==(OP_SELL)&&(Move.BE))
 {     
          
if(OrderOpenPrice() - Ask >= Point * StopLoss) 
 {
    if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) 
     {
      OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
}
}
}
}
//--------CHECKING FOR ERRORS-------------------//
Print(GetLastError());
return(0);
}
}

Razão: