Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 404

 
fenix74:
evillive, ho provato a sostituire come hai detto tu, ma credo che anche questo richieda un po' più di conoscenza, la compilazione dà "53 error(s), 18 warning(s)", il risultato è allegato. evillive, posso chiederti di fare queste sostituzioni, se hai tempo.

Dovete solo stare più attenti, o non essere pigri a specificare il tipo di variabile su ogni riga, o mettere una virgola al posto del punto e virgola. E nelle chiamate di indicatori le variabili devono essere definite, non solo da una torcia.


Ecco un esempio, e poi - per conto vostro...

Anche se il secondo file sembra essere ok, tranne che per un punto in un nome di variabile. Niente punti nei nomi delle variabili.

 
Vinin:
Solo quattro funzioni sono accessibili dal server. Aprire, modificare e chiudere (cancellare) un ordine
artmedia70:
Funzioni di trading. Sono gli unici che inviano una richiesta specifica al server commerciale e ricevono una risposta da esso.

Grazie.

 
Roger:
L'utente può ordinare la storia solo per la percezione visiva, i numeri di posizione nella storia non possono essere cambiati.


Come puoi dire se una strategia è redditizia o meno in base agli indicatori?
 
khorosh:

E se avete intenzione di smontare la funzione, non avreste dovuto tagliare l'intestazione della funzione, lì ci sono informazioni importanti.

Restituisce il tipo dell'ultima posizione aperta o -1 - questo significa che se non ci sono posizioni chiuse, allora quando la funzione viene chiamata, il suo valore sarà uguale a -1

sy - nome dello strumento (coppia di valute)

mn - numero magico. Se impostiamo -1, la funzione restituirà il tipo dell'ultimo ordine chiuso indipendentemente dal numero magico utilizzato

Sapete anche questo, tranne la funzione "numero magico".
Grazie per aver fornito una guida utile.
Non è necessario troncare la descrizione delle variabili.

artmedia70:

1. facciamo a meno del sarcasmo, ok? Ha reso l'apprendimento facile e conveniente. Cosa c'entra il genio?
2. Argomentativo.
3. Non capisci un bel niente a giudicare dai tuoi commenti nel codice.
4. Succede.

Per quanto riguarda il punto 2, ecco un esempio:

Ci sono meno cose inutili.

1 - non c'era sarcasmo! La genialità sta nel fatto che ha reso il mio apprendimento comodo e facile.
2 - tante persone quante sono le opinioni. :)
3 - è ancora comprensibile. Non ho chiarito gli obiettivi variabili che vengono eseguiti, il che ha fatto emergere questa opinione.

Grazie per la descrizione dettagliata dell'azione delle stringhe di funzione, mi sono assicurato della mia comprensione della funzione presentata.

Si noti che ora eravamo impegnati in una conversazione virtuale su quattro argomenti contemporaneamente. È molto vantaggioso esporre le proprie risposte su internet punto per punto, ma alcune persone lo prendono come un insulto, mi dispiace.

A proposito, rivolgetevi a me come "voi", dato che la mia età non mi permette di essere indirizzato come "voi" (un'opinione formata in relazione al corso di studi sociali del nono grado).
khorosh:

1 - I vostri esempi non sono corretti. 2 - Quando chiamate una funzione che ha dei parametri, dovete dare i valori di questi parametri tra parentesi, separati da virgole. Dovreste anche sapere che non a tutte le funzioni vengono assegnati dei valori. 3 - Se il tipo della funzione è nullo, allora non ha alcun significato ed è destinata ad eseguire qualche azione, o a calcolare qualche variabile. In quest'ultimo caso, è necessario conoscere i nomi di queste variabili per poter utilizzare i risultati di questa funzione.

Mi scusi, la risposta è suddivisa in paragrafi.
1 - i miei esempi non sono corretti - questa è una conseguenza della mia ignoranza.
2 - Ho completamente dimenticato le staffe. Grazie. Mi hanno ricordato loro.
3 - vuoto ? È possibile usarlo al posto del bool quando si calcola per azioni (*, /, +, - )?


artmedia70:

Il compilatore genererà un errore su questa linea dicendo che la variabile non è dichiarata.

Il requisito minimo è questo:


Sì, sì, ho dimenticato le parentesi, ma me le hanno ricordate, grazie comunque!
 
Profitov:

Come si può dire dalla storia che la strategia è redditizia o in perdita, basandosi sulle letture degli indicatori?

Gli indicatori utilizzano i prezzi di chiusura/apertura e i massimi/minimi delle barre per i calcoli.
I valori dei prezzi di chiusura/apertura e dei massimi/minimi delle barre sono memorizzati nella storia.
Quindi, gli indicatori ottengono i valori dei prezzi di chiusura/apertura, massimi/minimi delle barre dalla storia,
di conseguenza l'indicatore fa i calcoli dalla storia.
si può concludere che se la strategia è basata sulle indicazioni dell'indicatore, si può controllare se è redditizia o non redditizia usando i dati storici.

Vinin:

Dovreste prima familiarizzare con il concetto di funzione. E poi si può passare a ciò che fanno e a come usarli.

Familiarizzare con le tre interpretazioni della parola 'funzione'.
 
Link_x:


3 - vuoto ? È possibile usarlo al posto di bool quando si conta per azioni (*, /, +, - )?

Non capisco la domanda. La documentazione fornisce un esempio di una funzione di tipo void che stampa il nome dell'errore:

void errmesg(string s)
  {
   Print("error: "+s);
  }
 

E forse dopo la terza volta qualcuno presterà ancora attenzione alla mia richiesta?

Ho scritto una funzione CAM, ma il tester dà l'errore 4051, cioè un numero impossibile di lotti. Qualcuno ha un'opinione su questo?

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble (((OrderOpenPrice()-Bid)*Point)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble (((Ask-OrderOpenPrice())*Point)*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
 
Trader7777:

E forse dopo la terza volta qualcuno presterà ancora attenzione alla mia richiesta?

Ho scritto una funzione CAM, ma il tester dà l'errore 4051, cioè un numero impossibile di lotti. Qualcuno ha un'opinione su questo?


Il prezzo deve essere moltiplicato per i punti?

(OrderOpenPrice()-Bid)*Point)
 
Trader7777:

E forse la terza volta qualcuno presterà ancora attenzione alla mia richiesta?

Ho scritto la funzione da SAM, ma il tester dà errore 4051, cioè numero di lotti impossibile. Qualcuno ha un'opinione al riguardo?

 double Lot=0; double TotalLot=0;
if (Lot>0)
Notate il valore della variabile che imposta il numero di lotti quando viene aperta una posizione.
Questo valore è zero.
È impossibile aprire una posizione con volume zero per il trading.



vadynik:


Il prezzo deve essere moltiplicato per i punti?


È anche possibile, la cosa principale è scrivere il codice correttamente.
 
vadynik:


Il prezzo deve essere moltiplicato per i punti?


Supponiamo che io abbia comprato a 1,50.000 e che il prezzo sia salito a 1,49950. Se non si moltiplica per punti, viene fuori 0,0005*0,1/100=0,0000005 non abbastanza


Se moltiplicato, allora 50*0,1/100= 0,05 è il valore giusto.