Autoapprendimento del linguaggio MQL5 da zero - pagina 70

 
MrBrooklin:

Dovremmo chiamare le cose con i loro nomi propri - al momento sono muto come un tappo nella programmazione! Non capisco le cose elementari. Devo chiamarlo con il suo nome - al momento sono muto nella programmazione e non capisco le cose fondamentali. Lo scorso fine settimana, ho usato un multimetro e la lente d'ingrandimento di mio nonno per trovare un condensatore SMD difettoso di dimensioni microscopiche. Mostrava un guasto, un cortocircuito o "koza", come si chiamava dall'abbreviazione di short circuit, cioè cortocircuito. Ecco una foto del condensatore SMD "bucato" con ingrandimento 4x su uno smartphone e successiva elaborazione in Paint, poiché è un elemento troppo microscopico.


Ho deciso di divagare un po' e di mostrare almeno qualcosa!

E per quanto riguarda il desiderio di imparare il linguaggio, ce l'ho, così come la speranza di padroneggiare le basi della programmazione.

Saluti, Vladimir!


Fico! Queste cose sono tutte, tra l'altro, vicine tra loro.
Quando ero uno studente negli anni '90 questi dipartimenti si trovavano nello stesso dipartimento di tecnologia dell'informazione.
 
Roman Shiredchenko:

Ecco - permettetemi di non essere d'accordo con voi, potete e dovete codificare, cosa vi impedisce di arrivare in fondo... per capire e così via... anche IMHO, ci sono articoli, ci sono robot in kodobase - leggere, analizzare il codice già pronto - imparare lo stile di scrittura subito. Perché vuoi reinventare la ruota? Imparate subito dal codice alfabetizzato.

Ecco uno strascico di V. Karputov - è in ROBOTS, guardate - adattatelo ai vostri bisogni (termini e alle vostre fantasie).

P.S. Grazie a te, il soggetto di questo ramo, ho cominciato a capire il codice, le sue caratteristiche..., a studiare gli articoli e a ripetere le cose fondamentali per me stesso...

Grazie per il suggerimento! :-) (non scherzo)

Ciao Roman! È gratificante leggere che l'argomento creato è ancora utile a qualcuno oltre a me. Grazie!

Per quanto riguarda i codici scritti da Vladimir Karputov, per me è, finora, fuori dalla mia portata. In generale, non capisco i codici che contengono i file e le classi incluse. Perché un file o un altro sia stato incluso in un altro EA è un grande mistero!

Sto soprattutto cercando e studiando i codici scritti senza i file e le classi incluse. Gli Expert Advisors scritti da Vladimir Khlystov sono molto buoni per l'autoapprendimento. Un GRANDE GRAZIE speciale a lui! È un peccato che ci siano troppo pochi Expert Advisors in MQL5.

Ora voglio spiegare perché vi chiedo di non usare un codice già pronto. La ragione è che il codice pronto può suggerirvi e non siete più interessati a studiare la lingua. Ora avete inserito il codice già pronto nel vostro Expert Advisor; è diventato effettivo, ma a cosa serve? E al contrario, quando non si riesce a capire e a scrivere immediatamente qualcosa, come, per esempio, l'attuale incomprensione dell'operatore loop, è così stimolante e motivante che quasi non ci si può credere!

Non vedo nulla di male nell'imparare MQL5. Sto vivendo all'incirca la stessa fase della mia vita, quando studiavo elettronica e passavo dallo studio di un elemento base allo studio di un altro. L'unica differenza è che tutto viene percepito e assimilato più facilmente in gioventù che adesso. L'ho già sperimentato.

Grazie a TUTTI per le parole di sostegno e i suggerimenti costruttivi! Continuo a studiare MQL5! Per mezza giornata "sparirò", perché devo andare all'altro capo di Mosca per affari, e poi continuerò.

Sinceramente, Vladimir.

 
Aleksey Masterov:

Fico! Queste cose sono tutte vicine, comunque...
Nella mia università, ho studiato negli anni '90, questi dipartimenti erano nello stesso dipartimento IT.

Negli anni '90, compravano i diplomi.

- Non vedi ora che ci sono questi capi dipartimento seduti in tutti gli uffici

 
SanAlex:

negli anni '90, comprando diplomi.

- Non vedi ora che ci sono questi capi dipartimento seduti in tutti gli uffici?

Non è nemmeno la possibilità di comprare un diploma all'epoca, il fatto è che negli ultimi 30 anni la tecnologia ha fatto un passo così lungo che le conoscenze sono MOLTO carenti, per esempio, ho dovuto allora imparare autocad che allora semplicemente non esisteva, inoltre ho fatto un C++ MOLTO basilare. e così in tutto, bisogna costantemente imparare di più, migliorare, stare al passo con i tempi)

 
VVT:

Non si tratta nemmeno della possibilità di comprare una laurea all'epoca, il fatto è che negli ultimi 30 anni, la tecnologia è avanzata così tanto che le conoscenze sono già MOLTO carenti, per esempio, ho dovuto poi finire di imparare autocad che allora semplicemente non esisteva, inoltre ho fatto un C++ MOLTO basilare. e così in tutto, bisogna costantemente imparare, migliorare, stare al passo con i tempi)

Latecnologia è arrivata così lontano negli ultimi 30 anni- sta ancora usando quegli sviluppi degli anni 60

 

Buon pomeriggio a tutti!

Se volessi aggiungere qualcosa di interessante, penso che l'idea di "autoformazione in MQL5 da zero" non sia del tutto corretta. Se una persona è uno 0 nella programmazione, deve prima imparare a programmare. Se l'obiettivo è quello di imparare a programmare in MQL da zero, una persona deve prima impararea programmare in C, almeno le basi, e poi imparare a scrivere in MQL, perché MQL è in realtà C, ma è specializzato per un certo compito, una persona non capisce come funzionano i loop, e già cerca di scrivere programmi. È come cercare di imparare il latino senza conoscere il russo...

Un'altra cosa è che il C non è un linguaggio molto amichevole per imparare la programmazione, è semplice, ma è troppo conciso, è difficile per un principiante leggere e capire il codice senza avere una comprensione di base di algoritmi, tipi di dati, algebra booleana. In C tre caratteri in una riga possono significare diverse stringhe in un altro linguaggio.

Per imparare a programmare semplicemente da zero, per la base, per imparare a parlare con un computer in un (non importa quale) linguaggio, consiglierei di iniziare con Pascal, il libro più facile per iniziare con esso (2-3 settimane a proprio agio), poi C (lì dopo Pascal max settimana se diligente, padroneggiare la sintassi, intendo la conoscenza di base del linguaggio!) e poi prendere linguaggi specializzati come MQL, perché MQL è C, che ha una piccola torsione e semplificazione, dato che è progettato per un singolo compito e il compilatore conosce l'ovvio. E C a sua volta è una specie di Pascal compresso RAR, ma Pascal è quasi inglese =).

Ora, per quanto riguarda i loop:

Quando stavo imparando a programmare, mi aiutava l'analogia della somma in algebra, dove si specifica il valore iniziale di n, il valore finale di n e la formula con questo n da calcolare.

 
VVT:

Non si tratta nemmeno della possibilità di comprare un diploma all'epoca, il fatto è che negli ultimi 30 anni la tecnologia è andata così avanti che quelle conoscenze sono MOLTO carenti, per esempio io ho dovuto imparare autocad che allora non esisteva, ho anche fatto MOLTO basic C++. e così in tutto, bisogna costantemente imparare di più, migliorare, stare al passo con i tempi)



:-) autocad era in giro. Avevamo classi basate su di esso per imparare la circuiteria e la disposizione degli strati... circuiti
 
Aleksey Masterov:
:-) autocad era. Avevamo una classe basata su di esso per imparare i circuiti e la disposizione degli strati... dei circuiti stampati
.

Avevamo solo 22 computer, che venivano caricati solo alla fine della lezione) l'insegnante li teneva semplicemente accesi durante il giorno, era impossibile lavorare, non si parlava nemmeno di cad...

 
MrBrooklin:

Ciao Roman! È bello leggere che l'argomento sta aiutando qualcuno oltre a me. Grazie!

Per quanto riguarda i codici scritti da Vladimir Karputov, è un livello che non posso ancora raggiungere. In generale, non capisco i codici che includono file e classi. Perché un file o un altro è stato incluso in un altro EA è un grande mistero!

Sto soprattutto cercando e studiando i codici scritti senza i file e le classi incluse. Gli Expert Advisors scritti da Vladimir Khlystov sono molto buoni per l'autoapprendimento. Un GRANDE GRAZIE speciale a lui! È un peccato che ci siano troppo pochi Expert Advisors in MQL5.

Ora voglio spiegare perché vi chiedo di non suggerire codice già pronto. La ragione è che il codice pronto può suggerirvi e non siete più interessati a studiare la lingua. Ora avete inserito il codice già pronto nel vostro Expert Advisor; è diventato effettivo, ma a cosa serve? E al contrario, quando non si riesce a capire e a scrivere immediatamente qualcosa, come, per esempio, l'attuale incomprensione dell'operatore loop, è così stimolante e motivante che quasi non ci si può credere!

Non vedo nulla di male nell'imparare MQL5. Sto vivendo all'incirca la stessa fase della mia vita, quando studiavo elettronica e passavo dallo studio di un elemento base allo studio di un altro. L'unica differenza è che tutto viene percepito e assimilato più facilmente in gioventù che adesso. L'ho già sperimentato.

Grazie a TUTTI per le parole di sostegno e i suggerimenti costruttivi! Continuo a studiare MQL5! Per mezza giornata "sparirò", perché devo andare all'altro capo di Mosca per affari, e poi continuerò.

Sinceramente, Vladimir.

Sono d'accordo - anche i suoi codici sono buoni! Ti agiti per niente. Risolvete tranquillamente il codice senza fretta, e questo è tutto. Qui è tutto elementare - seleziona e traina: (quanto più facile - solo il tuo argomento di scelta Posizione necessaria ... :-))

//--- при таком методе мы будет сюда попадать на каждом тике.
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Bid()-ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }

            if(m_position.PositionType()==POSITION_TYPE_SELL)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Ask()+ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }
           }
  }

Oltre a questo, includere i file - significa che li avete nel vostro codice anche come funzioni e questo è tutto.

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

Ecco un altro articolo - trawl 2010 - trawl è nel consulente dalla consegna standard MACD.



Ecco un'altra grande masticazione sul calcolo del volume delle posizioni!!! Ci sono andato a fondo anch'io... :-)

Un altro modo per determinare il volume totale delle posizioni su un simbolo è quello di passare attraverso tutte le posizioni nel ciclo, il numero di posizioni è determinato dalla funzione PositionsTotal(). Controllando con la funzione PositionGetSymbol(), trova il simbolo necessario e determina il volume e la direzione della posizione(PositionGetDouble() con l'identificatore POSITION_VOLUME e PositionGetInteger() con l'identificatore POSITION_TYPE).

In questo caso, la funzione completa sarà come questa

double fSymbolLots(string aSymbol)
  {
   double TmpLots=0;
   for(int i=0;i<PositionsTotal();i++) // Перебор всех позиций
     {
      if(PositionGetSymbol(i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots=PositionGetDouble(POSITION_VOLUME);
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            TmpLots*=-1; // В зависимости от направления позиции устанавливаем знак числа
           }
         break;
        }
     }
   TmpLots=NormalizeDouble(TmpLots,2);
   return(TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...
Motivazione: