¿Cómo codificar? - página 221

 

Por favor, ayúdame a mover la línea.

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

El indicador funciona como fue diseñado. Suena la alarma cuando el precio toca la línea pero quiero ampliarlo. Quiero esto:

Copiar el indicador de abajo y luego hacer estas 2 modificaciones:

modificación #1:

crear una linea stoploss1(ya esta ahi) y mover la linea a donde este mi stop loss si no tengo un stop loss establecido mover la linea 500 pips de distancia para evitar que la alarma se active.

modificación #2:

Crear una linea takeprofit1(esto no esta en el codigo) y mover la linea a donde este mi stop loss si no tengo un stop loss establecido mover la linea 502 pips lejos para prevenir que la alarma se active. También utilizar diferentes sonidos de alerta.

El indicador comprobará cuál es mi stop loss y mi take profit y se moverá a los precios respectivos, si el stop loss y el take profit no están establecidos, moverá las líneas a 500,502 pips de distancia.

De esta manera, cuando el mercado golpeó mi beneficio o pérdida de la parada del sonido me hará saber cuando im no mirar a Metatrader o tener la ventana de minimizar, y puedo volver a ver lo que otra configuración que pueda tener.

Gracias por tu ayuda hermano.

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

//| HLine Alert.mq4 ||||||||||||||||||||||||

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

#property copyright ""

#property indicator_chart_window

extern string LineName="Stoploss1";

extern color LineColor=Rojo;

extern int LineStyle=STYLE_SOLID;

extern int AlertPipRange=1;

extern string AlertWav="Alert2.wav";

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

//| Función de inicialización del indicador personalizada ||.

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

int init()

{

//---- indicadores

//----

return(0);

}

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

//| Función de desinicialización de indicadores personalizados ||.

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

int deinit()

{

//----

//----

return(0);

}

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

//| Función de iteración del indicador personalizada ||

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

int inicio()

{

int counted_bars=IndicatorCounted();

ObjectCreate(LineName, OBJ_HLINE, 0, 0, Bid);

ObjectSet(LineName, OBJPROP_STYLE, LineStyle);

ObjectSet(LineName, OBJPROP_WIDTH, 2);

ObjectSet(LineName, OBJPROP_COLOR, LineColor);

double val = ObjectGet( LineName, OBJPROP_PRICE1);

if (Bid-AlertPipRange*Point = val) PlaySound(AlertWav);

//----

//----

return(0);

}

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

 
increase:
Aquí está una versión MTF que hice para usted con la alerta

Hola Aumentar..

...me descargo tu indicador (con alerta) lo arreglé..porque..tengo un pequeño error..

una vez que la flecha emergente muestra la etiqueta hacia abajo y viceversa ...

...asi que me gustaria saber como fusionar ambos en uno..y como poner el envio de alerta a

y como enviar la alerta al correo electronico en todos los TF's.

que u de antemano

Archivos adjuntos:
afstar.mq4  6 kb
 

por favor necesito ayuda

por favor alguien puede ayudarme con la escritura de códigos quiero desarrollar un robot para una estrategia de scalping que descubrí

 

Chicos,

aquí es un código simple para la alerta en el cruce de la media móvil y el cierre como por la imagen adjunta,

Creo que hay algo mal con la declaración de si, por favor, revise,

gracias de antemano.

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

#property copyright "Non"

#property link "non"

#property indicator_chart_window

extern int Time_Frame = PERIOD_M5;

extern int MA_Period = 20;

extern int MA_Method = MODE_SMA;

extern int MA_applied_to = PRICE_CLOSE;

extern bool Enabled = true;

extern int WhatCorner=2;

int PrevAlertTime=0;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

ObjectDelete("Alart_Condition");

ObjectDelete("Alart_Setup");

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int BarsCount=IndicatorCounted();

if (Enabled == false)

{

string Alart_Condition = "Alart Disabled";

ObjectCreate("Alart_Condition", OBJ_LABEL, 0, 0, 0);

ObjectSetText("Alart_Condition", Alart_Condition , 12, "Comic Sans MS", Red);

ObjectSet("Alart_Condition", OBJPROP_CORNER, WhatCorner);

ObjectSet("Alart_Condition", OBJPROP_XDISTANCE, 1);

ObjectSet("Alart_Condition", OBJPROP_YDISTANCE, 1);

return (0);

}

// if (!Enabled) return (0);

if (Enabled == true)

{

string Alart_Setup = (GetMethodText1(MA_Method)+ (DoubleToStr(MA_Period,0))+")"+ GetMethodText(MA_applied_to)) ;

ObjectCreate("Alart_Setup", OBJ_LABEL, 0, 0, 0);

ObjectSetText("Alart_Setup", Alart_Setup , 12, "Comic Sans MS", Red);

ObjectSet("Alart_Setup", OBJPROP_CORNER, WhatCorner);

ObjectSet("Alart_Setup", OBJPROP_XDISTANCE, 1);

ObjectSet("Alart_Setup", OBJPROP_YDISTANCE, 1);

}

// if close of i < iMA && iMA < close of i-1 && last time alart .. then sell

for (int i=Bars;i>=1;i--)

{

double m = iMA(NULL,Time_Frame,MA_Period,0,MA_Method,MA_applied_to,i);

if ((CurTime() - PrevAlertTime > 20) && Close < m && m < Close)

{

Alert ("Sell " + Symbol());

PlaySound ("alert.wav");

PrevAlertTime=CurTime();

return(-1);

}

// if close of i-1 < iMA && iMA < close of i && last time alart .. then buy

if ( (CurTime() - PrevAlertTime > 20) && Close < m && m < Close )

{

Alert ("Buy "+ Symbol());

PlaySound ("alert.wav");

PrevAlertTime=CurTime();

return(-1);

}

}

//----

//----

return(0);

}

string GetMethodText1(int MA_Method)

{ switch(MA_Method)

{

case 0 : return("SMA("); break;

case 1 : return("EMA("); break;

case 2 : return("SMMA("); break;

case 3 : return("LWMA("); break; }

}

string GetMethodText(int MA_applied_to)

{

switch(MA_applied_to)

{case 0: return("C"); break; // Close

case 1: return("O"); break; // Open

case 2: return("H"); break; // High

case 3: return("L"); break; } // Low

}

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

Archivos adjuntos:
q.gif  10 kb
 

Ayuda con la secuencia de comandos

Hola...

Estoy completo novato en la codificación de este así que me preguntaba si alguien podría decir lo que está mal con este script ...

Sigo recibiendo un mensaje de error 4109 ERR_TRADE_NOT_ALLOWED.. en MT4 es "Invalid price 1.48770000 for OrderSend function" Pero parece que no puedo averiguar por qué... Así que por favor ayúdame aquí...

int start()

{

double High1;

double Low1;

double TP = 50;

double SL = 50;

int Lots = (((AccountBalance()/15)/50)/10);

//----

{

High1 = iHigh(NULL, PERIOD_D1, 0);

Low1 = iLow(NULL, PERIOD_D1, 0);

double Buy = High1*Point;

double Sell= Low1*Point;

Print(Buy);

Print(Sell);

}

//----

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,Buy,NULL,Ask-SL*Point,Ask+TP*Point);

OrderSend(Symbol(),OP_SELLSTOP,Lots,Sell,3,Bid+SL*Point,Bid-TP*Point);

Alert (GetLastError());

}

//----

return(0);

}
 

Ayuda

Al menos ahora he resuelto mi problema de comercio no permitido...

Pero ahora sigo recibiendo un error de"paradas inválidas"... ¿alguien que pueda iluminarme aquí...? No entiendo realmente lo que está mal aquí ...

Gracias de antemano...

int start()

{

double High1;

double Low1;

int TP = 50;

int SL = 50;

int Lots = (((AccountBalance()/15)/50)/10);

//----

{

High1 = iHigh(NULL, PERIOD_D1, 0);

Low1 = iLow(NULL, PERIOD_D1, 0);

Print(High1);

Print(Low1);

}

//----

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,High1,NULL,Ask-SL*Point,Ask+TP*Point);

OrderSend(Symbol(),OP_SELLSTOP,Lots,Low1,NULL,Bid+SL*Point,Bid-TP*Point);

Alert (GetLastError());

}

//----

return(0);

}
 

Restringir el número de operaciones a ....

Estoy tratando de añadir código a un EA que restringirá el número de operaciones que hace por día a sólo dos (2). Sólo UNA operación larga y UNA corta por día. Este es el código que tengo hasta ahora, pero en una prueba posterior no está funcionando.

¿Me pueden ayudar?

datetime LongTrade=0;

datetime ShortTrade=0;

if(countOrders(OP_BUY,magic)==0 && LongTrade!=iTime(NULL,PERIOD_D1,0))

{

OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-stop_loss*Point,lTP,comment + "lTP",magic);

LongTrade=iTime(NULL,PERIOD_D1,0);

return(0);

}

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

if(countOrders(OP_SELL,magic)==0 && ShortTrade!=iTime(NULL,PERIOD_D1,0))

{

OrderSend(Symbol(),OP_SELL,lots,Bid,0,Ask+stop_loss*Point,sTP,comment + "sTP",magic);

ShortTrade=iTime(NULL,PERIOD_D1,0);

return(0);

}

GRACIAS.

 
ForExTyro:
Estoy intentando añadir código a un EA que restrinja el número de operaciones que realiza por día a sólo dos (2). Sólo UNA operación larga y UNA corta por día. Este es el código que tengo hasta ahora, pero en una prueba posterior no está funcionando.

Reemplazar

datetime LongTrade=0;

datetime ShortTrade=0;

a

static datetime LongTrade=0;

static datetime ShortTrade=0;

 

Ayuda con este EA y el indicador por favor

Im un Newbe así que Hola, como se puede ver Im tener ninguna suerte con esto.

Tengo este indicador (Histograma / mira hacia atrás 300 bares, pero repinta mucho. Si alguien me puede sugerir un indicador que no haga el mismo trabajo, si me pueden ayudar sería fantástico.

Saludos CharlieC

histoind.mq4

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 LawnGreen

string gs_unused_124 = "";

bool gi_unused_132 = FALSE;

extern int RIESGO = 3;

extern int CountBars = 300;

double g_ibuf_144[];

double g_ibuf_148[];

int init() {

IndicatorBuffers(2);

SetIndexStyle(0, DRAW_ARROW);

SetIndexArrow(0, 234);

SetIndexStyle(1, DRAW_ARROW);

SetIndexArrow(1, 233);

SetIndexBuffer(0, g_ibuf_144);

SetIndexBuffer(1, g_ibuf_148);

Comentario();

return (0);

}

int inicio() {

int li_12;

double ld_52;

double ld_60

double ld_68

double ld_76

doble ld_84;

doble ld_92

double ld_100;

double lda_108[50000];

SetIndexDrawBegin(0, Bares - CountBars + 11 + 1);

SetIndexDrawBegin(1, Bares - CountBars + 11 + 1);

int l_ind_counted_8 = IndicadorContado();

int li_20 = RIESGO * 2 + 3;

double ld_36 = RISK + 67;

double ld_44 = 33 - RISK;

int l_period_24 = li_20;

if (Bars <= 12) return (0);

si (l_ind_counted_8 < 12) {

for (int li_0 = 1; li_0 <= 0; li_0++) g_ibuf_144[CountBars - li_0] = 0.0;

for (li_0 = 1; li_0 <= 0; li_0++) g_ibuf_148[CountBars - li_0] = 0.0;

}

for (int li_4 = CountBars - 11 - 1; li_4 >= 0; li_4--) {

li_12 = li_4;

ld_76 = 0.0

ld_84 = 0,0;

for (li_12 = li_4; li_12 <= li_4 + 9; li_12++) ld_84 += MathAbs(High[li_12] - Low[li_12]);

ld_76 = ld_84 / 10,0;

li_12 = li_4;

ld_68 = 0;

while (li_12 < li_4 + 9 && ld_68 < 1,0) {

si (MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2,0 * ld_76) ld_68 += 1,0;

li_12++;

}

si (ld_68 >= 1,0) ld_92 = li_12;

si no, ld_92 = -1;

li_12 = li_4;

ld_68 = 0;

while (li_12 < li_4 + 6 && ld_68 < 1.0) {

if (MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4,6 * ld_76) ld_68 += 1,0;

li_12++;

}

si (ld_68 >= 1,0) ld_100 = li_12;

si no, ld_100 = -1;

si (ld_92 > -1,0) l_period_24 = 3;

si no l_period_24 = li_20;

si (ld_100 > -1,0) l_period_24 = 4

si no l_period_24 = li_20;

ld_52 = 100 - MathAbs(iWPR(NULL, 0, l_period_24, li_4));

lda_108[li_4] = ld_52;

g_ibuf_144[li_4] = 0;

g_ibuf_148[li_4] = 0;

ld_60 = 0;

si (ld_52 < ld_44) {

for (int li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {

}

if (lda_108[li_4 + li_16] > ld_36) {

ld_60 = Alto[li_4] + ld_76 / 2,0;

g_ibuf_144[li_4] = ld_60;

}

}

si (ld_52 > ld_36) {

for (li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {

}

if (lda_108[li_4 + li_16] < ld_44) {

ld_60 = Low[li_4] - ld_76 / 2.0;

g_ibuf_148[li_4] = ld_60;

}

}

}

return (0);

}

Archivos adjuntos:
histoind.mq4  3 kb
 

CharlieC

Ya que estoy en ello, ¿puede alguien poner una alerta de sonido en él también (Darn Cheeky Ay, para un Newbeeee) estas cosas te hace hacer cosas divertidas

Lo siento

CharlieC

Razón de la queja: