¿Cómo codificar? - página 313

 

Hola,

¿es posible con el código modificar sólo la orden de compra o venta del símbolo del gráfico activo actual?

Sería muy útil para mí en un script donde utilizo la función WindowsPriceonDropped para abrir la orden.

Gracias

 

...

dasio,

Intenta algo como esto :

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

// do the proccessing you wish here

}

}

dasio:
Hola,

es posible con el código de modificar sólo comprar o vender la orden del símbolo gráfico activo actual?

Será muy útil para mí en un script donde uso la función WindowsPriceonDropped para abrir la orden.

Gracias
 

¿Quién quiere un reto?

Necesito un código para hacer lo siguiente, ver captura de pantalla adjunta. Esto sería el comercio de la compra.

He probado con un bucle for, un lío de condiciones if y ninguno ha dado los resultados que busco.

Parece que es sencillo pero no he conseguido que funcione.

Archivos adjuntos:
maexample.jpg  54 kb
 

Su condición de entrada podría escribirse de forma similar a esta :

double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
Necesito un código para hacer lo siguiente, ver captura de pantalla adjunta. Se trataría de una operación de compra.

He intentado un bucle for, un lío de condiciones if y ninguno ha producido los resultados que estoy buscando.

Parece ser sencillo pero no he podido hacerlo funcionar.
 
mladen:
Su condición de entrada podría ser escrito similar a esto:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

El código que has publicado me daría la señal para la barra que se encuentra a horcajadas de la media móvil. Pero también necesito una forma de entrar en una operación en cualquier barra más allá de la barra straddle hasta 5 barras siempre que no superen la MA+5. La razón por la que no estoy tomando una señal de compra en la barra de straddle es que hay otro indicador que debe mostrar un valor TRUE que puede no ser TRUE en la barra de straddle pero si es TRUE en cualquier barra hasta 5 barras después de la barra de straddle y no ha excedido el límite de MA +5 todavía puedo tomar una operación. No se trata de tomar múltiples operaciones, sólo una por cada configuración.

Lo siguiente es lo que tengo hasta ahora. En este momento sólo estoy marcando las barras elegibles con una flecha debajo, sólo compras. Una vez que tengo que funcionó entonces voy a poner en mi código para ejecutar la orden. Sé que parece simple, pero a menos que me estoy perdiendo algo obvio que no es.

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

double Poin;

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

//| Custom initialization function |

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

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

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

// +

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

int deinit(){

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

En esta captura de pantalla tendría que abortar en la barra 4 porque la barra 3 excede el límite de la MA +5, lo que significa que en la barra 4 tendría que comprobar si la barra 3 excedió el límite de la MA +5, lo hizo así que ese es el final de esta configuración de comercio.

Aquí las 5 barras son elegibles porque ninguna de ellas excedió el límite de la MA +5

Archivos adjuntos:
 

En esta captura de pantalla tendría que abortar en la barra 4 porque la barra 3 excede el límite de la MA +5, lo que significa que en la barra 4 tendría que comprobar si la barra 3 excedió el límite de la MA +5, lo cual es el final de esta configuración comercial.

Aquí las 5 barras son elegibles porque ninguna de ellas excedió el límite de la MA +5

 

...

ciber1

En tus ejemplos, por lo que veo, para poder abortar como describes, también tienes que conocer el futuro (ya que antes de la barra de "abortar" las reglas se aplicaban y devolverían una señal de entrada)

Por otro lado, si intentas probar todas las barras hacia atrás para la condición de entrar, finalmente siempre tendrás una "ruptura de regla" y no podrás entrar en la posición

cyber1:
En esta captura de pantalla tendría que abortar en la barra 4 porque la barra 3 excede el límite de la MA +5, lo que significa que en la barra 4 tendría que comprobar si la barra 3 excedió el límite de la MA +5, lo que hizo es el final de esta configuración comercial.

Aquí las 5 barras son elegibles porque ninguna de ellas superó el límite de la MA +5

 

Cerrar todas las operaciones abiertas EA

¿Puede alguien ayudarme a hacer este EA?

Este EA cerrará todas las operaciones abiertas cuando alcance el objetivo de ganancias y pérdidas.

Cuando se cierra todo, a continuación, iniciar el seguimiento del comercio abierto.

Tengo un talento límite para hacer esto.

Este ea separado del ea principal de cada par.

 

Señal y líneas de resistencia/soporte dinamyc.

¿Me pueden ayudar a traducir este indicador en el idioma de MT4?

a:=(hhv(close,tpr)+llv(close,tpr)+close)/3;

b:=(a1*2)-hhv(close,tpr);

moviendo b:=mov(b,tpr,simple);

c:=(a1*2)-llv(close,tpr);

moviendo c:=mov(c,tpr,simple);

d:=(hhv(cerrar,tpr/2)+llv(cerrar,tpr/2)+cerrar)/3;

moviendo d:=mov(d,tpr/2,simple);

flujo:=(b+c+d)/3;

flujo móvil:=mov(flujo,tpr,simple).

hhv= valor máximo del período (el valor más alto del precio de cierre en el período de tiempo elegido)

llv= valor mínimo del período (el valor más bajo del precio de cierre en el período de tiempo elegido)

tpr= periodo de tiempo (de 1 a lo que se quiera)

mov= media móvil.

¡La salida debe tener "stream" y "moving stream"! Incluso si tiene también "b", "moving b", "c", "moving c", "d" y "moving d" ¡no es algo malo!

Gracias.

Este foro es genial......

Lucmat

Archivos adjuntos:
immagine.jpg  258 kb
Razón de la queja: