Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 656

 
Vitaly Muzichenko:

Tu in un ramo di teorici clown, ci amore per disegnare non è chiaro che cosa, e non chiaro perché

E ci sono un sacco di thread simili su questo forum - almeno discuteteli!

Non capisco Vitaly! - Dici sul serio? - O stai scherzando?

Come è noto, la Trading Theory in quanto tale non esiste in natura.

Ci sono diverse "Onde di Elliott", numeri di Fibonacci, funzioni di Weierstrass, ecc...

Ma non ha niente a che vedere con la "teoria del trading".

E di quale "teoria del trading" possiamo parlare, se il 99,9999% degli utenti del forum, degli sviluppatori e dei trader non è in grado di costruire la più semplice media mobile di tendenza.

Così disegnano "non so cosa" e "non so perché" - come hai detto tu.

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

E non si può nemmeno "disegnare" correttamente la tendenza più semplice. - Ne sono sicuro. Perdonatemi se sono schietto. Ma non si può.

Ma tu parli facilmente di CLOWNS, e parli di qualcosa che tu stesso non conosci e non puoi fare.

Questo è il paradosso di cui siamo testimoni.

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

Ma non è questo che mi stupisce di più, è qualcosa di completamente diverso.

Vedo migliaia di freelance e tutti i tipi di accademici nel mercato del forex che offrono i loro servizi a tutti.

C'è pubblicità ovunque. Pagate - e vi aiuteranno, pagate - e insegneranno ...

Va bene - ti pago, io rispondo.

Ma mi mostri le sue qualifiche.

COSTRUISCIMI LA TENDENZA PIÙ SEMPLICE!!!

Nessuno l'ha mai costruito, né i freelance, né gli accademici, né gli sviluppatori - NESSUNO.

Hanno paura di essere imbarazzati. Perché non sanno come fare. Anche se a prima vista non c'è nulla di difficile.

Questa è la procedura standard. Lo abbiamo in MT4/MT5. L'hanno semplicemente costruito e hanno mostrato la loro maestria.

Ma non ci sono casi simili. Tutti disegnano "non capisco cosa" e "non capisco perché". Sono tutti pagliacci?

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

E tu dici CLOWNS TEORICI!

Chi sono i più CLOWNS qui - non lo so nemmeno io!!!

 
Artyom Trishkin:

1. Perché?

2. Che cos'era? Come è stato?

1. Perché? - per i calcoli.

2. che cosa era? - Quindi numeri diversi,Bid-buyPrice= 1.00000000000006551e-05 e non 0.00001. e perchédouble(Bid-buyPrice) ha dato 0.00001, quelli richiesti conversione adoppio, se ho capito bene, quando Bid e buyPrice sono già di tipo double?

 
Andrey Sokolov:

1. perché? - Per i calcoli.

2. che cosa era? - Quindi numeri diversi,Bid-buyPrice= 1.00000000000006551e-05 e non 0.00001. e perchédouble(Bid-buyPrice) ha dato 0.00001, quelli richiesti conversione adoppio, se ho capito bene, quando Bid e buyPrice sono già di tipo double?

Perché convertire esplicitamente i tipi in doppio se si opera con numeri doppi? Vi ho mostrato una conversione del tipo double in tipo stringa quando viene stampato.

Sei sicuro che 1.000000000000000006551e-05 e 0.00001 sono numeri diversi? Formato di output diverso - non hai specificato il metodo di output in Comment(), quindi è un formato di output scientifico. Ecco perché ho scritto - o fare una conversione esplicita del tipo doppio in stringa, o usare DoubleToString() con la precisione richiesta.

C'è tutto nell'aiuto - e non è nemmeno nell'accessibilità passo dopo passo, solo un clic del mouse nel menu della documentazione.

Eccone uno dall'aiuto, ho segnato quello di cui ho bisogno:

Commento

Emette un commento definito dall'utente nell'angolo superiore sinistro del grafico.

void  Comment(
   argument,     // первое значение
   ...           // последующие значения
   );

Parametri

...

[in] Qualsiasi valore, separato da virgole. Un carattere di avanzamento linea "\n" o "\r\n" può essere usato per dividere l'output su più linee. Il numero massimo di parametri è 64. La lunghezza totale del messaggio (compresi i caratteri di servizio non visualizzabili) non può essere superiore a 2045 caratteri (i caratteri superflui saranno troncati in uscita).

Valore restituito

Nessun valore di ritorno

Nota

Gli array non possono essere passati a Comment(). Gli array dovrebbero essere stampati come elementi.

I dati di tipo doppio vengono stampati fino a 16 cifre decimali dopo la virgola, e possono essere emessi in formato tradizionale o scientifico - a seconda di come l'inserimento è più compatto. I dati di tipo float vengono emessi con 5 cifre decimali dopo il punto. Per produrre numeri reali con una precisione diversa o in un formato esplicitamente specificato, usate DoubleToString().

I dati di tipo bool sono emessi come "vero" o "falso". Le date sono stampate come YYYY.MM.DD HH:MI:SS. Per emettere la data in un altro formato, usate la funzione TimeToString(). I dati del tipo di colore sono emessi o come stringa R,G,B o come nome del colore, se questo colore è presente nel set di colori.

Quandosi lavora nello strategy tester in modalità ottimizzazione, la funzione Comment() non viene eseguita.

 
Artyom Trishkin: Sei sicuro che 1.000000000000000006551e-05 e 0.00001 siano numeri diversi? Formato di output diverso - non hai specificato il metodo di output in Comment(), quindi è il formato di output scientifico che viene sostituito per te dal terminale. Ecco perché ho scritto - o fare una conversione esplicita del tipo doppio in stringa, o usare DoubleToString() con la precisione desiderata.

La domanda è sorta perché la condizione in cui si confrontava la variabile*Point e il risultato di questa sottrazione non funzionava, dove un'altra variabile con valore doppio veniva sottratta da Bid con valore doppio e il risultato della sottrazione doveva essere convertito di nuovo in doppio.

Perché non è il tipo doppio nel processo di sottrazione?

Ho letto l'aiuto ma non ho visto nessuna risposta, quindi chiedo qui.

 
Andrey Sokolov:

La domanda è sorta perché la condizione in cui si confrontava la variabile*Point e il risultato di questa sottrazione non funzionava, dove un'altra variabile con valore doppio veniva sottratta da Bid con valore doppio e il risultato della sottrazione doveva essere convertito di nuovo in doppio.

Perché non è il tipo doppio nel processo di sottrazione?

Ho letto l'aiuto ma non ho visto nessuna risposta, quindi chiedo qui.

Quando si sottrae il doppio dal doppio, il risultato sarà il doppio. È una cosa sicura.

Ma solo voi sapete a cosa lo state paragonando.

 
Artyom Trishkin:

Quando si sottrae il doppio dal doppio, il risultato è il doppio. Questo è sicuro.

Ma solo voi sapete con cosa state facendo il confronto.

extern double First_PartialTrailingStart=15;

if(Digits() ==3 || Digits()==5) {First_PartialTrailingStart*=10; }

if(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - funziona

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - non funziona

 
Andrey Sokolov:

extern double First_PartialTrailingStart=15;

if (Digits() ==3 || Digits()==5) {First_PartialTrailingStart*=10; }

if(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - funziona

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - non funziona

Tutto funziona. Script:

//+------------------------------------------------------------------+
//|                                                  TestCompare.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property script_show_inputs
#define   Bid       SymbolInfoDouble(Symbol(),SYMBOL_BID)
//--- input parameters
input uint     InpFirstPartialTrailingStart  =  15;   // Старт трала через (пунктов)
input uint     InpMultiplier                 =  10;   // Множитель пунктов
input int      InpPriceShift                 =  20;   // Отступ цены Buy от Bid
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double part_trailing_start=double(InpFirstPartialTrailingStart<1 ? 1 : InpFirstPartialTrailingStart);
double multiplier=double(InpMultiplier<1 ? 1 : InpMultiplier);
double value=part_trailing_start*multiplier*Point();
double shift=InpPriceShift*Point();
double buy_price=Bid-shift;
//---
   double res=NormalizeDouble(Bid-buy_price,Digits());
   bool   cmp=NormalizeDouble(res-value,Digits())>=0;
   Alert
     (
      "Старт трала через ",(string)value," пп."
      ", Цена Bid=",(string)Bid,
      ", цена Buy=",(string)buy_price,
      ", Bid-цена Buy=",DoubleToString(res,Digits()),
      ", Bid-buy_price>=value: ",string(cmp)
     );
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Tutto funziona. Il copione:

Grazie, darò un'occhiata.

 
È possibile ottenere il prezzo di chiusura di una candela sul suo ultimo tick?
 
Andrey Sokolov:
È possibile ottenere il prezzo di chiusura di una candela sul suo ultimo tick?
Questo è il prezzo dell'offerta. Un'altra domanda: come fate a sapere che questa è l'ultima zecca?