¿Cómo codificar? - página 92

 
delvinja:
¡Hola chicos he estado tratando de conseguir este asesor experto para ejecutar operaciones largas en mt4 sin éxito. sólo ejecuta operaciones cortas a pesar de la signal_buy está allí. por favor, ¿podría alguien echar un vistazo a este código y arreglarlo para mí o decirme qué hacer. soy nuevo en la programación y construido a partir de un constructor de estrategia en línea. gracias de antemano! el código se adjunta.
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 no se utilizan.

- Tanto CloseBuy1_2 como CloseSell1_2 son los mismos: uno de ellos está probablemente equivocado (MODE_LOWER)

 

Necesito ayuda con el código

Michel, muchas gracias por tu ayuda, se ha arreglado perfectamente, sois los mejores, por fin puedo descansar. Ya os contaré que tal me han salido las pruebas.

por cierto, ¿dices que -3 nunca podrá trabajar en este expert advisor? gracias de nuevo.

 
delvinja:
... por cierto, ¿dices que el -3 nunca podrá funcionar en este expert advisor? gracias de nuevo.

A decir verdad, nunca entendí muy bien el uso de este desplazamiento : si quieres saber el valor de una indicación 3 barras antes de la barra actual, solo usa 3 como desplazamiento, pero el último; el primero solo desplaza el dibujo de la curva, y si usas un valor negativo, es como si el pasado estuviera conociendo el futuro...

¡De todas formas me encantaría que alguien me explicara su uso !

Pero para responder a tu pregunta, intenta saber la estrategia exacta que quieres seguir, ¿de dónde viene ese -3?

 

hola

en este experto me gustaría modificar todos los sl a últimos pedidos sl igual que tp pero no he podido

por favor ayudenme

Archivos adjuntos:
javadea.mq4  9 kb
 

¿Qué he hecho?

Necesito ayuda para codificar en MT4

Tengo un poco de código a continuación:

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, "Comprar al precio de cierre",10000,0,Green);

}

If(EMAshortEMAlong_prev)

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,0,StopLoss,Bid+TakeProfit*Point, "Vender al precio de cierre",11000,0,Rojo);

}

La idea era:

1. Abrir la orden al precio de cierre cuando se cumplan los criterios;

2. Quiero que la EMAtrend sea el nivel de stoploss;

3. La distancia entre la EMAtrend y la barra de precio de cierre será la distancia para el takeprofit desde el precio de apertura

Intento el código anterior pero no pasa nada y hay un error 130.

Por favor, ayúdeme.

 

Necesito ayuda con el código

Hola a todos

Estoy tratando de conseguir un ea para compilar, pero aparece el siguiente error:

'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 */

Lo que quiero saber es si hay una manera fácil de arreglar esto.

No soy bueno en la codificación, sólo copiar y pegar.

Gracias de antemano

Basza

 
basza:
Hola a todos

Estoy tratando de conseguir un ea para compilar, pero aparece el siguiente error:

'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 */

Lo que quiero saber es si hay una manera fácil de arreglar esto.

No soy bueno en la codificación , sólo copiar y pegar.

Gracias de antemano

Basza

Puedes definir TradeSymbol como cadena en la primicia global, pero allí no puedes evaluar la función Symbol(). Así que sustituye todo "TradeSymbol" por "Symbol()", o asigna el valor en la función init() o start() así:

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

ayuda en la programación

Hola estoy tratando de programar un ea, y he seguido su curso (muy interesante!)

Sé bastante bien como programar en java y algo de c++

Estaba tratando de programar un ea con indicadores de tendencia del cerebro la idea detrás es

cuando brainTrend2stop y braintrend1stop DOTs están presentes comprar (y viceversa)

pero si llamo a la función icustom así

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

sólo obtengo el valor del indicador en la barra actual

¿hay alguna forma de hacerlo booleano? me gustaría escribir una función como

buy=true

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

¿alguien puede ayudar por favor?

 

Controlar si se ejecuta una orden de entrada...

Tengo un EA que abre y gestiona la posición, pero a veces el indicador da la misma señal múltiple y el EA abre cada vez que esta señal sale una nueva posición - pero no quiero una segunda o tercera y así sucesivamente posición, sólo la primera - ¿es posible que el EA compruebe la posición abierta sobre la base del número mágico y el par para evitar tales entradas múltiples?

 
payback:
Hola estoy tratando de programar un ea, y he seguido tu curso (muy interesante!)

Sé bastante bien como programar en java y algo de c++

Estaba tratando de programar un ea con indicadores de tendencia cerebro la idea detrás es

cuando brainTrend2stop y braintrend1stop DOTs están presentes comprar (y viceversa)

pero si llamo a la función icustom así

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

sólo obtengo el valor del indicador en la barra actual

¿hay alguna forma de hacerlo booleano? me gustaría escribir una función como

buy=true

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

¿alguien puede ayudar, por favor, por favor?
BuyCondition = BuyValueCurrent1 != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE;