Como codificar? - página 92

 
delvinja:
Oi pessoal, eu tenho tentado nos últimos três dias conseguir que este consultor especializado execute negócios longos em mt4 sem sucesso. ele só executa negócios curtos mesmo que o sinal_compra esteja lá. por favor, qualquer um poderia dar uma olhada neste código e consertá-lo para mim ou me dizer o que fazer. sou novo em programação e construí-o a partir de um construtor de estratégias online. obrigado de antemão! o código está anexado.
double ... = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);[/PHP]

I am not sure about the -3 shift parameter : it shift the curve to the left, so the current bar is undefinited. Try to replace all -3 by 0 to see if the buy orders are triggered.

I would replace

double Var1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var2 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var3 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Var4 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double Buy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Sell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double CloseBuy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double CloseSell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

by

[PHP]double Buy1_1 = iMA(NULL, 0, 3, 0, MODE_SMA, PRICE_CLOSE, Current);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double Sell1_1 = Buy1_1;

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current);

double CloseBuy1_1 = Buy1_1;

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double CloseSell1_1 = Buy1_1;

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

Rem :

- Var1,2,3,4 não são utilizados.

- Ambos CloseBuy1_2 e CloseSell1_2 são o mesmo: um provavelmente está errado (MODE_LOWER)

 

Precisa de ajuda com o código

Michel, muito obrigado por sua ajuda, que a consertou perfeitamente! vocês são os melhores, posso finalmente descansar um pouco. Vou informá-los de como foram os meus testes.

oh, a propósito, r u dizendo que -3 nunca será capaz de trabalhar neste consultor especializado? obrigado novamente.

 
delvinja:
... oh a propósito, r u dizendo que -3 nunca poderá trabalhar neste consultor especializado? obrigado novamente.

Para dizer a verdade, nunca entendi realmente o uso deste deslocamento: se você quer saber o valor de um indicador 3 barras antes da barra atual, basta usar 3 como deslocamento, mas o último; o primeiro apenas desloca o desenho da curva, e se você usar um valor negativo, é como se o passado estivesse conhecendo o futuro...

De qualquer forma, eu ficaria feliz que alguém me explicasse o seu uso!

Mas para responder à sua pergunta, tente saber a estratégia exata que você quer seguir, de onde vem que -3 ?

 

olá

neste especialista eu gostaria de modificar todas as sl para durar encomendas sl igual a tp mas eu não poderia

por favor, me ajude

Arquivos anexados:
javadea.mq4  9 kb
 

O que eu fiz?

Preciso de ajuda na codificação em MT4

Eu tenho algum código abaixo:

StopLoss=EMAtrend-iClose(NULL,0,1);

TakeProfit=StopLoss

If(EMAshort>EMAlong && EMAshort_prev<EMAlong_prev)

{

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask+StopLoss*Point,Bid+TakeProfit*Point, "Buy at close price",10000,0,Green);

}

If(EMAshortEMAlong_prev)

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,0,StopLoss,Bid+TakeProfit*Point, "Sell at close price",11000,0,Red);

}

A idéia era:

1. Pedido aberto a preço fechado quando os critérios foram atendidos;

2. Eu quero que a EMAtrend seja o nível de parada;

3. A distância entre a barra de preço EMAtrend e a barra de preço Fechada será a distância para o takeprofit do preço aberto.

Eu tento o código acima, mas nada acontece e há um erro 130.

Por favor, me ajude.

 

Precisa de ajuda com o código

Olá a todos

Estou tentando conseguir uma ea para compilar, mas ela vem com o seguinte erro:

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

O que eu quero saber é se existe uma maneira fácil de consertar isto.

Eu não sou bom em codificação, apenas copiando e colando.

Obrigado de antemão.

Basza

 
basza:
Olá a todos

Estou tentando conseguir uma ea para compilar, mas ela vem com o seguinte erro:

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

O que eu quero saber é se existe uma maneira fácil de consertar isto.

Eu não sou bom em codificação, apenas copiando e colando.

Obrigado de antemão.

Basza

Você pode definir TradeSymbol como um fio em um furo global, mas lá você não pode avaliar a função Symbol(). Portanto, substitua todo "TradeSymbol" por "Symbol()", ou atribua o valor na função init() ou start() desta forma:

void Init(){TradeSymbol=Symbol();}
 

ajuda na programação

Olá, eu estava tentando programar uma ea, e eu segui seu curso (muito interessante!)

Eu sei muito bem como programar em java e alguns c++

Eu estava tentando programar uma ea com indicadores de tendência cerebral, a idéia por trás é

quando brainTrend2stop e braintrend1stop DOTs estão presentes compra (e viceversa)

mas se eu chamar a função icustom desta forma

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

Eu recebo apenas o valor do indicador na barra atual

existe uma maneira de torná-lo booleano? eu gostaria de escrever uma função como

buy=verdadeiro

BuyCondition = (IndicatorName1=verdadeiro && IndicatorName2=verdadeiro);

alguém pode ajudar por favor, por favor, por favor???

 

Controle se uma Ordem de Entrada for Executada...

tenho uma EA que abre e maneja a posição, mas às vezes dá ao indicador o mesmo sinal múltiplo e a EA abre toda vez que este sinal sai uma nova posição - mas não quero uma segunda ou terceira e assim por diante e na posição, só a primeira - é possível que a EA verifique a posição aberta com base no número mágico e no par para evitar tais entradas múltiplas ?

 
payback:
Oi eu estava tentando programar uma ea, e eu segui seu curso (muito interessante!)

Eu sei muito bem como programar em java e alguns c++

Eu estava tentando programar uma ea com indicadores de tendência cerebral, a idéia por trás é

quando brainTrend2stop e braintrend1stop DOTs estão presentes compra (e viceversa)

mas se eu chamar a função icustom desta forma

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

Eu recebo apenas o valor do indicador na barra atual

existe uma maneira de torná-lo booleano? eu gostaria de escrever uma função como

buy=verdadeiro

BuyCondition = (IndicatorName1=verdadeiro && IndicatorName2=verdadeiro);

alguém pode ajudar, por favor, por favor????
BuyCondition = BuyValueCurrent1 != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE;
Razão: