Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 621

 
YuraZ:



¡¡¡¡¡¡¡¡¡¡¡¡Gracias!!!!!!!!!!!!

Si no crees que es impertinente.....:)) aconsejar cómo ejecutar el probador correctamente. Tal y como lo estoy intentando, no funciona.

#import  "shell32.dll"
    int ShellExecuteA(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd); 
#import

int Start;

int start()
   {
    //---------------------------------- Запустим Тестер -------------------------
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", FileOptim, PuthTester_h, 3);
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", "optimise.ini", "D:\Alpari_Terminal_Tester\tester", 3);

    return(0);
   }
 
Leo59:

¡¡¡¡¡¡¡¡¡¡¡¡Gracias!!!!!!!!!!!!

Si no crees que es impertinente.....:)) aconsejar cómo ejecutar el Tester correctamente. Tal y como lo estoy intentando, no funciona.

¡La auto-optimización decidió hacerlo! ...genial... es un tema genial.

hay 2 formas que me gustan la 1

1) iniciar la optimización desde el Asesor Experto en el mismo terminal

2) configurar un terminal o terminales separados - iniciarlos y luego leer los resultados de la optimización


parece que estás intentando el segundo método - es más engorroso.


Sustitúyelo primero.

ShellExecuteA  на ShellExecuteW
 
YuraZ:

¡La auto-optimización decidió hacerlo! ...genial... es un tema genial.

hay 2 formas que me gustan la 1

1) iniciar la optimización desde el Asesor Experto en el mismo terminal

2) configurar un terminal o terminales separados - iniciarlos y luego leer los resultados de la optimización


parece que estás intentando el segundo método - es más engorroso.


en primer lugar hay que sustituirlo por.



¡¡¡¡¡¡¡¡Gracias!!!!!!!!
Tienes razón :)) El resultado final es la autooptimización.


1) iniciar la optimización desde el Asesor Experto en el mismo terminal

Lo hago sobre la base de los resultados del comercio virtual actual

2) Configurar un terminal o terminales separados - iniciarlos y luego leer los resultados de la optimización al final

Estuve indagando en la auto_optimización de XEON en otoño. TestCommander es una caja negra comercial. Decidí hacerlo yo mismo para implementar de alguna manera la funcionalidad que no funciona en la variante 1).

 
pu6ka:

Lanza este indicador en M1, a medida que aparecen nuevas barras, las líneas de caimán de la izquierda "se borran". ¿Necesitas esto?



Resuelto el problema.

#property copyright "forexman77@list.ru"
#property link      "forexman77@list.ru"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
extern int p  =10;
double val_plus[];
double val_minus[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    indicator_plus,indicator_minus;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   { 
     indicator_plus=0;
     indicator_minus=0;
     ArrayInitialize(val_plus,0);
     ArrayInitialize(val_minus,0);
   for(int k=p;k>=0;k--)
     {
     ArrayResize(val_plus,p);
     ArrayResize(val_minus,p);
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1))val_plus[k]=1;
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k))val_minus[k]=1;

     if (val_plus[k] > 0){indicator_plus=indicator_plus+val_plus[k];}
     if (val_minus[k] > 0){indicator_minus=indicator_minus+val_minus[k];}
     }
          ExtMapBuffer1[i]=indicator_plus;
          ExtMapBuffer2[i]=indicator_minus;
   }

   return(0);
  }
 
¿Puede alguien escribir un código de script simple que copie un archivo de un lugar a otro?

O bien, que ejecutará el probador en un terminal diferente?

Bueno, todavía no puedo. ¿Puedes?

 
Leo59:
Escribir un script de código simple, que copie un archivo de un lugar a otro, ¿puede alguien?

O bien, ¿quién va a ejecutar el probador en un terminal diferente?

Aquí, todavía no puedo. ¿Y tú?


Y no puedo, porque no tengo que hacerlo. Lo que hace falta, lo estoy aprendiendo a hacer yo mismo, ¡para no tener que cambiar mi lógica!

Sobre todo porque lo he hecho yo mismo, si necesitas retocar algo, ¡no hay problema!

¡Aprenda desde lo más básico "partido", con pistas-regalos no aprenderá y al final se perderá más tiempo para nada!

Buena suerte. :)

 
borilunad:


¡Y no puedo, porque todavía no es necesario! Lo que es necesario, estoy acostumbrado a hacerlo yo mismo, ¡para no cambiar mi lógica!

Razón de más para hacerlo tú mismo, si necesitas retocar algo, ¡no hay problema!

Aprende lo básico, no aprenderás con consejos-regalos y acabarás perdiendo más tiempo a la larga.

Buena suerte. :)

Tienes razón, "no te comas el pan de otro".

La ciudad de Barcelona es increíble. Sólo las vías del tranvía, dispuestas entre el verde césped, merecen la pena. Pero las mujeres allí en España son de cuello corto y cabeza dura, no como nuestras mujeres en San Petersburgo.
:)) Qué tonterías no se pueden escribir desde la mente chiflada. Ese soy yo.

Todo está bien, y buena suerte para ti también, así como para todos los demás.

 
Leo59:

Tienes razón, no deberías mirar el pan de otro.

Es una ciudad increíble, Barcelona. El tranvía solo, dispuesto entre céspedes verdes, ¡lo que vale! Pero las mujeres allí en España son de piel corta y cabeza dura, no como nuestras mujeres en San Petersburgo.
:)) Qué tonterías no se pueden escribir desde la mente chiflada. Ese soy yo.

Todo está bien, y buena suerte para ti también, así como para todos los demás.


No hablo de un "pan", sino de un método más productivo de aprendizaje, para que "no duela los años perdidos".

Bueno, ¡a cada uno lo suyo! :(

 
artmedia70:

Tal vez lo intente de esta manera:

Introducido un símbolo y un magik en las variables a pasar. No tienes un control sobre ellos.




Gracias. Lo intentaré el lunes. Aunque, la pregunta sigue sin estar clara para mí. Si quiero cerrar algún pedido, ¿por qué me da un error? Por cierto, tendré que probar el mismo código en el antiguo probador. El nuevo probador tiene muchos cambios menores. No siempre estoy seguro de cuál será el resultado.
 
001:


Gracias. Lo intentaré el lunes. Aunque la cuestión sigue sin estar clara para mí. Si quiero cerrar algún pedido, ¿por qué me da un error? Por cierto, tendré que probar el mismo código en el antiguo probador. El nuevo probador tiene muchos cambios menores. No siempre estoy seguro de cuál será el resultado.

No puedo recordar ahora... Si quiere cerrar toda la Venta, no necesita volver de la función. Lo he estropeado mientras dormía. Así es como se hace para cerrarlos todos:

//+------------------------------------------------------------------+
void  CheckForLongetivityClose_Sell(int symbol, int magic) {
   if(DayOfWeek()==0 || DayOfWeek()==6) return;
   for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS)) {
         if(OrderMagicNumber()!=magic) continue;
         if(OrderSymbol()!=symbol)     continue;
         if(OrderType()!=OP_SELL)      continue;
         datetime openTime_S= OrderOpenTime();
         int timeDistance_S = TimeCurrent()-openTime_S;
         if(timeDistance_S>60*BarrierMinute_S) {
            bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);
            }
         }
      }
}
//+------------------------------------------------------------------+

En general, por supuesto, en lugar de esta línea

bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);

Hay que llamar a una función normal para cerrar posiciones que tenga un código de retorno procesado por el servidor.

Razón de la queja: