[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 776

 
vasya_vasya:
creando un oggetto errow in cui si seleziona il codice del simbolo o utilizzando un oggetto etichetta

Grazie) Eh, è un peccato che non ci siano proprio dei punti(
 
FoxUA:
Non sono un lavoratore, sto imparando a lavorare, sto leggendo un tutorial postato qui, ma sto cercando di scrivere un EA per la settimana che sto cercando di lavorare. Sto cercando di scrivere un EA per un lavoro, ma ho imparato più del suo nome e della sua applicazione solo una settimana fa, Non so cosa faccia, ma ho trovato difficile smontare le cose senza sapere a cosa servono, così ho deciso di provare a fare qualcosa di nuovo, ma ovviamente non si può vedere tutto, ho fatto solo l'unica cosa che volevo fare: ho tolto l'ORDINE REMARKED al prezzo REMARKED e non è stato un grosso problema. MA GRAZIE PER IL SUO TEMPO,

Senza offesa. Il tuo codice è complicato per un principiante. Bisogna passare dal semplice al complesso. Ci deve essere un approccio sistematico all'apprendimento, altrimenti non serve a niente.
 
Posso usare mql4 per trovare il numero di barra o qualsiasi parametro di prezzo di questa barra non nel periodo corrente del grafico, se il tempo della sua (di questa barra) apertura è noto?
 
drknn:

Non si offenda. Il tuo codice è complicato per un principiante. Bisogna passare dal semplice al complesso. Dovete avere un approccio sistematico all'apprendimento, altrimenti non servirà a nulla.

Non sono d'accordo con te lì, dovresti avere un obiettivo in mente e il resto seguirà, ma hai bisogno di aiuto. Per quanto riguarda la complessità, cosa non è così complicato e semplice con il robot di trading di esempio? Non sto facendo un grande EA con calcoli complicati ma uno semplice che apre il mercato e pende, poi modifica e cancella l'intera scheda per imparare il funzionamento e i metodi di influenzare l'altro!
 
FoxUA:

Non sono d'accordo con te, dovresti avere uno scopo, tutto il resto seguirà, ma, ovviamente, non puoi fare a meno di un aiuto. Per quanto riguarda la complessità, cosa pensi che sia semplice e facile da costruire? Non sto facendo un grande EA con calcoli e indicatori complessi, ma uno semplice che apre il mercato uno, poi modifica e cancella l'intera scheda per imparare il principio di funzionamento e i metodi per influenzare l'altro!


Cambia la logica di costruzione del codice e la logica di denominazione delle variabili. Questa è la prima cosa da fare. Va bene se il nome di una variabile è più lungo di 5 caratteri. Nella lotta per la chiarezza del codice, la chiarezza dei nomi, delimitando i blocchi con spazi, segni di paragrafo e commenti è dannatamente importante. Più si impara un linguaggio (e non solo MQL), più il codice diventa complicato. Se non prendete l'abitudine di dare nomi di variabili facili da leggere, e se non prendete l'abitudine di organizzare il codice in blocchi (con spiegazioni), prima o poi creerete del codice dove avrete difficoltà a trovare l'errore logico, maledicendovi per aver reso il vostro codice così illeggibile.

Se il codice che hai mostrato non ti sembra complicato per un principiante, questo è solo un vantaggio per te.

 
FoxUA:
Bene, cosa mi consigliate? Sarei molto interessato alla vostra opinione!

Ecco un esempio di codice organizzato in blocchi e dove i nomi delle variabili non fanno sorgere dubbi sul perché si applica una particolare variabile - guardate i loro nomi, i commenti ai blocchi...

 
RekkeR:
Buona sera a tutti e buona settimana. Credo di essere stupido con il calore, in realtà la domanda è come determinare la distanza tra le linee in pip?

Speed1=(Price12-Price11)/(Bar11-Bar12); Speed2=(Price22-Price21)/(Bar21-Bar22);

Price1=Price11+Speed1*Bar11; Price2=Price21+Speed2*Bar21;

Distanza=(Prezzo1-Prezzo2)/Punto;

Questo se si deve determinare la distanza tra due linee al momento attuale.

 
drknn:

Ecco un esempio di codice organizzato in blocchi e in cui i nomi delle variabili non suscitano dubbi sul perché si applica questa o quella variabile - guardate i loro nomi, i commenti ai blocchi...

Sono d'accordo con il fatto che a volte bisogna ricordare quello che si voleva scrivere lì e non si ricorda, ma è più un metodo di lavoro, ma non uno studio, è per così dire il pennello nelle mani di un artista, e mi interessa la scelta dei colori e delle tecniche per scrivere un semplice quadretto, perché ho già un paesaggio ed è chiaramente modellato, quindi mi chiedevo è possibile avere in mano un libro interessante che descrive la tecnica di scrittura per in tutto lo stesso su internet e nel libro di testo, solo in altre parole e quello che hai scritto sull'esempio delle radici, è una tecnica di robotica quindi sarei felice di leggere se gli esempi e le immagini!

 
tara:

Speed1=(Price12-Price11)/(Bar11-Bar12); Speed2=(Price22-Price21)/(Bar21-Bar22);

Price1=Price11+Speed1*Bar11; Price2=Price21+Speed2*Bar21;

Distanza=(Prezzo1-Prezzo2)/Punto;

Questo se si deve determinare la distanza tra due linee al momento attuale.

Ci sono diverse linee orizzontali, ho bisogno di determinare le quote tra loro in diverse combinazioni, in linea di principio, in questa fase sono abbastanza soddisfatto della determinazione tra le due linee, il resto lo farò manualmente. Forse c'è uno script già pronto o un simile indicatore? Grazie per il vostro feedback.
 
FoxUA:

...

questo è il tipo di cose che mi piacerebbe leggere con esempi e immagini!

Bene, facciamo un esperimento! Scriviamo due script. Uno conterrà una descrizione corretta della funzione. L'altro conterrà quello sbagliato. Quindi, questo è lo script giusto:

#property show_inputs //эта строка выводит окно пользовательских параметров на экран
extern double DlyaKornya=300; // величина. из которой нужно извлечь кв. корень
//+------------------------------------------------------------------+
//|                 Старт работы правильного скрипта                 |
//|                 вычисляющего квадратный корень                   |
//+------------------------------------------------------------------+
int start(){
  double Koren=0;
        Alert("--------------------------------------------");
  if(DlyaKornya<0){
    Alert("Ошибка! Переменная ",DlyaKornya," не может быть меньше нуля");
    return(0);
  }
  Koren=MyKoren(DlyaKornya);
  Alert("Наша подпрограмма выдала результат = ",Koren);
        Alert("На вход функции MyKoren() было подано число = ",DlyaKornya);
  Alert("---- Правильное применение функции ----");
        return(0);
}
//+------------------------------------------------------------------+
//|                  Пользовательские подпрограммы                   |
//+------------------------------------------------------------------+

// ------------ MyKoren() -------------------------------------
// функция возвращает квадратный корень числа
// ------------------------------------------
double MyKoren(double MyValue){
        double Rezult=0;
        Alert("Внутри функции переменная MyValue имеет значение = ",MyValue);
        Rezult=MathSqrt(MyValue);
        return(Rezult);
}

E questo è il copione sbagliato:

#property show_inputs //эта строка выводит окно пользовательских параметров на экран
extern double DlyaKornya=300; // величина. из которой нужно извлечь кв. корень
//+------------------------------------------------------------------+
//|                 Старт работы неправильного скрипта               |
//|                 вычисляющего квадратный корень                   |
//+------------------------------------------------------------------+
int start(){
  double Koren=0;
        Alert("--------------------------------------------");
  if(DlyaKornya<0){
    Alert("Ошибка! Переменная ",DlyaKornya," не может быть меньше нуля");
    return(0);
  }
  Koren=MyKoren(DlyaKornya);
  Alert("Наша подпрограмма выдала результат = ",Koren);
        Alert("На вход функции MyKoren() было подано число = ",DlyaKornya);
  Alert("----НЕправильное применение функции ----");
        return(0);
}
//+------------------------------------------------------------------+
//|                  Пользовательские подпрограммы                   |
//+------------------------------------------------------------------+

// ------------ MyKoren() -------------------------------------
// функция возвращает квадратный корень числа
// ------------------------------------------
double MyKoren(double MyValue=36){
        double Rezult=0;
        Alert("Внутри функции переменная MyValue имеет значение = ",MyValue);
        Rezult=MathSqrt(MyValue);
        return(Rezult);
}

Non è corretto perché la linea double MyKoren(double MyValue=36){ inizializza la variabile MyValue con il valore = 36. Non ha senso perché passiamo il valore = alla variabile DlyaKornya nella subroutine .

Ora lanciamo entrambi gli script in modo sequenziale al grafico. Ecco cosa vediamo:

Ahimè, entrambi gli script hanno prodotto lo stesso risultato.

Il secondo script (errato) avrebbe dovuto produrre valore = 6. Il compilatore molto probabilmente ha incorporato una funzione a prova di errore poiché la linea double MyKoren(double MyValue=36){ non ha senso. L'inizializzazione della variabile in essa con il valore =36 probabilmente funzionerà solo se la funzione viene chiamata senza specificare i parametri. Nel nostro caso, deve essere successo quanto segue - quando si chiama la subroutine, la variabile double MyValue è stata dichiarata per prima, poi le è stato assegnato il valore = 36 e solo dopo le è stato assegnato il valore memorizzato nella variabile DlyaKornya. Non riesco a pensare a nessun'altra spiegazione.

Comunque, è meglio non usare costruzioni come double MyKoren(double MyValue=36){ ma scriverlo come dovrebbe essere - double MyKoren(double MyValue){, altrimenti vi chiederete perché il sottoprogramma non funziona come dovrebbe.