[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 750

 
ToLik_SRGV:

Así es, creo que Rustam lo insinuó

Sí, lo he leído después de publicarlo :)
 
Gracias a todos, volveré a trabajar :)
 

NO ENTIENDO POR QUÉ HAY VARIABLES GLOBALES

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool
b,s, 
bs,
ss,
bt,
st;
double 
bl,sl;  
//+------------------------------------------------------------------+

SE UTILIZAN PARA ABRIR ÓRDENES

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(bs==1&&bl==1)
{
    NewOrder1(OP_BUYLIMIT,Lot);

Today=TimeDay(TimeCurrent())
;}

return(0);}

//+------------------------------------------------------------------+
int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;
        }
int tic=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
if(tic<0) {Print(GetLastError());
        }else
        {
b=0;s=0;  
bs=0;
ss=0;
bt=0;
st=0;    
bl=0;sl=0; }
return(tic);}

SI UN PEDIDO TIENE UN TICKET MAYOR QUE 0, ESTA FUNCIÓN DEBERÍA FUNCIONAR

else
        {
b=0;s=0; 
bs=0;
ss=0;
bt=0;
st=0;   
bl=0;sl=0; }

QUE DEBERÍA CAMBIAR TODOS LOS VALORES DE LAS VARIABLES GLOBALES A 0 Y NO VOLVER A ABRIR UNA NUEVA ORDEN,

PERO DE ALGUNA MANERA VUELVE A LA APERTURA DE LA ORDEN Y ABRE NUEVAS ÓRDENES EN CADA NUEVO TICK.

¿CUÁL ES LA RAZÓN DE ESTE EXTRAÑO FENÓMENO?

LAS VARIABLES GLOBALES SE ESTABLECEN DESDE AQUÍ AL CERRAR UNA ORDEN DE MERCADO

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
       
         }
      }

TAMBIÉN AQUÍ ESTÁ EL ASESOR EXPERTO COMPLETO

Archivos adjuntos:
test8_2.mq4  7 kb
 
FoxUA:

GENTE, AYÚDENME, NO ENTIENDO...


¿Dónde está el bloque que rellena estas variables con valores?
Me gustaría ver el código exacto de su Asesor Experto en una sola pieza, en la forma en que se compila y se prueba.
No a trozos, porque esta pregunta lleva mucho tiempo rondando, y se ha respondido más de una vez, pero debido a estos trozos, nadie puede entender del todo el panorama del problema.

Así que, por favor, muestre la imagen completa para que no haya confusión.

 
ToLik_SRGV:

¿Dónde está el bloque que rellena estas variables con valores?
Me gustaría ver el código exacto de su EA en una sola pieza, en la forma en que se compila y se prueba.
No a trozos, porque esta pregunta lleva mucho tiempo rondando, y se ha respondido muchas veces, pero nadie puede entender del todo el panorama del problema por culpa de estos trozos.

Así que, por favor, muestre la imagen completa para que no haya confusión.

AQUÍ ESTÁ TODO EL EA

Archivos adjuntos:
test8_1.mq4  7 kb
 

¿preguntar en el hilo "escribiré un EA gratis" no siempre obtiene respuesta?

 
diaspar:

¿preguntar en el hilo "escribiré un EA gratis" no siempre obtiene respuesta?

Déjame preguntarte, ¿con qué frecuencia vas a trabajar gratis?
Esa es la frecuencia con la que responden.
 
diaspar:

¿preguntar en el hilo "escribiré un EA gratis" no siempre obtiene respuesta?

El tema fue iniciado por el iniciador del tema. Sin embargo, recibió muchas más solicitudes de las que puede digerir. La lógica dicta que debe responder: es él quien debe exigir. ¿Qué esperabas?
 
FoxUA:

NO SE QUE LE PASA A MI EA, HE PROBADO DE TODO Y EL ÚNICO RESULTADO ES 1 POR CADA TICK + 1 ORDEN PENDIENTE LO ÚNICO ES QUE CUANDO CIERRO OTRO MERCADO CAMBIA LA VARIABLE ABRE OTRO Y ABRE UNO NUEVO CON CADA TICK

En progreso...

Lo más probable es que el error esté en el bloque que rellena estas variables con valores (en el bucle for), ya he encontrado un error (en OrderSelect()) allí, pero el resultado no ha cambiado todavía. Parece ser un error en la lógica del bloque.

P.D.
Por favor, cambie a las mayúsculas y minúsculas normales.

 
FoxUA:

El fallo es evidente, por supuesto, abre posiciones en cada tick, ya que la orden perdedora en el historial no va a ninguna parte, por lo que la encuentra en cada tick y rellena los valores de las variables de control con los mismos valores, y entonces se dispara el bloque de apertura de operaciones.