Scrivere un consigliere efficace - pagina 6

 
Vladimir Baskakov #:
Sai già che sarà 0. Se non lo fosse, non avresti creato questo thread

Non ci sono altre ragioni?

In breve, sono stufo di tutte queste chiacchiere inutili. Se continuate il dialogo al di fuori dell'argomento EA, ignorerò i vostri post.

Le tue previsioni non sono interessanti perché già contraddicono l'efficacia del robot di trading. Il mio video ti mostra come gestire la linea di tendenza, per ottenere un profitto. Se non potete impararlo, non sarete in grado di usarlo. È come suonare uno strumento musicale. Io, come maestro, sostengo che lo strumento è buono. Lo so, perché ho programmato per il forex per oltre 15 anni. Ti ho dato lo strumento. Non è un fatto che sarete in grado di usarlo magistralmente.

E un'altra cosa, lo strumento che ho usato nel video non si chiama raggio, ma trendline. Il raggio è il PARAMETRO di questo strumento, che potete disattivare se volete.

Questa è la fine. Non voglio toccare altre previsioni infondate.

 
Vitaly Murlenko #:

Non ci sono altre ragioni?

In breve, sono stufo di tutte queste chiacchiere inutili. Se continuate il dialogo al di fuori del thread EA, ignorerò i vostri post.

Le tue previsioni non sono interessanti perché già contraddicono l'efficacia del robot di trading. Il mio video ti mostra come gestire la linea di tendenza, per ottenere un profitto. Se non potete impararlo, non sarete in grado di usarlo. È come suonare uno strumento musicale. Io, come maestro, sostengo che lo strumento è buono. Lo so, perché ho programmato per il forex per oltre 15 anni. Ti ho dato lo strumento. Non è un fatto che sarete in grado di usarlo magistralmente.

E un'altra cosa, lo strumento che ho usato nel video non si chiama raggio, ma trendline. Il raggio è il PARAMETRO di questo strumento, che potete disattivare se volete.

Questa è la fine. Non voglio toccare altre previsioni infondate.

Dichiarare dove?
Confrontare il numero di candele rosse e blu non è la definizione di una tendenza
 
Vladimir Baskakov #:
Dichiarare dove?
Confrontare il numero di candele rosse e blu non è un rilevamento di tendenza

OK, ma mostrerò ma risultato intermedio in condizioni reali "live". Ecco uno screenshot:

Il denaro è entrato ieri alle 3 del pomeriggio. C'era zero (dovrete credermi sulla parola).

Ecco lo stato:

8

9

10

11

 
Questo stato aiuterà le vostre analisi?
 
Vitaly Murlenko #:
Questo stato aiuterà la sua analisi?
Ecco lo Stato.
A proposito, perché preoccuparsi di cercare una tendenza quando la sua continuazione ha il 50/50 di probabilità di invertirsi
 
Vitaly Murlenko #:

In allegato al post c'è l'Expert Advisor (file Binarnic_1.0.mq4) e lo script che ho usato nel video (file Script_0.mq4).

Per evitare malintesi, guardate prima il video. Ho guardato il mio video con le cuffie - il suono sembra essere a posto.

Volevo usarlo su YouTube, ma Google aveva incasinato qualcosa con la sicurezza lì, e non riuscivo nemmeno a capirlo sul mio cellulare. Comunque, l'ho caricato su myl-ru nel cloud. Basta scaricarlo, perché il visualizzatore di questo server soffre chiaramente di qualità. Il formato del file è mp4. La dimensione del file è di 252 megabyte. Ecco un link per scaricare:https://cloud.mail.ru/public/Ewoq/ymNxHFJ2Z

Buongiorno a tutti e buon umore!

Vitaliy, hai intenzione di scrivere il codice dell'Expert Advisor solo per MT4 o ci sarà una versione per MT5? Non so il 4 perché ho fatto un breve corso di autoapprendimento del linguaggio di programmazione MQL5, per questo motivo non posso aggiungere nulla al codice del tuo EA. Peccato!

Saluti, Vladimir.

 
MrBrooklin #:

Buongiorno a tutti e buon umore!

Vitaliy, hai intenzione di scrivere il codice del tuo Expert Advisor solo per MT4 o ci sarà una versione per MT5? Non ho familiarità con MQL5, perché ho fatto un breve corso di autoapprendimento del linguaggio di programmazione MQL5, per questo motivo difficilmente sarò in grado di aggiungere qualcosa al codice del tuo EA. Peccato!

Cordiali saluti, Vladimir.

MQL4 non è diverso da MQL5. L'unica differenza è l'accesso ai dati e alle funzioni di trading. Tutto questo è "avvolto" in classi con un'interfaccia virtuale comune - e voilà, otteniamo un codice portatile che può essere compilato in entrambi i casi senza alcuna modifica.

 
Georgiy Merts #:

MQL4 non è diverso da MQL5. L'unica differenza è l'accesso ai dati e alle funzioni di trading. Tutto questo è "avvolto" in classi con un'interfaccia virtuale comune - e voilà, si ottiene un codice portatile che può essere compilato lì per lì senza modifiche.

https://www.mql5.com/ru/docs/basis/preprosessor/conditional_compilation
 
Georgiy Merts #:

L'unica differenza è nell'accesso ai dati e nelle funzioni di trading.


Non solo.

 

Esattamente.

Semplicemente usando le direttive di compilazione condizionale. Tutte queste direttive funzionano all'interno delle classi reali. Sviluppiamo un'interfaccia virtuale universale per le azioni di trading e, nelle classi di implementazione, separiamo i rami MQL4-MQL5 usando la compilazione condizionale. Poi creiamo semplicemente un oggetto che scambierà e vi accediamo usando l'interfaccia virtuale. E in generale, dimentichiamo ogni sorta di differenze tra le piattaforme.

Diciamo che questa è la mia interfaccia virtuale del processore di trading:

// СTradeProcessorI - интерфейс торгового процессора

#include <MyLib\Common\MyObject.mqh>
#include <MyLib\Common\CurSymEnum.mq5>

class CTradePosComponentI;
class COrderInfoCore;

class CTradeProcessorI : public CMyObject
{
public:
   void CTradeProcessorI() {    SetMyObjectType(MOT_TRADE_PROCESSOR_I); };
   virtual void ~CTradeProcessorI() {};
   
   // Настроечный интерфейс
   virtual void SetSlippage(uint uiSlippage) = 0;
   
   // Торговый интерфейс
   // Все функции возвращают код возврата торгового сервера
   virtual int Buy(long & lTicket,ECurrencySymbol csSymbol,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0;               // Всегда по цене Ask, если успешно - возвращается lTicket
   virtual int Sell(long & lTicket,ECurrencySymbol csSymbol,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0;              // Всегда по цене Bid, если успешно - возвращается lTicket  

   virtual int ModifyTPSL(CTradePosComponentI* ptpcComponent,double dTP=0,double dSL=0) = 0;       
   virtual int ModifyTPSL(long lTPCTicket,double dTP=0,double dSL=0) = 0;       

   virtual int CloseTradeComponent(CTradePosComponentI* ptpcComponent,double dCloseVolume=EMPTY_VALUE) = 0;              // dCloseVolume - закрываемый объем. Если равен EMPTY_VALUE или равен или больше, чем объем торговой компоненты с указанным тикетом - закрывается вся торговая компонента.   
   virtual int CloseTradeComponent(long lTPCTicket,double dCloseVolume=EMPTY_VALUE) = 0;              // dCloseVolume - закрываемый объем. Если равен EMPTY_VALUE или равен или больше, чем объем торговой компоненты с указанным тикетом - закрывается вся торговая компонента.   
   
   virtual int PendingSet(long & lTicket,ECurrencySymbol csSymbol,ENUM_ORDER_TYPE otOrderType,double dSetPrice,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0; // если успешно - возвращается lTicket
   virtual int PendingDelete(long lTicket) = 0; 
   virtual int PendingDelete(COrderInfoCore* poiOrder) = 0; 
   
   virtual int PendingModify(long lTicket,double dSetPrice,double dTP=0,double dSL=0) = 0;       
   virtual int PendingModify(COrderInfoCore* poiOrder,double dSetPrice,double dTP=0,double dSL=0) = 0;       
   
   // Проверка кода возврата
   virtual bool TradeOperationWasSuccessful(int iTradeResCode) const = 0;
   
   // Если функция возвращает true, то при возникновении пользовательских ошибок (iTradeResCode > ERR_USER_ERROR_FIRST) советник прекратит работу
   // В случае false - работа будет продолжена
   virtual bool IsUserErrorsFalal() const = 0; 

};


Tutte le funzioni sono virtuali e completamente indipendenti dalla piattaforma. Abbiamo introdotto un concetto indipendente dalla piattaforma di un "componente commerciale" che rappresenta un ordine individuale in MT4 o una posizione aperta su un simbolo in MT5. Ed è con questo tipo di componente commerciale che stiamo lavorando.

La classe reale, che implementa questa interfaccia, appare come segue:

// СTradeProcessor - переносимый класс торгового процессора
// Именно этот класс необходимо использовать для торговли. 
// Класс реализует интерфейс CTradeProcessorI

#ifdef __MQL5__
#include <MyLib\Trade\MT5TradeProcessor.mq5>
#else // __MQL5__
#include <MyLib\Trade\MT4TradeProcessor.mq5>
#endif //__MQL5__

#ifdef __MQL5__
class CTradeProcessor : public CMT5TradeProcessor
#else // __MQL5__
class CTradeProcessor : public CMT4TradeProcessor
#endif //__MQL5__

{
public:
   void CTradeProcessor(uint uiSlippage = DEFAULT_TRADE_POINT_SLIPPAGE);
   void ~CTradeProcessor() {};
};


Infatti, l'intera implementazione avviene all'interno delle classi dipendenti dalla piattaforma CMT5TradeProcessor e CMT4TradeProcessor.


Motivazione: