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

 
Bion >> :

Ho fatto come mi avete consigliato.

Dovreste usare il datetime LastTime;
datetime Pausa=3600;

int start()
{
se(TimeCurrent()<LastTime+Pause)return(0);

...

bool cl() {if(OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType();
double l=OrderLots();
int tik=OrderTicket();Alert("tik=", tik);
}
se (t==OP_BUY) OrderClose(tik,l,Bid,3,Red);
se (t==OP_SELL) OrderClose(tik,l,Ask,3,Green);
LastTime=TimeCurrent();
}

Ma nello Strategy Tester, l'ordine si apre secondo le condizioni, ma non reagisce al tempo.

Inoltre, il tester non reagisce al parametro "tempo di esistenza dell'ordine in sospeso", cioè non viene cancellato quando è il momento di farlo.

È normale che sia così?

Come possiamo fare in modo che il tester consideri il tempo passato dalla chiusura dell'ordine?


In secondo luogo, non è molto bello assegnare un valore alla variabile globale in qualche funzione oscura, ci sono due modi per uscirne, o per riferimento o assegnando un valore alla variabile globale se la funzione restituisce un valore di tipo booleano, ovviamente anche le variabili per if è allarmante, ma questo è il vostro business .... ma è solo un modo di dire))) Non è chiaro dal vostro codice quando questa funzione viene chiamata e se viene chiamata affatto. Provate a controllare i risultati nel file di log e capirete.
 

Ecco il codice completo, ho rimosso tutte le funzioni, dichiarato le variabili come dovrebbe essere, ma il risultato è lo stesso - nella modalità test, non reagisce al tempo, piazza ordini extra sulla stessa barra.

Di cosa ha bisogno?


double q0=0;
double q1=0;
double q2=0;
double q3=0;
datetime LastTime;
datetime Pause=3600;
int typ, tik;
double l;

int start()
{

datetime t=Hour();

if (t==8) {q0=0; q1=0; q2=0; q3=0;}

if (t>=9) {

int i0=0;
while (q0==0) { q0=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,0,i0); i0++; }

int i1=0;
while (q1==0) { q1=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,1,i1); i1++; }

int i2=0;
while (q2==0) { q2=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,2,i2); i2++; }

int i3=0;
while (q3==0) { q3=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,3,i3); i3++; }


Comment("g0=",q0, "\n", "g1=",q1, "\n", "g2=",q2, "\n", "g3=",q3 ); }

double os0=iOsMA(NULL,0,5,26,9,4,0);

double os1=iOsMA(NULL,0,5,26,9,4,1);

// vedere da qui


if(TimeCurrent()<(LastTime+Pause))return(0);

if ( OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS);
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ==OP_BUY && os1<0) { LastTime=TimeCurrent(); OrderClose(tik,l,Bid,3,Red);}
if (typ==OP_SELL && os1>0) { LastTime=TimeCurrent();OrderClose(tik,l,Ask,3,Green);}

}

return(0);
}
//+------------------------------------------------------------------+

 

Salve.

Domanda per gli esperti

La situazione è la seguente: l'Expert Advisor è sospeso sul conto demo, le quotazioni passano, i prezzi cambiano, ma l'Expert Advisor ha smesso di fare trading da qualche tempo, un errore viene generato nel log:


2009/12/30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. Nessun prezzo

Coppia - USDCAD


Iniziato il 2009.12.30 16:46:06 e fermato il

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 128. Tempo di attesa per la transazione scaduto

Sono d'accordo che 43 minuti sono significativi, e quel che è peggio è che incasina l'algoritmo di ekspert.

Ancora più interessante è l'errore che appare quando cerco di inviare un ordine OP_BUYSTOP :-0 (che tipo di quotazioni possono esserci per gli ordini in sospeso?)


136 SENZA PREZZI = SENZA QUOTAZIONI:


Perché non ci sono prezzi se cambiano costantemente sullo schermo?


Il problema è stato sollevato qui https://www.mql5.com/ru/forum/105903/page2 da un rispettato goldtrader, ma non è stato risolto ufficialmente (spero che questo problema non sia una specie di TABO che non vogliamo discutere in bella vista)


Mi piacerebbe sapere "perché è così" e "come prevenire o gestire questo tipo di errori".


Spero che non sia un TABOO che la gente non vuole discutere in pubblico). Grazie in anticipo per la risposta.

 
AndBar >> :

Salve.

Domanda per gli esperti -

La situazione è la seguente: Expert Advisor su un conto demo, le quotazioni vengono passate, i prezzi cambiano, ma Expert Advisor ha smesso di fare trading per qualche tempo, l'errore viene generato nel log:


2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 136. No prices
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. No prices
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Error code = 136. Nessun prezzo

Coppia - USDCAD


L'errore è iniziato il 2009.12.30 16:46:06 e si è fermato il

2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Codice errore = 128. Tempo di attesa per la transazione scaduto

Dovreste essere d'accordo che 43 minuti sono significativi e, quel che è peggio, rovinano l'algoritmo dell'esperto.

Ancora più interessante è l'errore che appare quando si cerca di inviare un ordine OP_BUYSTOP :-0 (che tipo di quotazioni possono esserci per gli ordini in sospeso?)


136 SENZA PREZZI = SENZA QUOTAZIONI:


Perché non ci sono prezzi se sullo schermo cambiano costantemente?


Il problema è stato sollevato qui https://www.mql5.com/ru/forum/105903/page2 da un rispettato goldtrader, ma non è stato risolto ufficialmente (spero che non sia una sorta di questione TABU che non si vuole discutere in bella vista)


Vorrei sapere "perché" e "come prevenire o gestire questo tipo di errori".

qual è la revisione della piattaforma?

È stato discusso più di una volta sui diversi flussi di dati. Per il trading automatico, il flusso si è chiuso. A quanto pare.

 
AndBar писал(а) >>

136 SENZA PREZZI = SENZA QUOTAZIONI:

Questo accade spesso prima che la notizia esca. Non c'è niente da fare, a meno che tu non faccia un ordine in anticipo e lo tiri dietro al prezzo il più a lungo possibile. 43 minuti sono troppo lunghi.

 
Bion писал(а) >>

Ecco il codice completo, rimosso tutte le funzioni, dichiarato le variabili come necessario, ma il risultato è lo stesso - in modalità test non reagisce al tempo, fa ordini extra sulla stessa barra.

La domanda riguardava una pausa dopo la chiusura. Ci sarà una pausa dopo la chiusura.

-

Ci sono diverse aperture su una barra. Dopo un'apertura dovresti memorizzare il tempo della barra e prima di un'apertura dovresti controllare che il tempo della barra non sia uguale al tempo dell'ultima apertura. È meglio usare GlobalVariable per ricordare questo tempo.

-

In tutto mentre sarebbe una buona idea aggiungere while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - meglio farlo dopo aver controllato se l'ordine è veramente chiuso: if(OrderClose(...))LastTime=TimeCurrent();

 
Integer писал(а) >>

La domanda riguardava una pausa dopo l'orario di chiusura. Ci sarà una pausa dopo la chiusura.

-

Aperture multiple sulla stessa barra. Dopo l'apertura si dovrebbe ricordare l'ora del bar, e prima di aprire controllare che l'ora del bar non sia uguale all'ultima ora di apertura. È meglio usare GlobalVariable per ricordare questo tempo.

-

In tutto mentre sarebbe una buona idea aggiungere while (q0==0 && i<Bars).

-

LastTime=TimeCurrent(); - meglio farlo dopo aver controllato se l'ordine è veramente chiuso: if(OrderClose(...))LastTime=TimeCurrent();

Dal tutorial - una variabile GV può avere solo il tipo doppio - come dovremmo mettere il numero di secondi lì allora?

Ho controllato se un ordine è stato chiuso, ma continua a fallire e si ottiene ancora un errore.


se(Time[0]<(LastTime+Pause))return(0);

if ((OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );

if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}

if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS;)
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
se (typ==OP_BUY && os1<0) if (OrderClose(tik,l,Bid,3,Red)) LastTime=Time[0];
se (typ==OP_SELL && os1>0) if (OrderClose(tik,l,Ask,3,Green)) LastTime=Time[0];
}

Potresti darci un esempio o un link dove il compito di ritardare l'apertura dell'ordine successivo di un'ora dopo il precedente è stato implementato con successo?

 
Bion писал(а) >>

Dal libro di testo - una variabile GV può avere solo il tipo double - allora come si fa a metterci il numero di secondi?

Ahhhh, allora dimenticate tutto e passate un felice anno nuovo!

Buon anno a tutti!

 
Stavo lavorando con un indicatore, tutto andava bene, poi quando ho cambiato timeframes il terminale ha iniziato a bloccarsi, ho reinstallato il windup, si blocca ancora. Perché(((((((((((((
 
Fosfalugel писал(а) >>
Stavo lavorando con un indicatore, tutto andava bene, poi quando ho cambiato timeframe il terminale ha iniziato a bloccarsi, ho reinstallato Windows, si blocca ancora. Perché(((((((((((((

La spia dovrebbe probabilmente essere buttata via. O chiedere a Babbo Natale. È l'ultimo dell'anno.

Motivazione: