Como codificar? - página 120

 
denis68:
matrixebiz o que você quer dizer com rem'ing out these two lines; and how do it, i can;t get in to the code of the AC indicator i have tried,

Você abre o Accelerator.mq4 no MetaEditor (está em sua pasta Indicadores) e coloca // na frente dessas duas linhas e depois salva como um novo nome AcceleratorMod.mq4 e depois clica em compilar.

Arquivos anexados:
 
hiachiever:
Não, isso não é correto.

No loop for, você está começando em 6 e diminuindo para 1. Isto significa que no loop final, o para loop executa a verificação "se (i == 1) qqeacross = True;". O resultado final é que a saída será verdadeira se o qqeacross tiver ocorrido.

O único problema que isto pode apresentar é se o qqeacross foi definido como verdadeiro em um looop anterior. Para superar isto, você deve ter qqeacross = falso; antes do for loop. Desta forma, você pode assegurar que se qqeacross = verdadeiro, então ele foi definido pelo laço que acabou de ser completado.

Abraço,

hiachiever

Então, mesmo que diga "se (i ==1) qqeacross = Verdadeiro"; e então i=4 (por causa da contagem regressiva) , qqeacross ainda assim = Verdadeiro?

 

Obrigado hiachiever!

hiachiever:
A maneira de fazer isso é criar um vriable no escopo global (ou seja, antes do init).

eg

no BarCount;

int init ()

Então, em seu código de stop loss use o seguinte:

se (BarCount<Bars)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0)));

StopLossBars++;

BarCount=Bars;

}

Isto incrementará o StopLossBars em 1 em cada nova barra.

A única outra adição ao seu código seria redefinir 'StopLossBars' de volta seu valor padrão original quando uma nova negociação é aberta.

Abraço,

Hiachiever

Obrigado, hiachiever, foi muito gentil de sua parte em ajudar, embora eu gostaria de pedir um outro pequeno favor, por favor.

Acho que entendo como funciona seu código e estou certo de que posso copiá-lo para minha EA . No entanto, não tenho certeza de como reiniciar as StopLossBars de volta ao seu padrão. Este é o código no final da EA para ir longo ou curto:

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

Você poderia ter a gentileza de ajudar com algum código para reiniciar as StopLossBars, por favor?

Mais uma vez, obrigado.

 

matrixebiz fiz isso agora não posso compilar minha ea quando adicionei as seguintes linhas à minha ea

duplo ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);

duplo ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);

duplo ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);

duplo ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);

bool acbuy = ac2==0 && ac11==0; // mudanças vermelhas para Lime

bool acsell = ac1==0 && ac22==0; // Mudanças de cal para vermelho

eu recebo 12 erros: variável AC não definida :

e eu gostaria de agradecer a ajuda

 

Presumo que StopLossBars é uma variável global que é definida através das entradas do usuário, certo?

Bem, o que eu faria é algo como isto.

Faça com que a variável de entrada do usuário seja algo como gStopLossBars e então, em sua função init, atribua-a a sua variável local como...

StopLossBars = gStopLossBars;

Em seguida, simplesmente use a mesma atribuição em suas funções de compra e venda para reiniciar o StopLossBars.

Faz sentido?

Espero que isso ajude.

Lux

 

Ac+ao+psar

Olá a todos,

Qualquer pessoa pode combinar AC+AO+PSAR para se tornar um novo indicador com alerta/email? Por favor, me pergunte. Obrigado.

 
luxinterior:
Presumo que o StopLossBars é uma variável global que é definida através das entradas do usuário, certo?

Bem, o que eu faria é algo como isto.

Faça com que a variável de entrada do usuário seja algo como gStopLossBars e então em sua função init a atribua a sua variável local como...

StopLossBars = gStopLossBars;

Em seguida, simplesmente use a mesma atribuição em suas funções de compra e venda para reiniciar o StopLossBars.

Faz sentido?

Espero que isso ajude.

Lux

Isso faz todo o sentido. Muito obrigado sempre.

 

Como posso detectar quando a nova vela está acesa?

por favor alguém me dê alguns conselhos sobre como posso criar uma EA que faça uma ordem pendente quando a nova barra começar (TF diária) ?

obrigado

 
:: oi! verifique o código dentro deste indicador... (somente para seu horário de abertura, não é um EA)
tcl:
por favor alguém me dê alguns conselhos sobre como posso criar uma EA que faça um pedido pendente quando o novo bar começar (TF diário) ?obrigado
 

Alguém pode impedir isso de fazer looping e looping?

void BEM ()

{

int pips;

para (int k=0; k<OrdersTotal ();k++)

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (Bid - OrderOpenPrice())/Ponto;

if ((pips >= BE) && (OrderStopLoss() < OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue);

}

}

if(OrderType()==OP_SELL && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (OrderOpenPrice() - Ask)/Point;

if ((pips >= BE) && (OrderStopLoss() > OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink);

}

}

}

}

Razão: