¿Cómo codificar? - página 187

 

Sí, quiero hacer 3 pasos

Ejemplo:

Llegar a 15 y volver a 10

Llegar a 30 y volver 15

Llegar a 45 y volver a 15

O cerrar en el stop loss.

Voy a tomar una foto y tratar de explicar mejor.

 
fosgate_r:
Esto es algo nuevo para mí.

Entonces, el cierre de la operación perdedora siempre tiene que esperar hasta que rebote ¿verdad?

¿Y si no rebota?

¿Cerraremos en el SL inicial?

Gracias por ahora, ya lo hice, ahora tratando de optimizar para obtener buenos resultados con esta protección de la pérdida.

 

Estoy tratando de encontrar información sobre el trazado de una línea, al igual que el indicador RSI, por ejemplo.

Sé que implicará una matriz de algún tipo, pero no estoy teniendo suerte para averiguar qué grupo de código hará que esto suceda.

 

tampón indicador

SPACECHIMP:
El objetivo de este artículo es dar a conocer los resultados de las pruebas realizadas en el marco del proyecto de la Comisión Europea.

Por favor, lea este artículo

Lenguaje MQL4 para novatos. Indicadores personalizados (Parte 1) - Artículos MQL4

 
smb1970:
Hola amigos,

No sé si alguien está familiarizado con Forex Made-EZ por George Smith.

Actualmente estoy revisando su trabajo y me pregunto si alguien ha codificado un indicador para el oscilador Oscar que él utiliza.

La fórmula es

A = el máximo más alto de las últimas ocho barras (incluyendo esta)

dejemos que B = el mínimo de las últimas ocho barras (incluyendo esta)

dejemos C = el precio de cierre de la barra actual

dejemos que X = la cifra anterior del oscilador (Oscar)

El oscilador "aproximado" de hoy es igual a (C-B) dividido por (A-B) por 100.

A continuación "suavizamos" nuestra cifra aproximada (llamémosla Y) de la siguiente manera

Número del oscilador final = ((X dividido por 3) por 2), más (Y dividido por 3).

Si alguien ha codificado esto o puede codificar esto sería muy apreciado.

Saludos Steve

He intentado codificar esto yo mismo. ¿Alguien podría comentar si esto hace lo que creo que hace? Los valores no parecen coincidir con lo que hacen si calculo manualmente las cifras. Además, sólo comienza a partir del momento en que se coloca el indicador. Me gustaría que mostrara también los valores históricos.

#property indicador_separar_ventana

#property indicador_buffers 1

#property indicador_color1 Rojo

//---- buffers

double ExtMapBuffer1[];

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

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

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

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

string nombre_corto = "Indicador Oscar";

IndicatorShortName(short_name);

//----

return(1);

}

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

//| Función de desinicialización del indicador de Custor ||

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

int deinit()

{

return(0);

}

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

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

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

int inicio()

{

int counted_bars=IndicatorCounted();

//---- comprobar posibles errores

if (counted_bars<0) return(-1);

//---- se vuelve a contar la última barra contada

if (counted_bars>0) counted_bars--;

int pos=Barras_contadas;

//---- bucle de cálculo principal

doble x

x=50;

while(pos>=0)

{

double a, b, c, y, osc;

//dejar que A = el máximo más alto de las últimas ocho barras (incluida ésta)

a=Alto;

//dejar que B = el mínimo de las últimas ocho barras (incluida ésta)

b=Bajo;

//let C = el precio de cierre de la barra actual

c = Cierre[pos];

//let X = la cifra anterior del oscilador (Oscar)

/El oscilador "bruto" de hoy es igual a (C-B) dividido por (A-B) por 100.

y=((c-b)/(a-b))*100;

//A continuación "suavizamos" nuestro número aproximado (llamémoslo Y) así:

//Número final del oscilador = ((X dividido por 3) por 2), más (Y dividido por 3).

osc=((x/3)*2)+(y/3);

ExtMapBuffer1[pos]= osc ;

pos--;

}

return(0);

}

Cualquier ayuda se agradece.

Gracias Steve

 

Pregunta... Modo_trades

hola, ¿alguien puede dar un ejemplo de uso de MODE_TRADES?

Gracias.

 

Para smb1970 - esto es :

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

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

#property indicator_maximum 100

#property indicator_minimum 0

//

//

//

//

//

extern int OscPeriod = 8;

extern int OscPrice = PRICE_CLOSE;

double oscBuffer[];

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

//| |

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,oscBuffer);

IndicatorShortName("Osc ("+OscPeriod+")");

return(0);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//

//

//

//

//

for(i=limit; i>=0; i--)

{

double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);

double high = High[ArrayMaximum(High,OscPeriod,i)];

double low = Low[ArrayMinimum(Low,OscPeriod,i)];

//

//

//

//

//

if (high!=low)

double raw = 100.00*(price-low)/(high-low);

else raw = 0.00;

oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;

}

return(0);

}

Pero, echa un vistazo a la imagen también : superior es "Oscar" inferior es Ema(5) de stochastic(8), o para hacerlo aún más simple, en la parte inferior es Stochastic(8,5,1) con la línea de señal establecido en exponencial. Así que "Oscar" es simplemente una línea de señal del estocástico

Archivos adjuntos:
oscar.gif  21 kb
 

Gracias.

¡Gracias mladen, no sólo es muy útil, sino también muy revelador!

 

NewB necesita ayuda con la codificación :-(

Hola a todos,

Estoy en la necesidad de algunos dispares ayuda aquí . Tengo un código que buscará un acuerdo entre diferentes indicadores. Una vez que todos ellos están de acuerdo quiero una manera para que los oficios para entrar en la forma en que lo describió en las imágenes del gráfico. Hasta ahora puedo entrar en la primera operación de "Compra" pero no entra sólo en 1 operación.... sino que entra hasta en 8 operaciones. Y luego, si el mercado va en mi contra entro una "operación de contingencia" donde vuelvo a comprar/vender a pesar de que va en mi contra. Agradecería mucho si alguien pudiera mostrarme cómo debería ser el código correcto

No estoy seguro si estas imágenes se verán pero por si acaso también las tengo como archivos adjuntos.

Este es mi código defectuoso que se supone que ejecuta la operación...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...esto lo detiene después de que se haya colocado 1 orden...pero aún no funciona

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);

execute_trade=0;

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print("Mi ticket es: " , ticket);

{

buy1 = OrderOpenPrice(); //tomando el precio de la 1ª orden y pasándolo a esta variable

// Comment("el precio de apertura de la orden #1 es ", OrderOpenPrice() + " + buy1 + " menor que " + (buy1-0.0030));

si (buy1 >= (buy1-0.0030))

{

//si ( OrdersTotal() <= buy_trade1 ) //esto lo detiene después de que se haya colocado 1 orden.

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);

//ejecutar_comercio=0;

}

} else

Print("OrderSelect devolvió el error de ",GetLastError());

}

 

NewB necesita ayuda con la codificación

Hola a todos,

Estoy en la necesidad de algunos dispares ayuda aquí. Tengo un código que buscará un acuerdo entre diferentes indicadores. Una vez que todos ellos están de acuerdo quiero una manera para que los oficios para entrar en la forma en que lo describió en las imágenes del gráfico. Hasta ahora puedo entrar en la primera operación de "compra" pero no entra sólo en 1 operación.... sino que entra hasta en 8 operaciones. Y luego, si el mercado va en mi contra entro en una "operación de contingencia" donde vuelvo a comprar/vender a pesar de que va en mi contra.Agradecería mucho si alguien pudiera mostrarme cómo debería ser el código correcto

No estoy seguro si estas imágenes se verán pero por si acaso también las tengo como archivos adjuntos.

Foto 1

Imagen 2

Aquí está mi código defectuoso que se supone que ejecuta el comercio...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...esto lo detiene después de que se haya colocado 1 orden...pero aún no funciona

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);

execute_trade=0;

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print("Mi ticket es: " , ticket);

{

buy1 = OrderOpenPrice(); //tomando el precio de la 1ª orden y pasándolo a esta variable

// Comment("el precio de apertura de la orden #1 es ", OrderOpenPrice() + " + buy1 + " menor que " + (buy1-0.0030));

si (buy1 >= (buy1-0.0030))

{

//si ( OrdersTotal() <= buy_trade1 ) //esto lo detiene después de que se haya colocado 1 orden.

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);

//ejecutar_comercio=0;

}

}

si no

Print("OrderSelect devolvió el error de ",GetLastError());

}

Archivos adjuntos:
Razón de la queja: