¿Cómo codificar? - página 167

 
 

Sigo intentando añadir una alerta sonora a este indicador...... ¿Puede alguien comprobar el código para mí, ya que no está funcionando?

//+------------------------------------------------------------------+

//|

//|

//+------------------------------------------------------------------+

#property copyright "niva"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 Red

extern bool Email_Enabled = false;

extern bool Alert_Enabled = true;

//---- input parameters

int CountBars=10000;

//---- buffers

double uptrend[];

double downtrend[];

bool AlertSent,EmailSent;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicator line

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,217);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,218);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

//+------------------------------------------------------------------+

//| AltrTrend_Signal_v2_2 |

//+------------------------------------------------------------------+

int start()

{

if (CountBars>=Bars) CountBars=Bars;

int i,shift,counted_bars=IndicatorCounted();

int uptrend, downtrend;

for (shift = CountBars; shift>=0; shift--)

{

if(High[shift-1]>High[shift]&&Low[shift-1]>Low[shift]&&uptrend!=3){

uptrend = uptrend+1;

downtrend=0;

}else if(High[shift-1]<High[shift]&&Low[shift-1]<Low[shift]&&downtrend!=3){

downtrend=downtrend+1;

uptrend=0;

}

else{

uptrend=0;

downtrend=0;

}

if (uptrend==3)

{

val1[shift]=Low[shift];

}

if (downtrend==3)

{

val2[shift]=High[shift];

}

}

return(0);

}

//----

if (Alert_Enabled && (uptrend[0] != 0 || uptrend[0] !=0) && !AlertSent)

{

Alert(Symbol() + "HiLow+3");

AlertSent=true;

}

if (Email_Enabled && (downtrend[0] != 0 || downtrend[0] !=0) && !EmailSent)

{

SendMail(Symbol() + "HiLow+3","HiLow+3 indicator triggered");

EmailSent=true;

}

if(downtrend[0] == 0 && uptrend[0] == 0 )

{

EmailSent=false;

AlertSent=false;

}

return(0);

}

//+------------------------------------------------------------------+
 

Gracias

mrwobbles:
En alguna parte del código los paréntesis están desequilibrados. Parece que en alguna parte del código falta un } y un ). Tendrás que mirar y contar cuántos corchetes abiertos y cerrados hay (+1 para abiertos y -1 para cerrados) eso debería decirte cuántos faltan (digamos que un recuento de +2 significa dos corchetes derechos '}' o viceversa). Si se indentó correctamente deberías ser capaz de averiguar dónde poner el } correcto. Feliz caza El

He conseguido cambiar algunos ajustes y finalmente creo que ya casi lo tengo. Ahora después de la siguiente codificación dice:

'shortSL' - variable no definida

'longSL' - variable no definida

Esto es lo que parece:

//+------------------------------------------------------------------+

//| Salgado.mq4 ||

//| salgadoguilherme@hotmail.com|

//| |

//+------------------------------------------------------------------+

#property copyright ""

#property link "salgadoguilherme@hotmail.com"

extern bool trade=true;

extern int barstocount=50;

extern double lotes=0,01;

extern int StopLoss =40;

extern int TakeProfit =10;

extern int slippage=3;

extern int magicnumber=816;

//+------------------------------------------------------------------+

//| función de inicialización de expertos ||.

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de desinicialización experta ||

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| función de inicio experto ||

//+------------------------------------------------------------------+

int inicio()

{

//----

if(trade==true)

{

//M15

double M15_resistance=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,0);

double M15_resistance_p=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,barstocount-1);

double M15_line=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,0,0);

double M15_support=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,1,0);

double slopeM15=((M15_resistance-M15_resistance_p)/barstocount)/Punto;

//Alert(DoubleToStr(slopeM15,2);

Comentario(

"\n", "Pendiente M15 | ",pendienteM15,

//ENTRADA CORTA

if(pendienteM15<0 && IsTradeAllowed()==true)

{

bool shortopen=false;

int ord_cnt1=Total de órdenes();

for (int inicio1=0;inicio1<ord_cnt1;inicio1++)

{

OrderSelect(start1, SELECT_BY_POS, MODE_TRADES);

if(OrderMagicNumber()==magicnumber && OrderType()==OP_SELL)

{shortopen=true;}

}

if(shortopen==false)

{

double M15High=iHigh(Symbol(),PERIOD_M15,0);

if(M15High>=M15_resistencia)

int shortticket=OrderSend(Symbol(),OP_SELL,lotes,Bid,deslizamiento,Bid+shortSL,M15_line,DoubleToStr(pendienteM15,2);

if(shortticket<0)

{

/ENTRADA LARGA

if(slopeM15>0 && IsTradeAllowed()==true)

{

bool longopen=false;

int ord_cnt=Total de órdenes();

for (int inicio=0;inicio<ord_cnt;inicio++)

{

OrderSelect(start, SELECT_BY_POS, MODE_TRADES);

if(OrderMagicNumber()==magicnumber && OrderType()==OP_BUY)

{longopen=true;}

}

if(longopen==false)

{

double M15Low=iLow(Symbol(),PERIOD_M15,0);

if(M15Low<=M15_support)

int longticket=OrderSend(Symbol(),OP_BUY,lotes,Ask,deslizamiento,Ask-longSL,M15_line,DoubleToStr(pendienteM15,2);

if(longticket<0)

{

//----

return(0);

}

//+------------------------------------------------------------------+

 

Indy de tipo vela

Hola,

Estoy muy necesitado de tutoriales de MQL sobre cómo codificar indicadores tipo vela como el gráfico adjunto. Sólo los enlaces a algún lugar dentro o fuera de este foro estará bien. Muchas gracias.

Piper.

Archivos adjuntos:
ma_candles.gif  15 kb
 

¿Podría alguien decirme cómo codificar lo siguiente?

Contar el número de barras desde que una MA de corto plazo ha cruzado una MA de largo plazo.

Gracias.

 

Código de EA para reanudar las operaciones después de cerrar.

Hola,

¿Hay algún código de ejemplo para un EA, que puede reanudar la gestión de los oficios después de su parada y luego vuelve de nuevo?

Gracias,

JForex

 

¿Cómo codificar?

darvasboxes:
Podría alguien decirme cómo codificar lo siguiente;

Cuente el número de barras desde que una MA de corto plazo ha cruzado una MA de largo plazo.

¡Gracias!

Sí.

Cuenta las barras desde que se cruzaron:

int i;

bool shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,0) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,0));

bool sgLast;

for(i=0;i<iBars(NULL,0);i++) {

sgLast = shortGreater;

shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,i) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,i));

if(shortGreater !== sgLast) {

romper;

}

}

La variable i contendrá entonces el número de barras desde que se cruzaron.

Siéntase libre de enviarme algo de dinero si lo encuentra útil. Te lo agradecería.

 

Aquí tienes.

Guilhermesalgado:
¡Me las arreglé para cambiar algunos ajustes y, finalmente, creo que es casi allí! Ahora después de la siguiente codificación dice:

'shortSL' - variable no definida

'longSL' - variable no definida

Aquí tienes. Tomé lo que hiciste y lo modifiqué para que compilara. Cuidado, tu lógica es mala, parece incompleta, y probablemente no hará lo que quieres.

Pero ahí lo tienes.

- ChazzMoney

P.D. $170 es EXTREMADAMENTE barato para un programa. Yo escribo software de inversión personalizado una o dos veces al año por cinco cifras. Los programadores que se encargan de este tipo de trabajo deben tener cuidado: hay que comprobar TODO para asegurarse de que no se pasa por alto ningún caso. Un error es tan bueno como un comerciante al azar.

Siéntase libre de enviarme algo de dinero si lo encontró útil. Te agradezco el detalle.

Archivos adjuntos:
 

código de ZigZag estándar

Hola

este código es del estándar "ZigZag.mq4"

"if (counted_bars==0 && downloadhistory) // se ha descargado el historial"

counted_bars==0 : comprobando si el valor es igual a cero........ está bien.

downloadhistory : no hay comprobación de la condición ¿por qué?? por favor aclare esto

Gracias.

 

Abriendo 2 ORDENES y Cerrando 2 ORDENES..CONSISTENTEMENTE.

Llevo mucho tiempo intentando e INTENTANDO que mi EA abra siempre dos órdenes de compra O venta. Una con TP y la otra con NADA. Después de abrir 2 órdenes no abra más HASTA el momento de operar en dirección contraria.

Por ALGUNA RAZÓN, miro el historial de la cuenta y veo 1 orden, luego 3 órdenes, luego 4 órdenes, luego 2 órdenes y está funcionando como una basura.

¿Puede algún maestro de la codificación aquí echar un vistazo y darme su opinión?

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Gracias!!!!!!!!!!!!!!!!

PEDIDOS ABIERTOS

-------

BuyTicket1 = False;

BuyTicket2 = False;

while (!BuyTicket1) {

BuyTicket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, Ask + TakeProfit * Point, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

Sleep(PausebetweenOrders * 1000);}

//if (BuyTicket1 && SignalMail) SendMail("[Alerta de señal]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open 1st Buy");

Sleep(1000);

while (!BuyTicket2) {

BuyTicket2 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, 0, "2nd Buy(#" + MagicNumber + ")", MagicNumber, 0, BlueViolet);

Sleep(PausebetweenOrders * 1000);}

------------

CERRAR ÓRDENES

------------

if(OrdersTotal() > 0) {

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);

if(OrderType() == OP_SELL){

for (int j = OrdertotalCloseSell-1; j >= 0; j --) {

PositionClosedSell = False;

IntentosDeVenta = 0;

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

while (!PositionClosedSell && AttemptsTriedCloseSell < CloseposnAttempts) {

AttemptsTriedCloseSell = AttemptsTriedCloseSell + 1;

OrderCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, MediumSeaGreen);

Sleep(PausebetweenOrders * 1000);

if( OrderCloseSell == True ) { // Posición cerrada con éxito.

Razón de la queja: