¡¡KARAUL!! AYUDA. ¡¡¡Faltaban 4 horas y 45 minutos!!! - página 6

 
IceBerg:

La amistad es la amistad, pero el tabaco es aparte... El código completo será para éste:

no se utiliza:

dar el código completo con la biblioteca estándar (no puedo hacerlo yo mismo ya que no soy experto en la biblioteca estándar) ...

--

no para lo bueno, sino para lo malo... Porque perderás tu comprensión de la realidad... aprende OOP.

Llegados a este punto, creo que la cuestión ha terminado.

Camarada, no necesito aprender sobre POO, puedo enseñar a cualquiera, y no sólo sobre POO. Pedí un código para comparar lo que hay que escribir para abrir un trato con la ayuda de la biblioteca estándar y lo que hay que escribir sin ella. ¿Y qué es más fácil de entender al final? Parece una sugerencia bastante constructiva.

Bueno, no, así que no.

 

¡Un GRAN AGRADECIMIENTO a todos!

enviado

A la espera de la verificación

¡Con un poco de suerte nos encontraremos en el Campeonato de Trading Automatizado 2012!

¡Buena suerte a todos!

(Tengo que aprender...)

 
notused:

Camarada, no necesito que me enseñen sobre POO, puedo enseñar a cualquiera, y no sólo sobre POO. Y pedí un código para comparar lo que hay que escribir para abrir un trato con la ayuda de la biblioteca estándar y lo que hay que escribir sin ella. ¿Y qué es más fácil de entender al final? Parece una sugerencia bastante constructiva.

Bueno, no, así que no.

Lo he escrito todo.

Archivo en el directorio Include:

class МойСигнальщик : public CExpertSignal //наследуемся от Signal
  {
private:
   CiCustom          МойИндикатор; 
     
public:
                     МойОбработчик();
                    ~МойОбработчик();
      
      bool              ValidationSettings(void);
      
      bool              InitIndicators(CIndicators *indicators);
      
      virtual int       LongCondition();
      virtual int       ShortCondition(); 
      
protected:

   bool              МойИндикатор(CIndicators *indicators);
    
int МойСигнальщик::LongCondition()
  {
   int signal=0;
  
   if (!signalLong0==0)
            {
               signal=100;
            }
   return(signal);
  }

En el Asesor Experto:

#include <МойСигнальщик.mqh>
input double Signal_StopLevel       =150.0;        // Stop Loss level (in points)
input double Signal_TakeLevel       =120.0;        // Take Profit level (in points)
input double Signal_PriceLevel      =10.0;         // Price level to execute a deal
input double Money_FixLot           =1.0;         
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(-1);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(-2);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter IRTMiniMax
   МойИндикатор *filter0=new МойИндикатор;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(-3);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.Weight(Signal_MovingMM_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(-4);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(-5);
     }

//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedLot *money=new CMoneyFixedLot;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(-6);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(-7);
     }
//--- Set money parameters
   money.Lot(Money_FixLot);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(-8);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(-9);
     }
//--- ok
   return(0);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

Eso es todo...

Enséñeme sobre OOP, por favor

 

Y el conjunto ya está listo y no es necesario, una vez más, reinventar la rueda...

 
pavivas:

¡Un GRAN AGRADECIMIENTO a todos!

enviado

A la espera de la verificación

¡Con un poco de suerte nos encontraremos en el Campeonato de Trading Automatizado 2012!

¡Buena suerte a todos!

(Tengo que aprender...)

Oof )) Enhorabuena. Ahora tendremos que animarte ))
 
MqlTradeRequest request = {0};
MqlTradeResult result = {0};
MqlTick tick;
SymbolInfoTick(_Symbol, tick);
request.volume = 1;
request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.type_filling = ORDER_FILLING_FOK; 
request.price = tick.ask;
request.sl = tick.ask - 100 * _Point;
request.tp = tick.ask + 200 * _Point;
request.type = ORDER_TYPE_BUY;
request.deviation = 10;
OrderSend(request, result);    
¿Qué es más fácil? ¿Rellenar una estructura o lidiar con las señales?
 
notused:
¿qué es más fácil? ¿llenar una estructura o ocuparse de las señales?
Estoy de acuerdo, las clases son buenas, las bibliotecas son para los perezosos... IMHO
 
Mischek:
Oof )) Enhorabuena. Ahora tendremos que animarte ))
 
notused:
¿Qué es más fácil? ¿Rellenar una estructura o ocuparse de las señales?

Esa es la cuestión... La señal en este caso concreto puede ser un mensaje de texto desde su teléfono... pero cuando le diga a su asesor exactamente lo que tiene que hacer... lo hará...

Puedo hacer cualquier cosa en la Señal, siempre que el traje me quede bien... Ya estoy en el ATC2012)

 
notused:

Sí, ese es el camino a seguir.

pero la mayoría de las veces no.