¿Cómo codificar? - página 268

 

otro problema

así que revisé esa función cruzada con un MA_04_1H > MA_14_1H en lugar de la cruz == 1 , y así sucesivamente... y normalmente arregló el problema... Pero me preguntaba cómo puedo filtrar operaciones como comprar, cerrar, comprar, cerrar, comprar, cerrar, vender, cerrar,... Se está comiendo el saldo centavo a centavo como -0,17,-0,18,-0,21,-0,15, y así sucesivamente....

ahora estoy tratando de implementar algo que si compro un lote pequeño y se beneficia, cierro esa orden y abro una nueva más grande hasta que se produzca el cruce... pero el problema anterior no lo puedo resolver...

¿alguien sabe como filtrar esas pequeñas operaciones inútiles?

 

necesito afl para este código

Hola ,

necesito el afl para este código

#property ventana_de_separación

#property indicador_buffers 8

#property indicador_color1 C'0x66,0xB3,0xFF'

#property indicator_color2 DodgerBlue

#propiedad indicador_color3 C'0x00,0x67,0xCE'

#propiedad indicator_color4 Blanco

#propiedad indicator_color5 C'0xFF,0x33,0x33'

#propiedad indicator_color6 C'0xC4,0x00,0x00'

#propiedad indicator_color7 C'0x8C,0x00,0x00'

#propiedad indicador_color8 C'0x82,0x24,0x00'

extern int Periode = 30;

extern bool invert_strength = FALSE;

extern string CurrencyPair = "";

extern string NOTE0 = "introduzca currencypair en mayúsculas";

extern string NOTE1 = "como EURUSD";

extern string NOTE2 = "dejar vacío para el símbolo actual";

extern string NOTE3 = "si tiene una cuenta mini";

extern string NOTE4 = "añada un \"m\", por ejemplo, EURUSDm ";

double g_ibuf_132[];

double g_ibuf_136[];

double g_ibuf_140[];

double g_ibuf_144[];

double g_ibuf_148[];

double g_ibuf_152[];

double g_ibuf_156[];

double g_ibuf_160[];

double gda_unused_164[];

int init() {

SetIndexBuffer(0, g_ibuf_132);

SetIndexBuffer(1, g_ibuf_136);

SetIndexBuffer(2, g_ibuf_140);

SetIndexBuffer(3, g_ibuf_144);

SetIndexBuffer(4, g_ibuf_148);

SetIndexBuffer(5, g_ibuf_152);

SetIndexBuffer(6, g_ibuf_156);

SetIndexBuffer(7, g_ibuf_160);

SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY, 5, C'0x66,0xB3,0xFF');

SetIndexStyle(1, DRAW_HISTOGRAM, EMPTY, 5, DodgerBlue);

SetIndexStyle(2, DRAW_HISTOGRAM, EMPTY, 5, C'0x00,0x67,0xCE');

SetIndexStyle(3, DRAW_HISTOGRAM, EMPTY, 5, White);

SetIndexStyle(4, DRAW_HISTOGRAM, EMPTY, 5, C'0xFF,0x33,0x33');

SetIndexStyle(5, DRAW_HISTOGRAM, EMPTY, 5, C'0xC4,0x00,0x00');

SetIndexStyle(6, DRAW_HISTOGRAM, EMPTY, 5, C'0x8C,0x00,0x00');

SetIndexStyle(7, DRAW_HISTOGRAM, EMPTY, 5, C'0x82,0x24,0x00');

for (int li_0 = 0; li_0 < 8; li_0++) SetIndexLabel(li_0, NULL);

if (CurrencyPair == "") CurrencyPair = Symbol();

if(iClose(CurrencyPair, 0, 0) == 0.0) CurrencyPair = Symbol();

IndicatorShortName(CurrencyPair + "(" + Periode + ")");

return (1);

}

int deinit() {

return (0);

}

int inicio() {

double ld_8;

int li_0 = IndicadorContado();

si (li_0 < 0) devuelve (-1);

si (li_0 > 0) li_0--;

for (int li_4 = Bares - li_0; li_4 >= 0; li_4--) {

ld_8 = iRSI(CurrencyPair, 0, Periode, PRICE_CLOSE, li_4);

si (invert_strength == TRUE) ld_8 -= 2,0 * (ld_8 - 50,0);

si (ld_8 <= 45,0) {

si (ld_8 42,0) drawblock(0, 0, 0, 0, 5, 0, 0, 0, li_4);

si no {

si (ld_8 38.0) drawblock(0, 0, 0, 0, 0, 5, 0, 0, li_4);

si no {

si (ld_8 35.0) drawblock(0, 0, 0, 0, 0, 5, 0, li_4)

else drawblock(0, 0, 0, 0, 0, 0, 5, li_4);

}

}

} else {

si (ld_8 >= 55.0) {

if (ld_8 > 55.0 && ld_8 < 57.0) drawblock(5, 0, 0, 0, 0, 0, 0, li_4);

si no {

if (ld_8 >= 58.0 && ld_8 < 60.0) drawblock(0, 5, 0, 0, 0, 0, 0, li_4)

else drawblock(0, 0, 5, 0, 0, 0, 0, 0, li_4);

}

} else drawblock(0, 0, 0, 5, 0, 0, 0, 0, li_4);

}

}

return (0);

}

void drawblock(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20, int ai_24, int ai_28, int ai_32) {

g_ibuf_132[ai_32] = ai_0;

g_ibuf_136[ai_32] = ai_4;

g_ibuf_140[ai_32] = ai_8;

g_ibuf_144[ai_32] = ai_12;

g_ibuf_148[ai_32] = ai_16;

g_ibuf_152[ai_32] = ai_20;

g_ibuf_156[ai_32] = ai_24;

g_ibuf_160[ai_32] = ai_28;

}

o por favor explíqueme la lógica detrás de esto

gracias

kr

 

como NO comprar,cerrar,comprar,cerrar o vender,cerrar,vender,cerrar...

por favor... realmente tengo que saber como evitar esas operaciones no rentables...

 

Ayuda urgente. Convertir un indicador en un EA (Auto Trader)

Soy programador pero novato en la programación de mql4.

Estoy tratando de crear un EA (auto trader) con respecto a un indicador.

Adjunto el indicador. Este indicador da buenas señales de tendencia.

Ahora quiero hacer un comerciante de automóviles con respecto a las señales de tendencia.

Algoritmo:

==================================================

Si SEÑAL DE VENTA entonces abrir orden de VENTA y cerrar orden de COMPRA anterior

Si la SEÑAL ES ALTA, entonces abra una orden de COMPRA y cierre la orden de VENTA anterior.

continuar ....

==================================================

Quiero pasar del trading manual al auto trading en relación a este indicador.

¿Puede alguien ayudarme? He intentado pero no obtener el resultado

Creo que sería un buen auto trader. Por favor, ayúdeme.

Archivos adjuntos:
 

Una simple pregunta, no encuentro la respuesta...

¿Alguien puede decirme por qué funciona esto?

precio = MarketInfo("GBPJPY",MODE_ASK);

y esto no (cuando el símbolo es un array de cadenas y la 9ª entrada es "GBPJPY"):

price = MarketInfo(symbol[9],MODE_ASK);

??

 
TomthebombNL:
¿Puede alguien decirme por qué esto funciona?

precio = MarketInfo("GBPJPY",MODE_ASK);

y esto no (cuando el símbolo es un array de cadenas y la 9ª entrada es "GBPJPY"):

price = MarketInfo(symbol[9],MODE_ASK);

??

Por la información que has presentado, estoy 100% seguro de que esto debería funcionar, de hecho, acabo de hacer una prueba rápida para comprobarlo. Debe haber algo más que está mal en tu código.

 
codersguru:
jdun,

La forma más fácil de invertir el código (vender para comprar y comprar para vender) es cambiando:

if(signal0 < signal1 ) GlobalVariableSet("TM0",1);

if(signal0 > signal1) GlobalVariableSet("TM0",0);[/CODE]

To:

[CODE]if(signal0 > signal1 ) GlobalVariableSet("TM0",1);

if(signal0 < signal1) GlobalVariableSet("TM0",0);

¡bien! Gracias por esta información.

 

Creo que lo más probable es que no hayas definido tu matriz como cadena.

 

Si "GBPJPY" es el noveno elemento de un array su índice en notación mql es 8 y no 9 (en notación mql el primer elemento de un array tiene índice 0), por lo que en ese caso deberías usar esta forma :

price = MarketInfo(symbol[8],MODE_ASK);

¿Tal vez ese sea el problema?

TomthebombNL:
¿Puede alguien decirme por qué funciona esto?

precio = MarketInfo("GBPJPY",MODE_ASK);

y esto no lo hace (cuando el símbolo es un array de cadenas y la 9ª entrada es "GBPJPY")

price = MarketInfo(symbol[9],MODE_ASK);

??
 

He acertado con el número, pero quizás me he equivocado al explicarlo, es la décima entrada y para conseguirlo he utilizado el símbolo[9]. Extrañamente esto funciona:

high = iHigh(symbol[9], ...)

que me da el alto. Mi declaración es

string symbol[] o debería ser como string[] symbol[] ?

si intento imprimirlo con Alert(symbol[9]) también da un espacio vacío, un problema bastante extraño... pero de todas formas gracias por tus sugerencias.

Este es mi código, uso el broker alpari de 5 dígitos (la alerta me da cero por alguna razón):

double high,low,price,distance, plaats;

int i,j,ticket, waarde;

string symbol[];

string zoekplaatssymbol;

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

//| función de inicialización del experto ||

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

//| función de inicio experto ||

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

int inicio()

{

//----

double usd=0.0

double chf=0.0

double eur=0.0

double gbp=0.0

double aud=0.0

doble cad=0,0

doble jpy=0,0

double nzd=0.0;

symbol[21] = {"USDCHF" , "EURUSD" , "GBPUSD" , "USDJPY" , "AUDUSD" , "USDCAD" , "EURGBP" , "EURCHF" , "EURJPY" , "GBPJPY" , "GBPCHF" , "EURAUD" , "NZDUSD" , "CHFJPY" ,

"EURCAD" , "AUDCAD" , "AUDJPY" , "CADJPY" , "EURNZD" , "AUDNZD" , "NZDJPY"};

int total=Total de pedidos();

//zoekplaatssymbol = symbol[9];

// waarde = zoekplaats(zoekplaatssymbol);

precio = MarketInfo(símbolo[9],MODE_ASK);

Alert(price);

}

Razón de la queja: