Come codificare? - pagina 336

 
tkuan77:
Ciao mladen, purtroppo ho appena riprovato e non funziona ancora.

C'è un altro modo in cui posso chiudere il mio commercio basato su un tempo specifico?

Saluti

Ryan

Ho usato questo codice:

extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Per testare, e ha chiuso l'ordine (vedi l'esempio)

File:
test_closed.gif  63 kb
 
mladen:
Ho usato questo codice:
extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Per testare, e ha chiuso l'ordine (vedi l'esempio)

Ciao mladen, grazie. il problema è stato risolto dalla mia parte. solo una nota a margine, puoi spiegarmi qual è lo scopo di queste poche righe nel tuo codice?

extern bool UseCurrSymbol = false; e

if (!UseCurrSymbol || OrderSymbol()==Symbol())

Saluti

Ryan

 
tkuan77:
Ciao mladen, grazie. il problema è stato risolto dalla mia parte. solo una nota a margine, puoi spiegarmi qual è lo scopo di queste poche righe nel tuo codice?

extern bool UseCurrSymbol = false; e

if (!UseCurrSymbol || OrderSymbol()==Symbol())

Saluti

Ryan

Hai usato la variabile UseCurrSymbol e quella linea esatta nel tuo codice

Ho dovuto fare quella variabile in modo che il codice usi le stesse variabili del tuo codice

 
mladen:
Hai usato la variabile UseCurrSymbol e quella linea esatta nel tuo codice ho dovuto fare quella variabile in modo che il codice usi le stesse variabili del tuo codice

Ciao mladen, scusa se ho preso quella parte di codice dalle fonti che mi hai fornito prima.

Quello che volevo dire è perché abbiamo bisogno di impostare un bool UseCurrSymbol su false e qual è lo scopo della seconda riga per --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

 
tkuan77:
Ciao mladen, scusa se ho preso quella parte di codice dalle fonti che mi hai fornito prima. quello che volevo dire era perché abbiamo bisogno di impostare un bool UseCurrSymbol su false e qual è lo scopo della seconda riga per --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

Non abbiamo bisogno di impostarlo su false

Se lo impostate a true, allora solo il simbolo corrente sarà controllato per gli ordini. Quindi ti permette di scegliere quali ordini vuoi processare

 

Ciao ragazzi!

Ho il seguente problema.

Voglio che un valore di un indi icustom, per esempio iCustom(NULL,0, "MACD",12,26,9,0,i) sia utilizzato in una sottofunzione come:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

per ottenere il momentum del "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Quando lo chiamo normalmente con Mom(High,22,Bars,i)

questo funziona, ma quando uso l'indi personalizzato al posto di "High", ovviamente non funziona.

Quindi la mia domanda è: come posso implementare questo per far funzionare il codice?

Grazie per qualsiasi aiuto!

Ciao, AT

 
at120:
Ciao ragazzi!

Ho il seguente problema.

Voglio che un valore di un indi icustom, per esempio iCustom(NULL,0, "MACD",12,26,9,0,i) sia utilizzato in una sottofunzione come:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

per ottenere il momentum del "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Quando lo chiamo normalmente con Mom(High,22,Bars,i)

questo funziona, ma quando uso l'indi personalizzato al posto di "High", ovviamente non funziona.

Quindi la mia domanda è: come posso implementare questo per far funzionare il codice?

Grazie per qualsiasi aiuto!

Ciao, AT

a120

Hai un indicatore chiamato "macd" nella cartella degli indicatori (non intendo il macd integrato, ma un macd personalizzato)? Se sì, controlla se i parametri sono corretti

 

Ciao Mladen!

Grazie per il replay veloce!

Scusa il MACD era un cattivo esempio, prendi qualsiasi altro indi un MACD personalizzato o qualcosa del genere.

Ho controllato l'output tramite finestra extra e test indi /output per impostare le giuste impostazioni,

per essere sicuro che "iCustom(NULL,0, "myIndi",0,i)" abbia i parametri giusti. Naturalmente è compilato, cartella giusta, ecc...

Ottengo sempre l'errore (quando uso una variabile) - per esempio

doppio mom1 = iCustom(NULL,0, "myIndi",0,i); -> mom(mom1,Bars,20,i)

-> "mom" - parametro conversazione non consentito o quando lo uso direttamente ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Errore: iCustom - parametro passato come riferimento, variabile attesa

Grazie per l'aiuto e le informazioni!

Ciao, AT

 
at120:
Ciao Mladen!

Grazie per il replay veloce!

Scusa il MACD era un cattivo esempio, prendi qualsiasi altro indi un MACD personalizzato o qualcosa del genere.

Ho controllato l'output tramite finestra extra e test indi /output per impostare le giuste impostazioni,

per essere sicuro che "iCustom(NULL,0, "myIndi",0,i)" abbia i parametri giusti. Naturalmente è compilato, cartella giusta, ecc...

Ottengo sempre l'errore (quando uso una variabile) - per esempio

doppio mom1 = iCustom(NULL,0, "myIndi",0,i);-> mom(mom1,Bars,20,i)

-> "mom" - parametro conversazione non consentito o quando lo uso direttamente ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Errore: iCustom - parametro passato come riferimento, variabile attesa

Grazie per l'aiuto e le informazioni!

Ciao, AT

Se usi la semplice chiamata iCustom() allora l'errore può verificarsi solo nei parametri

Non puoi usare iCustom() come parametro per la funzione mom() (controlla l'intestazione della funzione mom e vedrai quali parametri e che tipo di parametri accetta la funzione mom()). Il risultato di iCustom() è definito come "double" - non può prendere il passo di un array passato per riferimento. Controlla anche questo thread: https: //www.mql5.com/en/forum/173108 - forse aiuta

 

Ciao Mladen!

Penso che la chiamata del mio iCustom sia giusta, perché in test e normale(esportazione di dati o uso come indi)

funziona bene finora. Penso che il problema sia come hai menzionato il valore double/array.

Quando ora uso un

doppio mom1[];

mom1 = iCustom(NULL,0, "myIndi",0,i);

e che un -> mom(mom1,Bars,20,i);

-> "mom" - parametro conversazione non consentito

Come faccio a scrivere bene?

Grazie mille e ciao, AT