[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 241

 
artmedia70:

Ya se le ha dicho cuál es el motivo. La cuestión no es i++ o i-- sino desde qué extremo de la lista debemos empezar a borrar órdenes: desde el principio de la lista (como has hecho tú) o desde el final de la lista (como debes hacer en este caso).

Para entender lo que ocurre cuando se borran los pedidos, es necesario conocer y comprender cómo se almacenan los pedidos en la matriz.

Al eliminar primero el primer pedido (está indexado por i=0), los índices de todos los pedidos se desplazan en la matriz: el primer pedido se convierte en nulo, el segundo en el primero, el tercero en el segundo y así sucesivamente. De hecho, cuando i se convierte en 6, la sexta orden se desplaza a la quinta posición en la matriz de órdenes y la orden no se selecciona por el índice 6.

Cuando se eliminan pedidos del final de la lista, el desplazamiento no se produce: el primer pedido tiene una posición cero en la lista, y la seguirá teniendo. La décima orden tenía la posición 9, se eliminó, luego la novena orden, que tiene una posición 8 en la lista se elimina, y así sucesivamente, hasta la primera orden con una posición cero en la matriz de órdenes.

Un GRAN AGRADECIMIENTO a artmedia70 por su exhaustiva respuesta, sólo un agradecimiento a ilunga... y a nadya por su participación también ... todo lo mejor ...
 
Por favor, aconsejadme, he configurado la herramienta multidivisa para trabajar con varias divisas desde una misma ventana. Pero el problema es que el cambio de moneda es tan rápido que no da tiempo a abrir una orden. En 3 minutos, se han abierto 4 órdenes + 4 órdenes pendientes. Y hubo mucho cambio de moneda.
 
volshebnik:
¿Qué es mejor y qué? )
Hacer nombres únicos y recordarlos. No conozco su tarea, tal vez no sea necesario.
 
forexnew:
Por favor, aconsejadme, he configurado la herramienta multidivisa para trabajar con varias divisas desde una misma ventana. Pero el problema es que el cambio de moneda es tan rápido que no da tiempo a abrir una orden. En 3 minutos, se han abierto 4 órdenes + 4 órdenes pendientes. Y hubo mucho cambio de moneda.

http://vinin.ucoz.ru/forum/11
 

hay 2 modificaciones de usuario Mod_1 y Mod_2

ambos tienen condiciones de modificación:

double TS;
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (TS < Min_Dist)
TS=Min_Dist;

Como cambiarlo para que la modificación no pase por una condición de stop loss, para comprar el stop loss es menor que el trailing stop,

y para vender, el stop loss es mayor que el trailing stop

 

Hola.

Por favor, ayúdenme a encontrar un error.

El código de abajo no funciona en el probador, mientras que en la demo no hay ese problema. No hay ningún error en el cuaderno de bitácora.

Gracias de antemano.

  //====================== Отлавливаем прибыль по рынку ===========================================
  if (RinProfit) {
    if(SchBuyLots>0 || SchBuyLots777>0)
     {
      if((SchSellStop_b(MAGIC)>0 && (maM_fast<maM_slow || maH_fast<maH_slow || maOtk_fast<maOtk_slow)) ||
         (SchSellStop_b(MAGIC)>0 && (speedup_H1_ff<(10000+H1_MA_factor_ff) || speedup_H1_ss<(10000+H1_MA_factor_ss) ||
                                     speedup_M15_ff<(10000+M15_MA_factor_ff) || speedup_M15_ss<(10000+M15_MA_factor_ss))) ||
         (SchSellStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss<(10000+H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchSellStop_b(MAGIC)>0 && Fractal_fibo_buy>Fibo_prohibit) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S<TF2S) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S>=TF2S && Bid<price_S))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Buy закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
    }
    if(SchSellLots>0 || SchSellLots777>0)
     {
      if((SchBuyStop_b(MAGIC)>0 && (maM_fast>maM_slow || maH_fast>maH_slow || maOtk_fast>maOtk_slow)) ||
         (SchBuyStop_b(MAGIC)>0 && (speedup_H1_ff>(10000-H1_MA_factor_ff) || speedup_H1_ss>(10000-H1_MA_factor_ss) ||
                                    speedup_M15_ff>(10000-M15_MA_factor_ff) || speedup_M15_ss>(10000-M15_MA_factor_ss))) ||
         (SchBuyStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss>(10000-H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchBuyStop_b(MAGIC)>0 && Fractal_fibo_sell>Fibo_prohibit) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B>TF2B) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B<=TF2B && Bid>price_B))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Sell закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
     } 
   }
  //===============================================================================================  
 

¿Cuál es la diferencia entre llamar a funciones desde la dll en MT4 y MT5? Compilo la dll, funciona bien en MT5, pero en MT4 me da error:

2011.10.06 23:00:34 Ejecutor Solaris EURUSDm,M1: no se puede llamar a la función 'InfoOfTrading' desde la dll 'Solaris.dll'(error 127)

¿Qué demonios es esto? - Me he devanado los sesos. :(

 
hacer un proyecto Win32 dll
 
sergeev:
hacer un proyecto Win32 dll
¡Pero funciona bien en MT5!
 

Continuaré con mi pregunta anterior.

También he utilizado el código anterior en otro EA. La situación con ese EA era similar a la descrita anteriormente con la diferencia de que las condiciones del código se cumplían exactamente al revés (en la demo, de nuevo, todo funcionaba sin errores). Pero un día el probador funcionó correctamente y el código funcionó correctamente según las condiciones dadas.

Es un verdadero misticismo.

Además, por alguna razón la optimización a veces no me funciona. A veces recalcula algo pero pone a cero todos los resultados por alguna razón. Esto sucede en los terminales de diferentes corredores. Sin embargo, cuando todas las estrellas y constelaciones del cielo probablemente convergen, todo empieza a funcionar como debería.