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

 
jekk:

Buon giorno, per favore aiutatemi a gestire gli ordini in sospeso. Per esempio, dovrei piazzare un ordine pendente dall'indicatore. Come posso scriverlo?

Prezzo = NormalizeDouble (iMA(Symbol(),TimeFrame_D1, EMA_Period_21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// come correggere questo?

SL = NormalizeDouble (Ask- StopLoss*Point,Digits);

TP = NormalizeDouble (Level_plus_1500_D1,Digits); // questo per il profitto - Level_plus_1500_D1 - livello EMA?

OrderSend(Symbol(),OP_BUYLIMIT,Lots,Price,Slippage, SL,TP,NULL,Magic,0,clrLime);


Price =  NormalizeDouble (iMA(Symbol(),PERIOD_D1, EMA_Period_ 21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// как правильно прописать эту строчку? 
 TP = NormalizeDouble (Level_plus_1500_D1-iMA(Symbol(),PERIOD_D1, 21,0,MODE_EMA,PRICE_MEDIAN,0),Digits); // и эту для профита -  Level_plus_1500_D1 - уровень ЕМА  ?

Leggete l'aiuto, è tutto lì e abbastanza comprensibile.

E SL e TP dovrebbero essere impostati meglio dal prezzo dell'ordine (Price), non dal mercato, ha più senso in qualche modo.

 
evillive:

Leggete l'aiuto, è tutto lì ed è abbastanza chiaro.

Ed è meglio impostare SL e TP dal prezzo dell'ordine (Price), piuttosto che dal prezzo di mercato, ha più senso.

Grazie!
 

Ho provato a usare la funzione scritta in questo articolo https://www.mql5.com/ru/articles/1357. Ho deciso di controllare come gli ordini vengono aperti dai segnali di questa funzione e ho scritto un semplice codice:

Metatrader si presenta con questo:

Non so cosa fare, non so se c'è qualcosa di sbagliato nelle virgolette o nel codice della funzione.

Il codice della funzione è allegato.

File:
func_ad.mqh  33 kb
 
LBatters:

Ciao a tutti, potete aiutarmi con questo problema. Ho lavorato con la funzione scritta in questo articolo https://www.mql5.com/ru/articles/1357. Ho deciso di controllare come gli ordini vengono aperti dai segnali di questa funzione e ho scritto del semplice codice:

Metatrader dà questo:

Non so cosa farci.

Ho allegato il codice della funzione.


Probabilmente non è la stessa funzione nel rimorchio, non c'è niente con gli array in questo alla linea 59, e l'errore è chiaramente fuori dall'array, alla linea 59, nel secondo screenshot.
 
evillive:

Probabilmente non è la stessa funzione nel rimorchio, non c'è niente con gli array in questo alla linea 59, e l'errore è chiaramente fuori dall'array, alla linea 59, secondo il secondo screenshot.

No, stavo solo commentando, quindi le linee si sono spostate.

Ecco quello che ho compilato.

File:
func_ad1.mqh  63 kb
 
LBatters:

No, stavo solo commentando, quindi le linee si sono spostate.

Questo è quello che ho compilato.


prova
for (i=2; i<=nBars-2; i++)
 
evillive:

Prova
for (i=2; i<=nBars-2; i++)


ora si apre un solo trade ed è la fine del test, non capisco perché sottrarre 2?
 
LBatters:

Ora si apre un trade ed è lì che finisce il test, non capisco perché sottrarre 2?


Ci sono altri array nell'inline, probabilmente ci inciampa già. O si sta ancora lamentando della linea 59?

E la sottrazione - l'aritmetica è semplice - se ci sono 100 elementi, la loro numerazione è 0...99 (perché nBars=100, quindi 99 è che proprio nBars-1), e quindi puoi nel tuo algoritmo contare da 1 (confrontando a 0 e 2 barre) a 98 (confrontando a 97 e 99 barre), a 99 lascerà già l'array.

 
evillive:


Ci sono altri array nell'inline, probabilmente ci inciampa già. O si sta ancora lamentando della linea 59?

E la sottrazione - l'aritmetica è semplice - se ci sono 100 elementi, la loro numerazione è 0...99 (99 è proprio nBars-1), quindi puoi contare da 1 (confrontando con 0 e 2 barre) a 98 (confrontando con 97 e 99 barre) nel tuo algoritmo, a 99 andrai fuori dall'array.


Ma è meno o uguale, cioè 99 è incluso, vero? L'errore 130 appare durante l'apertura dell' ordine.

 
LBatters:


O è meno o è uguale, cioè 99 è incluso. Non è così? L'errore 130 appare durante l'apertura dell'ordine.


Abbiamo raggiunto i=99, questo è l'ultimo elemento.

if (TempIND[i]<TempIND[i-1] && TempIND[i+1]>=TempIND[i])

Dov'è[i+1]?

Motivazione: