Auguri per MT5 - pagina 55

 
-Alexey-:

Se parliamo di versatilità, è auspicabile poter cambiare il volume di una posizione non solo in incrementi, ma anche in lotti. Cioè più o meno così:

1) Aprire una posizione con un certo lotto: PositionOpen(...,lot,....); /questa funzione è univoca e non cambia, rimane com'è ora/

2) Cambiare il volume della posizione, per esempio aumentare:

a) PositionIncrease(..., 2, mode_lot_change,....) - aumento del volume della posizione di 2 lotti; /per il caso in cui sia conveniente cambiarlo in lotti.

b) PositionIncrease(..., 2, mode_multiply_change,....) - aumenta il volume della posizione di 2 volte; /per il caso in cui è conveniente cambiarlo in tempi/


CTrade ha una serie di metodi, secondo l'aiuto:"Operazioni con posizioni". Ci sono: apertura della posizione, chiusura della posizione, cambiamento di SL o TP di una posizione. Suggeriamo di completarlo. Invertire una posizione significa eseguire un trade opposto con un volume maggiore di quello attuale, in modo che la direzione della posizione aperta sia invertita. Ridurre una posizione significa ridurre il volume della posizione aperta. Aumentare è il contrario.

Я за то чтобы в библиотеку включались универсальные вещи, которые устраивают всех (чтобы потом не пришлось переопределять функционал стандартных классов).

Sì, questo è un punto molto importante.
La PositionOpen() è un metodo universale della classe CTrade, che permette non solo di aprire una posizione, ma anche di aumentare (diminuire) il volume di quella esistente o di invertirla. Basta chiamarlo con l'appropriato order_type nella direzione della posizione per aggiungere, nella direzione opposta per tagliare, o raddoppiare il volume nella direzione opposta per capovolgere.
 
Valmars:
PositionOpen() è un metodo universale della classe CTrade che permette non solo di aprire una posizione ma anche di aumentare (diminuire) il suo volume o invertirlo. Basta chiamarlo con l'appropriato order_type nella direzione della posizione per aggiungere, nella direzione opposta per tagliare, o raddoppiare il volume nella direzione opposta per capovolgere.

Intendo la stessa cosa. Forse ci dovrebbe essere una funzionalità specializzata per il trimming o il flipping, ma ovviamente non in CTrade (se stiamo parlando di una libreria standard).

Se la domanda riguardasse una qualsiasi classe di "esperti", personalmente non mi dispiacerebbe.

 

1. Per favore, restituisci la leva 1:500 (preferibilmente 1:200), sto aspettando un tale regalo da te da un paio di settimane.

2. Ho un'altra domanda: se il mio conto è 1:500 e la leva massima disponibile nel tester è 1:100, quali parametri considererà il tester?

LO VOGLIO DAVVERO TANTO!

 
Valmars:
PositionOpen() è un metodo universale della classe CTrade che permette non solo di aprire una posizione, ma anche di aumentare (diminuire) la dimensione di quella esistente o di invertirla. Basta chiamarlo con l'appropriato order_type nella direzione della posizione da aggiungere, nella direzione opposta per tagliare il volume richiesto, o raddoppiare il volume nella direzione opposta per capovolgere.

Vediamo cosa bisogna fare per invertire una posizione, per esempio per raddoppiare il suo volume.

1) Determinare se c'è una posizione aperta.

2) Determinare la direzione della posizione aperta.

3) Determinare il volume della posizione aperta.

4) Determinare quanto denaro è necessario per aprire la posizione opposta con 3 volte il volume (o chiudere prima la stessa posizione, e poi aprire una posizione doppia).

5) Determinare se i fondi necessari sono disponibili.

6) Determinare il multiplo minimo di un lotto.

7) Determinare il volume in multiplo più vicino a quello necessario.

8) Controlla di nuovo se ci sono abbastanza fondi.

9) Rimuovere SL e TP dalla posizione esistente usando PositionModify.

10) Impostare lo slittamento consentito.

11) Aprire la posizione opposta.

12) Determinare il prezzo di apertura risultante dall'inversione.

13) Imposta i nuovi SL e TP usando PositionModify.


Mentre scrivevo questo, ho fatto alcuni errori.


Questo è un pezzo di codice che decine di migliaia di persone devono scrivere di nuovo con errori. Perché, quando puoi farlo una volta in una biblioteca?

Questo è un codice che non tutti sarebbero in grado di oritizzare correttamente come un nuovo metodo di una classe derivata. Perché, se gli sviluppatori possono farlo correttamente?

È una cosa scomoda. Perché scrivere un mucchio di codice quando si può usare una funzione già pronta PositionReverse e una stringa?

Intendo la stessa cosa. Potrebbe essere necessario scrivere funzionalità specializzate di trimming o flipping, ma ovviamente non in CTrade (se stiamo parlando della libreria standard).

E dove, che dovrebbe essere disponibile per un utente medio ed essere presente nella guida? Perché non in CTrade (supponendo che questi metodi non causino problemi)?

Dopo tutto, si può aprire un trade senza PositionOpen. Perché hanno introdotto questo metodo in Ctrade? Penso che questo wrapper sia stato introdotto per comodità, perché tiene conto di molte cose che non sono ovvie per un utente principiante.

 
-Alexey-:

Vediamo cosa bisogna fare per invertire una posizione, per esempio per raddoppiare il suo volume.

1) Determinare se c'è una posizione aperta.


3) Determinare il volume della posizione aperta.

4) Determinare quanto denaro è necessario per aprire la posizione opposta con 3 volte il volume (o chiudere prima la stessa posizione, e poi aprire una posizione doppia).

5) Determinare se i fondi necessari sono disponibili.

6) Determinare il multiplo minimo di un lotto.

7) Determinare il volume in multiplo più vicino a quello necessario.

8) Controlla di nuovo se ci sono abbastanza fondi.

9) Rimuovere SL e TP dalla posizione esistente usando PositionModify.

10) Impostare lo slittamento consentito.

11) Aprire la posizione opposta.

12) Determinare il prezzo di apertura risultante dall'inversione.

13) Imposta i nuovi SL e TP usando PositionModify.


Mentre scrivevo questo, ho fatto alcuni errori.


Questo è un pezzo di codice che decine di migliaia di persone devono scrivere di nuovo con errori. Perché, quando puoi farlo una volta in una biblioteca?

Questo è un codice che non tutti possono oritizzare correttamente come un nuovo metodo di una classe derivata. Perché, se gli sviluppatori possono farlo correttamente?

È una cosa scomoda. Perché scrivere un mucchio di codice quando si può usare una funzione PositionReverse già pronta e una sola riga?

E dove, in modo che possa essere disponibile per un utente comune ed essere presente nella guida? Perché non in STrade (supponendo che questi metodi non causino problemi)?

Dopo tutto, si può aprire un trade senza PositionOpen. Perché hanno introdotto questo metodo in Ctrade? Penso che questo wrapper sia stato introdotto per comodità, perché tiene conto di molte cose che non sono ovvie per un utente principiante.

Hai ragione su molte cose. Per aprire una posizione con PositionOpen(...), dovresti anche specificare volume, prezzo aperto, SL e TP e controllare che tutti questi parametri siano sufficienti, e dovresti ottenerli prima e controllarne la validità, se non vuoi ottenere un errore quando apri la posizione?
È lo stesso per il rollover. Bene, si specifica "Invertire una posizione per tale e tale simbolo" ed è tutto, e lo si fa invertire di 100 punti a 4 cifre
superiore o inferiore. Potreste non essere felici di questo.
Ma esaminiamo i suoi argomenti uno per uno.
1) Determinare se c'è una posizione aperta.

Penso che questo dovrà ancora essere fatto prima di decidere di invertire una posizione.

2) Determinare la direzione di una posizione aperta.

Penso che questo sia anche obbligatorio se si decide di girare. In ogni caso, è elementare, una volta scelta la posizione.

3) Determinare il volume della posizione aperta.

Simile al punto 2.

4) Determinare quanti soldi hai bisogno per aprire la posizione opposta con 3 volte il volume (o chiudere prima la stessa e poi aprire un doppio).

Verificare la sufficienza dei fondi prima di inviare una richiesta.

5) Determinare se i fondi necessari sono disponibili.

Da combinare con il punto 4.

6) Determinare il multiplo minimo del lotto

Naturalmente.

7) Determinare il volume che si avvicina di più alla molteplicità necessaria.

State aprendo delle posizioni, vero? Pertanto, avete già questa funzionalità. Tutto quello che dovete fare è chiamare la funzione.

8) Controllare di nuovo se ci sono abbastanza fondi.

Il metodo standard.

9) Rimuovere SL e TP dalla posizione esistente usando PositionModify.

Non ne hai bisogno.

10) Impostare uno slittamento ammissibile.

Certo. Il più piccolo è un inserimento più accurato, ma più requote.

11) Aprire una posizione opposta.

Qui è dove applichiamo PositionOpen.

12) Determinare il prezzo di apertura risultante dall'inversione.

È anche abbastanza elementare. Dobbiamo solo riselezionare la posizione.

13) Imposta i nuovi SL e TP usando PositionModify.

Se non l'avete calcolato e impostato immediatamente, potete farlo ora.

Se avete fatto un errore da qualche parte o avete dimenticato qualcosa, gli sviluppatori si sono presi cura di questo, prima i parametri della richiesta sono controllati per la validità usando la funzione OrderCheck(m_request,m_check_result) e, in caso di errore, la richiesta non sarà inviata al server con un messaggio corrispondente nel giornale.

Ma come volete che il metodo standard decida tutto per voi: la deviazione, il prezzo, il volume e gli stop?

 
Come volete che il metodo standard gestisca tutto: la deviazione, il prezzo d'inversione, il volume e gli stop? <br / translate="no">.
Il metodo standard con deviazione fa esattamente lo stesso (decide per me) - è specificato all'interno della classe per default. Cioè è un parametro opzionale, e non è presente in PositionOpen. Se necessario, viene cambiato usando un metodo speciale, STrade.deviation...., ma - quando necessario, piuttosto che sempre specificato. Questo è conveniente. Lo stesso vale per alcuni altri parametri impostati di default in CTrade.

Il prezzo del roll, ovviamente, è impostato dalla strategia o dall'utente. Tuttavia, dopo che il prezzo è stato cambiato, deve essere controllato perché c'è slippage e spread. Ecco perché lo stop o il profitto calcolato in anticipo (e specificato nella funzione) può risultare diverso. Ho menzionato il prezzo solo per questo, cioè se i nuovi valori di stop e profitto sono specificati nella funzione di rollover (se - allora il controllo e l'impostazione non sono necessari). L'algoritmo è semplice - risolto automaticamente dalla funzione rollover - senza il mio coinvolgimento. Questo è conveniente.

Se esiste una posizione aperta, che è il caso della proposta, allora sorgono azioni che possono essere eseguite senza controlli. Per esempio:

- Non è necessario specificare comprare o vendere quando si chiama la funzione in questione, perché il programma può rilevare automaticamente la direzione del commercio per l'inversione, per un calo e per un aumento. Non c'è niente per controllare gli errori. Qui abbiamo: meno un parametro nella chiamata di funzione (senza acquisto/vendita). È conveniente? Sì, il metodo standard l'ha risolto per me.

- il volume della posizione è noto, il che significa che secondo la richiesta dell'utente, la funzione Pivot o Reduce/Enlarge può calcolare il volume necessario della transazione per il modo specificato (in lotti, o in incrementi) in relazione al volume già noto, utilizzando il multiplo più vicino del lotto minimo. Queste sono azioni tipiche e possono essere programmate una volta sola. Sono principalmente quelli di cui sto parlando.

Per quanto riguarda il controllo della correttezza - avete ragione, sembra, dovete farlo voi stessi.

Beh, hai specificato "posizione inversa per tale e tale carattere" e questo è tutto, ed è invertito di 100 punti a 4 cifre

Ecco come si fa in PositionOpen. Ma potete specificare parametri opzionali, se volete, in modo che questo non accada. Questo è quando si chiamano: stop e take (parametri di funzione opzionali), separatamente prima che il metodo di deviazione sia chiamato. Cioè la protezione da una tale situazione in CTrade 1) è presente e 2) è convenientemente progettata. L'utente non deve pensare a come creare tutta questa struttura. Ecco di cosa si tratta. L'unica cosa è che non c'è un controllo dello spread.
 

Non so se è stato menzionato o no, ma mi piacerebbe che MetaEditor fosse in grado di collassare alcune parti di codice... Per esempio se da parentesi a parentesi, per, funzioni, ecc.

In altre parole, come è implementato negli ambienti di programmazione, come Visual Studio. Perché a volte ci si stanca di scorrere tutto lo schermo alla ricerca di qualcosa...

In questo modo, puoi lasciare aperti solo quei frammenti di codice con cui stai lavorando, e il resto del codice è collassato...

Grazie... :-)

 
St0nE:

Non so se è stato menzionato o no, ma mi piacerebbe che MetaEditor fosse in grado di collassare alcune sezioni di codice...

è stato detto. si può dare un segno più qui https://www.mql5.com/ru/forum/2931
 
Grazie... Fatto il check-in... :-)
 

Ho guardato l'argomento diMetaQuotes Software ha firmato un accordo di partnership a lungo termine con International Business Times e mi sono ricordato di quello che volevo suggerire da molto tempo:

1. Aggiungere una voce "Segna come letto" al menu dei contenuti della scheda "Notizie", con la possibilità di applicarla a più notizie selezionate in una sola volta (ora bisogna aprire ogni notizia separatamente). Questo permetterà di saltare le notizie "non interessanti" e tenere traccia di quelle nuove.

2 Mostrare il numero di nuove notizie non lette in una scheda come si fa in MetaEditor:Segnalibri

Questo può non essere il compito principale, ma aggiungerà comodità al vostro lavoro...

Motivazione: