[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 367

 
lottamer:


este modificador no fue escrito por mí.

Lo tengo preparado desde las bibliotecas.

Por eso tampoco puedo limpiarlo. Lo principal es que funcione al 100%.

Pero por qué el parámetro dentro de él no está optimizado - esa es la pregunta.....

No hay errores básicos.

El resto del código funciona.

Poner cualquier condición en el algoritmo.

- comprar

-Modificar

- cerrar

---------------------------

y tratar de optimizar el parámetro dentro de la MODIFICACIÓN de la orden - es decir, parar y tomar

Bueno, mientras funcione, y más aún si es al 100%, entonces no hay problema con ello. ¿Por qué debemos buscar errores en ella? - ¡Eso significa que no es el problema! - Y si buscas un error, significa que no estás 100% seguro. Así que el problema no está en el código, sino en tus criterios de evaluación, porque también te confunden. (Tú lo empezaste : ))) Sólo le estoy añadiendo aceite...)

Lo que se presenta aquí - no sé ni cómo llamarlo ... Probablemente, una sola acción hinchada hasta el tamaño de una función. En la mayoría de los programas este tipo de aplicación no es óptima: la modificación en un bloque va con otra cosa. - Aunque. puede haber diferentes condiciones de aplicación. Pero mi punto es que no hay nada que optimizar aquí... Como sólo es una acción.

 
lottamer:

Mira,

Si devuelvo todo ahora, es decir, quito los parámetros externos STOP y TAKE y escribo números dentro de la función en lugar de ellos, entonces el EA se ha ejecutado semana tras semana durante 10 semanas y muestra resultados claros.

Y si cambio manualmente los parámetros de parada y despegue - todo funcionará y dará resultados ligeramente diferentes (por supuesto)

¿Y ahora por qué, cuando tomo estos parámetros fuera del modificador, el optimizador los considera insignificantes?

Eso es exactamente lo que estoy tratando de decirte: que el problema está muy probablemente en otra parte, no en esta función. Así que tienes algo más mezclado. Tal vez estos SL y TP se aplican en algunos otros lugares que de alguna manera se superponen o algo más. Sólo podemos adivinar. - Por eso hay que mirar todo el código. Y nadie puede ayudarte a ciegas. - Aquí no hay magos.

Ya ves, preguntas pero no das toda la información necesaria para averiguar el motivo (ocultando razonablemente tu saber hacer). - Como en el ejemplo del enchufe. - Pero, ¿cómo se puede ayudar en este caso? - La respuesta es que no se puede. Toda la ayuda no tendría sentido. Y también requiere mucha energía.

 
Chiripaha:

Bueno, si funciona, y más aún si es al 100%, entonces no hay problema con ello. Entonces, ¿por qué hay que buscar un error en él? - Por lo tanto, ¡el problema no está en él! - Si busca un error, significa que no está 100% seguro. Así que el problema no está en el código, sino en tus criterios de evaluación, porque también te confunden. (Tú lo empezaste : ))) Sólo le estoy añadiendo aceite...)

Lo que se presenta aquí - no sé ni cómo llamarlo ... Probablemente, una sola acción hinchada hasta el tamaño de una función. En la mayoría de los programas este tipo de aplicación no es óptima: la modificación en un bloque va con otra cosa. - Aunque. puede haber diferentes condiciones de aplicación. Pero mi punto es que no hay nada que optimizar aquí... Como sólo es una acción.

Estoy buscando en él, porque lo cambiamos SOLO y porque es donde están los parámetros optimizables.

¿Cómo es que no hay nada que optimizar? ¡Los tamaños de las tomas están optimizados!

 
Chiripaha:

Eso es exactamente lo que intento decirte: que el problema probablemente esté en otra parte, no en esta función. Así que tienes otra cosa confundida. Tal vez estos SL y TP se aplican en algunos otros lugares que de alguna manera se superponen o algo más... Sólo podemos adivinar. - Por eso hay que mirar todo el código. Y nadie puede ayudarte a ciegas. - No hay magos.

Como ves, haces preguntas y omites parte de la información que necesitas para identificar la causa (ocultando sensiblemente tus conocimientos). - Como en el ejemplo con inluencias. - Pero, ¿cómo se puede ayudar en este caso? - La respuesta es que no se puede. Toda la ayuda no tiene sentido. Y también requiere mucha energía.

Entiendo...

necesitamos tomar un descanso... y pensar...

mira....

y creo que sé dónde...

 
lottamer:

Estoy buscando en él, porque lo cambiamos SOLO y porque es donde están los parámetros optimizables.

¿Cómo es que no hay nada que optimizar? ¡Los tamaños de las tomas están optimizados!

: )))))) ¿Para qué están optimizados? ¿La modificación del pedido? - Eso no es lo que acabas de decir.

Deben ser optimizados en relación con el programa, sus condiciones - que está ocultando de forma fiable. Y no se puede optimizar en relación con una sola acción.

En este caso, el promotor sólo tiene que decidir estos puntos por sí mismo. Todos pasamos por ello, créeme. : )) Lo mismo digo yo y otros colegas. No puedes pedir ayuda y esconderte. Entonces tienes que revelar -en este caso hacerlo público del todo, ya que el foro es público- tus cartas.
 
Chiripaha:

: )))))) ¿En qué sentido están optimizados? ¿En la modificación del orden? - Eso no es lo que acabas de decir.

Deben ser optimizados en relación con el programa, sus condiciones - que está ocultando de forma fiable. Pero no se puede optimizar en relación con una sola acción.

En este caso, el promotor sólo tiene que decidir estos puntos por sí mismo. Todos pasamos por ello, créeme. : )) Lo mismo digo yo y otros colegas. No puedes pedir ayuda y ocultarla. Entonces tiene que divulgar -en este caso, hacerla pública en absoluto, ya que el foro es público- sus tarjetas.

Ahora voy a preparar todo el código y mostrar........
 

aquí está el código :

Par EURUSD

//+------------------------------------------------------------------+
//|                                                           33.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
#include <b-Positions.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

extern  int  STOP = 100; 
extern  int  TAKE = 200;

double  Ma_1, Ma_2,  m2, m3; // m2 и m3 - это маркеры



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
Ma_1=iMA(NULL,PERIOD_M15,20, 0,MODE_SMA,PRICE_CLOSE,1) ;

Ma_2=iMA(NULL,PERIOD_M15,100,0,MODE_SMA,PRICE_CLOSE,1) ;





//=============================BUY_CONDITIONS=============================================
    

if (Ma_1>Ma_2 && m2==0)     {My_close();  My_buy ();  My_modify();  m2=1;   }  // закрыть если висят открытые позы   
                                                                                                   // и открыть новую
//=============================SELL_CONDITIONS=============================================
 
if (Ma_1<Ma_2 && m3==0)     {My_close();  My_sell ();  My_modify();  m3=1;  }    
 
//======================================

if  ( OrdersTotal()==0 && (m2==1 || m3==1)) {m2=0; m3=0;}  // обнуляет маркеры при закрытии позиций,
                                                           // что дает возможность открывать снова
//==============переход в безубыток ========================
   
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
   
if  (OrderProfit()>0.5)  {My_modify_close_zero ();}


return(0);
  }

//============================функция  ПРОДАТЬ==============================================

int My_sell()
{
    OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 0, 0, CLR_NONE);

}
return;

///==================================КУПИТЬ==========================================
int My_buy ()
{
     OrderSend (Symbol( ), OP_BUY, 0.01 ,Ask, 0, 0, 0, NULL, 0, 0, CLR_NONE);
}
return;


//+---------------------МОДИФИЦИРОВАТЬ сделку сразу по открытии---------------------------------------------+


int My_modify()
 {
   bool   result;
   double take_profit,stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point;
               else            stop_loss=OrderOpenPrice()+STOP*point;
               
                if(cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point;
                           else take_profit=OrderOpenPrice()-TAKE*point;
               
               
               result=OrderModify(OrderTicket(),0,stop_loss, take_profit,0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//            break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }

   return(0);
  }
  
  
//==============================выставить стопы в безубыток============================================================
int My_modify_close_zero ()
{
   bool   result;
   double stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice();
               else            stop_loss=OrderOpenPrice();
               
               result=OrderModify(OrderTicket(),OrderOpenPrice(),stop_loss,OrderTakeProfit(),0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//             break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }
//----
   return(0);
  }

  
//=================ЗАКРЫТЬ СДЕЛКУ=======================================================
int My_close()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
 
lottamer:

aquí está el código :

Par EURUSD

b-Positions.mqh adjúntalo - de lo contrario no podrás ejecutarlo - no verás cómo funciona.
 
Chiripaha:
b-Positions.mqh adjuntar - de lo contrario no será capaz de ejecutar - no será capaz de ver que funciona.

Archivos adjuntos:
b-positions.mqh  90 kb
 
lottamer:
Tengo una pregunta - ¿por qué necesita este archivo como un plug-in, si tiene todas las funciones necesarias en el propio Asesor Experto? ¿Piensa hacer algo más?
Razón de la queja: