Como codificar? - página 22

 

Você sempre pode escrever int crossTime = Time[0] quando você tinha uma cruz, e então usar a função iBarShift usando a variável crossTime para verificar quantas barras passaram.

 

Oi Kalenzo,

Kalenzo:
Você sempre pode escrever int crossTime = Time[0] quando você tinha uma cruz, e então usar a função iBarShift usando a variável crossTime para verificar quantas barras passaram.

Como você escreveria este código para incluir apenas "Bear Bars" na contagem?

Eu entendo o ibarshift mas isto incluiria todas as barras desde a cruz. Você ainda precisaria usar um sistema de contagem como eu o tenho para contar "Barras de Urso" e acredito que é aqui que está meu problema.

Eu originalmente testei meu código com este código .... Que funcionou bem.... mas não traduziu para o código acima que na verdade seria listado no meu EA

int start()

{

//----

double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);

double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);

double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);

double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);

static bool CrossedUP,CrossedDn;

static int Count=0;

if(f>s && fp<=sp)

{

CrossedUP=true;

CrossedDn=false;

Alert(Symbol()," Crossed UP");

Count=0;

}

else

if(f=sp)

{

CrossedUP=false;

CrossedDn=true;

Alert(Symbol()," Crossed Down");

Count=0;

}

if(NewBar()==true && f>s || f<s) Count++;

Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);

//----

return(0);

}

Qualquer outro pensamento seria apreciado.

Obrigado,

SaxMan

 

Desculpe Omelete,

Isto também não funciona

Obrigado,

SaxMan

omelette:
Olá. Tente isto.
bool LongClose()

{

if(MAFastC=MASlowP)

{

CrossedUp=false;

CrossedDn=true;

BarCount=0;

}

else

if(MAFastC>MASlowC && MAFastP<=MASlowP)

{

CrossedUp=true;

CrossedDn=false;

BarCount=0;

Alert("Crossed Down");

}

if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")

BarCount++;

if(BarCount>=2 && Candle3mC=="Bear")

{

Alert("Close Long Position");

return(true);

}

else return(false);
 

limite de tempo com o código EA

Eu não posso colocar um limite de tempo em minha EA

A linha de código é a seguinte:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Eu tentei mudar esse ZERO para um 1 ou para um 12 e não consigo fazer com que ele pare o comércio... eu gostaria que o comércio expirasse em 12 horas... como posso fazer isso?

estou usando um backtesting. para ter certeza de que funciona... a função de expiração funciona com esse direito?

 

Tente esta....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alerta ("Versão Expirada");

retornar(0);

}

// código

retorno(0);

}

Dave

 
islandrock:
Eu não posso colocar um limite de tempo em minha EA

A linha de código é a seguinte:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Eu tentei mudar esse ZERO para um 1 ou para um 12 e não consigo fazer com que ele pare o comércio... eu gostaria que o comércio expirasse em 12 horas... como posso fazer isso?

estou usando um backtesting. para ter certeza de que funciona... a função de expiração funciona com esse direito?

verifique o canal de erro;

A aplicação do tempo de expiração da ordem pendente pode ser desativada em alguns servidores de comércio. Neste caso, quando um valor não zero é especificado no parâmetro de expiração, o erro 147 (ERR_TRADE_EXPIRATION_DENIED) será gerado.

o parâmetro é uma variável de 'data/hora', não acredito que 12 se enquadrarão nessa declaração de variável.

 
islandrock:
Eu não posso colocar um limite de tempo em minha EA

A linha de código é a seguinte:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Eu tentei mudar esse ZERO para um 1 ou para um 12 e não consigo fazer com que ele pare o comércio... eu gostaria que o comércio expirasse em 12 horas... como posso fazer isso?

estou usando um backtesting. para ter certeza de que funciona... a função de expiração funciona com esse direito?

Olá. Os prazos de expiração funcionam bem com MT, a única ressalva é que alguns corretores não os permitem - a FXDD é um deles. O tempo de expiração precisa estar no formato datetime para que funcione - ou seja.

datetime ExpirationTime = StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0])+ "." + TimeDay(Time[0])+" "+23+":"+55); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"timetest",16384,ExpirationTime,Green);
 

Eu tenho tentado isto.

comércio externo int TradeLifeHour=12;

externamente int TradeLifeMin=00;

data/hora de expiração; (não sabia o que acontece aqui)

então dentro do início()

tempo de expiração = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;

e usar o tempo de expiração na área 0.

i o último código, mas não sei como configurá-lo para expirar o comércio em 12 horas

 
xxDavidxSxx:
Tente esta....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alerta ("Versão Expirada");

retornar(0);

}

// código

retorno(0);

}

Dave

Eu acabei de usar o código que lhe dei. Mudei a data para 2006 e o coloquei em um local aleatório dentro do Bipoler em uma conta de dinheiro real da FXDD, e funcionou como um encanto.

Ou minas mabe muito simples? Eu não sei...

Dave

 

??

esse código não faz com que cada comércio que minha EA abre expire 12 horas a partir do momento em que abre...