KARAUL!!! AIUTO. 4 ore e 45 minuti alla partenza!!! - pagina 6

 
IceBerg:

L'amicizia è amicizia, ma il tabacco è a parte... Il codice completo sarà per questo:

non utilizzato:

dare il codice completo con la libreria standard (non posso farlo da solo perché non sono esperto di libreria standard) ...

--

non per il bene, ma per il male... Perché perderete la vostra comprensione della realtà... imparate l'OOP.

A questo punto penso che la questione sia finita.

Compagno, non ho bisogno di imparare su OOP, posso insegnare a chiunque, e non solo su OOP. Ho chiesto un codice per confrontare ciò che è necessario scrivere per aprire un accordo con l'aiuto della libreria standard e ciò che è necessario scrivere senza di essa. E cosa è più facile da capire alla fine? Sembra essere un suggerimento abbastanza costruttivo.

Beh, no, quindi no.

 

Un GRANDE GRAZIE a tutti!

inviato

In attesa di verifica

Con un po' di fortuna ci incontreremo al Campionato di Trading Automatico 2012!

Buona fortuna a tutti voi!

(Devo imparare...)

 
notused:

Compagno, non ho bisogno di essere istruito su OOP, posso insegnare a chiunque, e non solo su OOP. E ho chiesto un codice per confrontare ciò che è necessario scrivere per aprire un accordo con l'aiuto della libreria standard e ciò che è necessario scrivere senza di essa. E cosa è più facile da capire alla fine? Sembra essere un suggerimento abbastanza costruttivo.

Beh, no, quindi no.

Ho scritto tutto.

File nella directory 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);
  }

Nel Consulente esperto:

#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();
  }
//+------------------------------------------------------------------+

Questo è tutto...

Insegnami l'OOP, per favore

 

E il tutto è già pronto e non c'è bisogno, ancora una volta, di reinventare la ruota...

 
pavivas:

Un GRANDE GRAZIE a tutti!

inviato

In attesa di verifica

Con un po' di fortuna ci incontreremo al Campionato di Trading Automatico 2012!

Buona fortuna a tutti voi!

(Devo imparare...)

Oof )) Congratulazioni. Ora dovremo fare il tifo per te ))
 
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);    
Cos'è più facile? Riempire una struttura o trattare i segnali?
 
notused:
cos'è più facile? riempire una struttura o gestire i segnali?
Sono d'accordo, le classi sono buone, le biblioteche sono per i pigri... IMHO
 
Mischek:
Oof )) Congratulazioni. Ora dovremo fare il tifo per te ))
 
notused:
Cos'è più facile? riempire una struttura o affrontare i segnali?

Questo è il punto... Il segnale in questo caso particolare può essere un messaggio di testo dal tuo telefono... ma quando dici al tuo consulente esattamente cosa fare... lui lo farà...

Posso fare qualsiasi cosa sul Signal, basta che la tuta mi stia bene... Sono già su ATC2012)

 
notused:

Sì, questa è la strada da seguire.

ma più spesso che no.