Ayuda para programar sencillo script

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Ayuda para programar sencillo script

Mensaje por gifto »

Hola buenos días a todos:

Me gustaría si alguien por favor, me puede hacer un script que haga la martingala automáticamente. ( si hace falta puedo pagarle, no quiero abusar de nadie )
Creo que es un script que podría ayudar a mucha gente, yo lo estoy usando manualmente y me va muy bien, pero me iría bien un script, porque no puedo estar las 24 horas delante del pc.

Pongo una breve descripción de lo que me gustaría que hiciera.
Yo abro una posición manualmente, por ejemplo:
Eur/usd a 1,300 y entro con 0,2 lotes
- El script me ponga un take profit automático de 25 pips por encima. Si lo toca perfecto y se cierra la operación.
- Si el precio se va en contra 25 pips, me abra otra posición automáticamente con el doble del lote, es decir en este caso 0,4 lotes, y que me baje el take profit de la primer operación en 25 pips también.
Me gustaría que vaya haciendo esto hasta conseguir 25 pips.
Si pudiera ser me gustaría que se pudiera modificar el numero de pips, es decir por ejemplo cambiar 25 y que sean 20 por ejemplo, y que también se le pueda modificar el numero máximo de operaciones que abra como mucho, es decir que le pueda decir que como mucho abra 6 operaciones o 7, si llegadas a la operación numero 6 vuelve a perder los 25 pips, que salte un stop y me saque de todas las operaciones.
La primera entrada a la operación la haría yo manualmente, y después me gustaría ejecutar el script, para que salga el solo.

Mi email por si es necesario por algo es: [email protected].

Si alguien me lo quiere programar, si es necesario puedo pagarle.

Muchas gracias
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Ayuda para programar sencillo script

Mensaje por Gamelu »

No se si es para metatrader, pero podrias meter las ordenes a mano, buylimit o lo que sea(despues de meter 5 ordenes y una entrada manual, orderstotal()=6, ahora ejecutarias el expert), y cuando entre las pendientes y las abiertas, el total de ordenes sean menor a 6 que te cierre todo, osea, cuando la sexta posicion llegara a su stop losss, ordertotal() serian 5 y el resto se cerrarian automaticamente....
Ahi tienes el simple codigo, te falta buscar el script de closeall y pegarlo, donde te he puesto en el codigo
if(6>OrdersTotal( ))
{
//Pega aqui el codigo de close all
}
, ahora mismo no lo tengo a mano, pruebalo te puede funcionar, tendrias que calcular las entradas para las 6 y con poner el stop a la sexta entrada, si toca se cerrarian todas seguido
(todo en un if, jojo,a ver si chuta pruebalo)
Saludos

Código: Seleccionar todo

//+------------------------------------------------------------------+
//|                                                  martingaleo.mq4 |
//|                                                           Gamelu |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Gamelu"
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(6>OrdersTotal( ))
   {
   //Pega aqui el codigo de close all
   } 

//----
   return(0);
  }
//+------------------------------------------------------------------+
P.D: int OrdersTotal( )
Returns market and pending orders count.
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Re: Ayuda para programar sencillo script

Mensaje por gifto »

Hola:

Muchas gracias por contestar, eres muy amable.

En este codigo que me has enviado, como sabe el script este cuando tiene que abrir una operacion nueva ??

Lo tendria que poner en alguna parte ??

Muchissimas gracias
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Ayuda para programar sencillo script

Mensaje por Gamelu »

Codico completo:

Código: Seleccionar todo

//+------------------------------------------------------------------+
//|                                                  martingaleo.mq4 |
//|                                                           Gamelu |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Gamelu"
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
     if(6>OrdersTotal( ))
   {
   CierraTodas();
   } 

//----
   return(0);
  }
//+------------------------------------------------------------------+

void CierraTodas()
{
  int total = OrdersTotal();
  for(int i=total-1;i>=0;i--)
  {
    OrderSelect(i, SELECT_BY_POS);
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
    
    if(result == false)
    {
      Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
  }
}
Por lo que he entendido, la primera entrada la haces tu a mano, ok, el resto las tienes que meter como ordenes pendientes, tipo buylimit, y solo entraran al mercado al precio que tu les dices(configurar el tamaño de cada posicion para la martingala), cuando ya has metido una en mercado, y configurado 5 pending orders, esa sera tu martingala, pones el expert advisor en marcha, a la ultima pending order le tienes que poner un stoploss, y cuando lo toque esta, se cerraran todas automaticamente.
Es simple, saludos
Última edición por Gamelu el 30 Ago 2010 11:15, editado 2 veces en total.
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Re: Ayuda para programar sencillo script

Mensaje por gifto »

Hola Gamelu

Esto que me comentas, creo que si que podría funcionar.
Pero lo que me interesa mas, es poder hacer automáticamente, ya que no puedo estar siempre delante del pc, que cuando se abra una operación, la anterior se bajara el take profit automáticamente, ya que sino la martingala no tiene gracia.
Y me gustaría un script o un ea, que me haga exactamente esto, que me cierre las operaciones que con tu código supongo que funcionaria, pero a parte me gustaría que me moviera el take profit de las operaciones ya abiertas en caso de abrir una de nueva.

Muchas gracias por tu interés.

Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Ayuda para programar sencillo script

Mensaje por Gamelu »

A ver, se puede "apañar" de la siguiente manera con lo que tenemos, metes las ordenes con su respectivo take profit calculado.. ejemplo:
1- compra 1.2560 takeprofit 1.2670 lotes 0.1
2- compra 1.2550 takeprofit 1.2665 lotes 0.2
3- compra 1.2540 takeprofit 1.2660 lotes 0.3
4- compra 1.2530 takeprofit 1.2655 lotes 0.5
5- compra 1.2520 takeprofit 1.2650 lotes 0.8
6- compra 1.2510 takeprofit 1.2640 lotes 1.3 stop en 1.2640

Eso lo metes a mano, la serie de la martingala de 6, es un ejemplo, no estan bien calculados los profit, pero el scritp en cuando llegase uno a su objetivo cierra las operaciones, y si llega al stop de las 6 operación tambien...
Lo que quieres hacer, lo puedes hacer, y es bastante versatil,
Saludos
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Re: Ayuda para programar sencillo script

Mensaje por gifto »

Hola Gamelu y a todos:

Voy a probarlo y os digo alguna cosa.
Mañana lo intento configurar a ver si se hacerlo ya que en esto de programación soy novato total.
Entre mañana y pasado os digo si funciona.

Muchas gracias !!!!!!!!
Avatar de Usuario
fxvision
Mensajes: 24
Registrado: 29 Mar 2010 19:46

Re: Ayuda para programar sencillo script

Mensaje por fxvision »

gifto, Ingresa a los expertos en la martingala http://www.forexgala.com/foroforex/showthread.php?t=4 ahí encontraras lo que buscas.
Te los recomiendo, ya que vi que su sistema es casi perfecto. gana todos los días es muy bueno sin duda alguna. pero no esta de más que ingreses ahí y preguntes sobre lo que deseas saber.

Saludos Gifto
Visión FX
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Re: Ayuda para programar sencillo script

Mensaje por gifto »

Hola fxvision.

Esto de forexgala, que es como un broker ???
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Re: Ayuda para programar sencillo script

Mensaje por gifto »

Hola Gamelu.

Tengo una pequeña duda:
El codigo siguiente que significa ??

if(6>OrdersTotal( ))
{
CierraTodas();
}

que si hay mas de 6 operaciones se cerraran todas ?? entonces para que hayan mas de 6 se tiene que abrir una septima operacion ?? si se abre esta septima, al mismo momento de abrirla el ea la cerrara no ??

Es que estoy un poco liado, ya que soy muy novato en este tema.
Perdonad si la pregunta es muy tonta.
Saludos y muchas gracias !!!!!!!
Avatar de Usuario
fxvision
Mensajes: 24
Registrado: 29 Mar 2010 19:46

Re: Ayuda para programar sencillo script

Mensaje por fxvision »

[quote="gifto"]

Son unos gestores de Futuros, Opciones, CFDs y Forex, y actualmente están trabajando con una cuenta PAMM con la estrategia Martingala, pero de hecho no es sólo una martingala, es mucho más si sigues sus operaciones a tiempo real podrás entender de este sistema. Te he sugerido estos ya que tienen un buen tiempo en el mercado y hasta la fecha tienen muy buenos rendimientos a mínimos de riesgo.. pero aquí hay un detalle, que solo obtienen durante el mes entre un 4 -5%, para mi me sirve.

Quizás ellos te ayuden Gifto.

Saludos
Visión FX
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Ayuda para programar sencillo script

Mensaje por Gamelu »

Buenas gifto,
La que significa es al revés, se le así:
Si 6 es mayor que el total de órdenes entonces cierra todas. Ósea dicho de otro modo, en el momento que el total de ordenes sea igual a 5 cierra todas, por que las ordenes totales en teoría van a ser 6. Podríamos expresarlo también así:
if(6!= Orderstotal())
En este caso dice, si el total de ordenes es diferente a 6, cierra todo, también te valdría.

Recuerda que primero tienes que tener en tu panel de ordenes las 6 (entre las pendientes y las que ya estén en mercado), y entonces puedes activar el expert, por que si no el EA te las cerraría todas, si no son 6, así funciona la programación.
Saludos
gifto
Mensajes: 7
Registrado: 28 Ago 2010 18:35

Re: Ayuda para programar sencillo script

Mensaje por gifto »

Hola, buenos dias.

Muchas gracias Gamelu, he probado el codigo que me pasastes, y ha funcionado a la perfeccion.

Eres un genio.

Muchas gracias !!!!!
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”