¿Cómo codificar? - página 164

 
MiniMe:
Gracias Ralph pero me faltaría el swap , y quiero incluir el beneficio/pérdida del swap en el cierre de la decisión de las órdenes

Pero el primer bucle acumula tanto el beneficio como el swap, ¿no es así?

Estaba pensando que la cifra de la Equidad es la que se compara con lo que significarían 5 pips para los lotes abiertos.... y entonces no es necesario calcular realmente el precio de equilibrio.

 

Hola Ralph

Tengo 3 variables

OrdLots ; en lotes y representan los lotes abiertos pero este omitirá el swap

Equity ; esta es la pérdida total de beneficios y esta incluirá el swap

MinPro ; este es mi take profit que es 5 pips + el punto de equilibrio

No puedo usar OrdLots para encontrar el beneficio/pérdida en pips ya que esto omitirá el swap

No puedo usar Equity para encontrar el beneficio/pérdida en pips porque para eso necesito saber cuántos lotes se usan pero mi cálculo para los lotes se salta el swap

De alguna manera necesito usar una función de ambos OrdLots y Equity para saber cuántos pips están abiertos

Puede que haya algo preparado en MT4 que relacione el balance de la cuenta o la equidad de la cuenta pero no he encontrado nada

La solución que propones con agradecimiento encontrará el beneficio/pérdida en pips sin considerar el swap, pero ya he puesto una función para eso... Quiero salir a 5 pips por encima del breakeven con el swap

 

Comparar tiempos y hacer un bucle

Hola a todos.

Soy muy inexperto con el lenguaje Mql4. Quiero comparar el openordertime con un var Int y si meats una cierta cantidad de tiempo y las órdenes están todavía abiertas quiero aumentar la cantidad de órdenes abiertas permitidas para que pueda tratar de llegar a una situación de Breakeven o tal vez una situación de beneficio y luego cerrar todas las órdenes abiertas al mismo tiempo y establecer las órdenes máximas de nuevo a su máximo permitido originalmente. Puede alguien ayudarme o mostrarme un código en otro post que ya haga algo como esto.

Estoy usando este código pero parece que no funciona.

// Si las órdenes están abiertas durante mucho tiempo, cerrar las órdenes y tratar de romper el equilibrio

void TimeProtection()

{

int totalorders = OrdersTotal();

for(int i=totalórdenes-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * CallTime;

si (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

flag = 1;

romper;

}

}

}

return;

}

Realmente me gustaría que me ayudaran en esto.

Gracias

 
MiniMe:
Hola Ralph

Tengo 3 variables

OrdLots ; en lotes y representa los lotes abiertos pero este omitirá el swap

Equity ; esta es la pérdida total de beneficios y esta incluirá el swap

MinPro ; este es mi take profit que es 5 pips + el punto de equilibrio

No puedo usar OrdLots para encontrar el beneficio/pérdida en pips ya que esto omitirá el swap

No puedo usar Equity para encontrar la ganancia/pérdida en pips porque para eso necesito saber cuántos lotes se usan pero mi cálculo para los lotes salta el swap

De alguna manera necesito usar una función de ambos OrdLots y Equity para saber cuántos pips están abiertos

Puede que haya algo listo en MT4 que relacione el balance de la cuenta o la equidad de la cuenta pero no encontré nada

La solución que propones con las gracias encontrará el beneficio/pérdida en pips sin considerar el swap, pero ya he puesto una función para eso... Quiero salir a 5 pips por encima del punto de equilibrio con el swap

Ah... tal vez entiendo... Así que si usted también acumula ganancias sin swap en EquityNoSwap en el primer bucle, entonces podría usar eso en lugar de Equity en mi declaración "if". (?) Porque entonces la prueba sería "¿hay 5 pips de beneficio en relación con el precio de equilibrio+swap?" que en realidad es lo mismo que "¿hay 5 pips de beneficio ignorando el swap?" (o tal vez todavía no lo entiendo)

Básicamente "beneficios+swap" es "breakeven" relativo, y por lo tanto "beneficios" es "breakeven+swap" relativo, y "beneficios" se distribuye sobre "OrdLots". En definitiva, todavía no es necesario determinar un precio de pips real para el "breakeven".

 

Mejor idea de codificación de EA

El objetivo de este artículo es que los usuarios de la web sepan que el indicador es muy fiable y que si alguien puede hacer un EA para él, es casi el santo grial. Es un indicador muy fiable y si alguien pudiera hacer un EA para él.es casi un santo grial.tia.

El principio básico es:

1.abrir posición de venta cuando aparezca la flecha roja,

2abrir posición de compra cuando aparezca la flecha blanca y cerrar automáticamente todas las posiciones de venta.

3. Aplicar para cualquier marco de tiempo.

4.no stop loss,

5.add función de la orden.

Espero la respuesta.

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

//| IINWMARROWS.mq4 |||| Basado en EMA_CROSS.mq4

//| Basado en EMA_CROSS.mq4

//| Copyright ?2006, MetaQuotes Software Corp. |

//| Software de comercio de divisas: Plataforma de Comercio Forex MetaTrader 4

//| Última modificación por Iin Zulkarnain

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

#property copyright "Copyright ?2006, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

//----

#property indicator_chart_window

#property indicator_buffers 2

#property indicador_color1 Blanco

#property indicator_color2 Rojo

#property indicator_width1 2

#property indicator_width2 2

//----

double CrossUp[];

double CrossDown[];

extern int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3;

extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3;

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

//| Función de inicialización de los indicadores personalizados

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

int init()

{

//---- indicadores

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

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

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

int inicio()

{

int límite, i, contador;

double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;

double Rango, AvgRange;

int barras_contadas=IndicadorContado();

//---- comprobar posibles errores

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

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

if(counted_bars>0) counted_bars--;

//----

limit=Barras_contadas;

for(i=0; i<=limit; i++)

{

contador=i;

Rango=0;

AvgRange=0;

for(contador=i ;contador<=i+9;contador++)

{

AvgRange=AvgRange+MathAbs(Alto[contador]-Bajo[contador]);

}

Range=AvgRange/10;

fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);

slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);

if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))

{

CrossUp=Low - Range*0.5;

}

else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))

{

CrossDown=Alto + Rango*0,5;

}

}

return(0);

}

//+------------------------------------------------------------------+este hilo para aprender a codificar correctamente,estoy aprendiendo a codificar para

 

A los grandes y valientes codificadores

¿puede alguien añadir posiciones máximas para este EA

o dejar que se ejecute una sola posición?

gracias de antemano

Archivos adjuntos:
reverse_1.mq4  16 kb
 

Puesto eliminado

 

pregunta fuera de tema

¿Es posible husmear los datos de un programa de código abierto?

Tienen un lenguaje de programación muy pobre (similar al de Metastock pero más pobre, no se permite la función ''anterior'').Sólo permiten sus propios indicadores y tienen el monopolio de los datos (por la ley).İt no es posible escribir una extensión DLL para conseguir que mis indicadores se ejecuten en tiempo real enviroment.I han oído algo como ''puerto función de escucha en excell'' pero no tengo idea de lo que es.

Todos los programadores responder muy apreciado.

 

Orden abierta para un par diferente

Hola,

¿hay alguna manera de abrir una orden para un par de divisas diferente.

Por ejemplo, el EA está funcionando en un gráfico EURUSD, pero quiero abrir una orden para USDJPY.

¿Es esto posible?

Gracias de antemano

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0, "Com",0,0,CLR_NONE);

Razón de la queja: