[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 179

 
Rustbunch:

Ayúdame a encontrar un EA o un script, debe haber uno listo...

Necesito un EA que abra una operación con una determinada pérdida y ganancia en un momento determinado del mercado. No necesito nada más de él...

Gracias de antemano.

Cualquier Asesor Experto lo hace en el MetaEditor, ¡y los scripts correspondientes en el MetaEditor!

if(Hour() >= xx) открыть;
 
Porque tengo la contabilidad de órdenes en una matriz. Es todo un peinado.
 
if (!PozyProstavleny){ ArrayResize(Buy,Raz);ArrayResize(Sell,Raz);
   
           Price= (Ask+Dist*Point) ; TP_BUY=(Price+TP*Point);  SL_BUY= (Price- SL*Point);
           Price_SELL= (Bid-Dist*Point) ;  TP_SELL=Price_SELL-TP*Point;  SL_SELL=Price_SELL+SL*Point; K=1;
           
   for(int Raz1=0;Raz1<Raz;Raz1++){
   
           Sleep(2000); RefreshRates();  for(int A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено 
торговать или поток для выполнения торговых операций занят "); }           
  tyccBuy= OrderSend (Symbol( ), OP_BUYSTOP,  Lot ,NormalizeDouble(Price, Digits), 5, NormalizeDouble( SL_BUY,Digits),  
 NormalizeDouble( TP_BUY,Digits), NULL, 450, 0, CLR_NONE);
   Buy[Raz1]= tyccBuy;
           Price= (Price+Dist*Point) ; TP_BUY= (Price+TP*Point); SL_BUY= (Price- SL*Point);
           Error=GetLastError();
     if (Error!=0){ string errorcomment = "Ошибка открытия ордера байстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
           
           Sleep(2000); RefreshRates();  for( A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено торговать
 или поток для выполнения торговых операций занят "); }        
           Sell[Raz1]=OrderSend (Symbol( ), OP_SELLSTOP,  Lot ,NormalizeDouble(Price_SELL, Digits), 5, NormalizeDouble( SL_SELL,Digits), 
  NormalizeDouble( TP_SELL,Digits), NULL, 450, 0, CLR_NONE);
     Price_SELL= (Price_SELL -Dist*Point) ;TP_SELL=Price_SELL-TP*Point;   SL_SELL=Price_SELL+SL*Point;
            Error=GetLastError();if (Error==0)
            
            {errorcomment = "Ошибка открытия ордера селлстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
        Print (errorcomment);} PozyProstavleny=1; 
                       }
                       }   
                        
 

¡Buenos días a todos!

Soy un novato. Es la primera vez que intento plasmar una idea en código en el probador.

La idea es simple: abrir una orden alternativamente hacia arriba y hacia abajo al precio de apertura de cada vela horaria.

He escrito un código sencillo .... Pero el problema es que el programa a veces abre más de 1 orden en la apertura de una vela.

Como me parece que sucede cuando más de 1 tick viene en 1 segundo.

He intentado poner en la cabecera de la condición if( ) ...

Total de pedidos()==0

Sólo se abre realmente una orden.



Pero esta variante no me conviene ya que al día siguiente no se abre la vela dada, ya que en el momento de la apertura de esta vela

Ya hay un número aleatorio de órdenes en el comercio.

También traté de interrumpir la ejecución de la OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP) con return; ..... no ayudó.


Te agradecería que me dijeras cómo hacer para que sólo se abra 1 orden en cualquier tick en 1 segundo.

int inicio()

{
double Precio=Precio;
double SL=Precio-300*Punto;
double TP=Precio+300*Punto;
if( Hour()==10 && Minute()== 00 && Seconds()==00)
OrderSend(Symbol(),OP_BUY,0.1,Precio,3,SL,TP);
}

 
Y así sucesivamente.
 
Dimka-novitsek:
No sé cómo, pero los datos deberían guardarse.

//записать

void SaveArray(string File, double &a[])
{
    int h = FileOpen(File, FILE_BIN|FILE_WRITE);
    if(h>0)
    {
      int sz = ArraySize(a); 
      FileWriteArray(h,a,0,sz);
      FileClose(h);
    }
}

//прочитать

void OpenArray(string File, double &a[], int sz)
{
    int h = FileOpen(File, FILE_BIN|FILE_READ);
    if(h>0)
    {
      ArrayResize(a,sz);
      FileReadArray(h,a,0,sz);
      FileClose(h);
    }
}
 
solnce600:

¡Buenos días a todos!

Soy un novato. Es la primera vez que intento plasmar una idea en código en el probador.

La idea es simple: abrir una orden alternativamente hacia arriba y hacia abajo al precio de apertura de cada vela horaria.

He escrito un código sencillo .... Pero el problema es que el programa a veces abre más de 1 orden en la apertura de una vela.

Como me parece que sucede cuando más de 1 tick viene en 1 segundo.

He intentado poner en la cabecera de la condición if( ) ...

Total de pedidos( )==0

Sólo se abre realmente un pedido.



Pero esta variante no me conviene ya que al día siguiente no se abre la vela dada, ya que en el momento de la apertura de esta vela

Ya hay un número aleatorio de órdenes en el comercio.

También traté de interrumpir la ejecución de la OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP) con return; ..... no ayudó.

Te agradecería que me dijeras cómo hacer para que sólo se abra 1 orden en cualquier tick en 1 segundo.

int inicio()

{
doble Precio=Preguntar;
doble SL=Precio-300*Punto;
doble TP=Precio+300*Punto;
if( Hora()==10 && Minuto()== 00 && Segundos()==00)
OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP);
}

Si eso es TechZad, ¡estás en el trabajo!
 
¡¡¡¡¡¡Gracias!!!!!!
 

solnce600:

Te agradecería que me dijeras cómo hacer para que en 1 segundo sólo se abra 1 orden en cualquier tick.

int start()
{
...

int ot=OrdersTotal();

bool open_allowed = true;

if(ot>0)
{
   if(OrderSelect(ot-1,SELECT_BY_POS))
   {
      if(TimeCurrent()-OrderOpenTime()<=1) open_allowed=false;  //если разница между текущим временем сервера и временем открытия последнего ордера 1 секунда или меньше, запретить торговлю
   }
}

if(open_allowed)
{
   //открываемся
}
...
}
 
Bien... Declarar alguna variable antes de empezar, recordar la hora. Después de hacer un pedido, es igual, digamos, a la verdad. Antes de fijarlo, compruébalo también. No soy bueno con las variables de tiempo. Antes de realizar el pedido, comprueba si la hora es mayor que la hora real si se añade a esta variable. Si ya no lo es, entonces ordénalo y vuelve a recordar la nueva hora. Sí, así es. ¡¡Un poco simple incluso!!