[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 533

 
001:

Non riesco a capire la logica del compilatore. Ho una funzione. Dichiaro una variabile esterna.

int start;

oltre il corpo della funzione

doppio B()
{

int i=0, k=OrdersHistoryTotal();
per (i=k-1; i<=k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
if(OrderProfit()< 0) {start=1;}

}

}

}

}

Il valore della variabile di inizio deve essere memorizzato ed equiparato a zero quando serve. Ma in questo caso, se OrderProfit()<0 , allora start=1, e se OrderProfit()> 0 , allora automaticamente start=0.

no

se OrderProfit()> 0, la variabile memorizzerà lo stesso valore

 
Tantrik:
Può dirmi dove trovarlo? È tutto in inglese.
Se non sei in grado di impostare MetaEditor in russo, usa il link Documentazione
 
ilunga:

no

Se OrderProfit()> 0, ciò che era nella variabile rimane


Ecco la funzione .

//+------------------------------------------------------------------+
double Balans()
{

int i=0, k=OrdersHistoryTotal();
for (i=k-1; i<=k; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if (OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" start= ",start);
if(lots<0.01) lots=0.01;
lots=NormalizeDouble(lots,2);
return(lots);
}
//+------------------------------------------------------------------+

Ecco il registro.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: open #1 sell 0.01 GBPUSD a 2,03190 tp: 2,03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1: chiudere #1 vendere 0,01 GBPUSD a 2,03190 tp: 2,03100 al prezzo 2,03210
16:01:36 2007.07.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: open #2 sell 0.01 GBPUSD a 2,02860 tp: 2,02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1: chiudere #2 vendere 0,01 GBPUSD a 2,02860 tp: 2,02770 al prezzo 2,02890
16:01:36 2007.07.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: open #3 sell 0.01 GBPUSD a 2,03640 tp: 2,03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1: chiudere #3 vendere 0,01 GBPUSD a 2,03640 tp: 2,03550 al prezzo 2,03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: open #4 sell 0.01 GBPUSD a 2,04880 tp: 2,04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1: chiudere #4 vendere 0,01 GBPUSD a 2,04880 tp: 2,04790 al prezzo 2,05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: open #5 sell 0.01 GBPUSD a 2,05140 tp: 2,05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1: chiudere #5 vendere 0,01 GBPUSD a 2,05140 tp: 2,05050 al prezzo 2,05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: open #6 sell 0.01 GBPUSD at 2.04840 tp: 2.04750 ok
16:01:36 2007.07.19 17:33 Tester: take profit #6 a 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: open #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1: close #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 at price 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start=1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: open #8 sell 0.01 GBPUSD at 2.06160 tp: 2.06070 ok
16:01:36 2007.07.25 02:12 Tester: take profit #8 a 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0

 
001:


Ecco la funzione .

//+------------------------------------------------------------------+
doppio Balans()
{

int i=0, k=OrdersHistoryTotal();
per (i=k-1; i<=k; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Stampa(" inizio= ",inizio);
if(lots<0.01) lots=0.01;
lots=NormalizeDouble(lots,2);
return(lots);
}
//+------------------------------------------------------------------+

Ecco il registro.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: aprire #1 vendere 0,01 GBPUSD a 2,03190 tp: 2,03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1: chiudere #1 vendere 0,01 GBPUSD a 2,03190 tp: 2,03100 al prezzo 2,03210
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 16:04 Bars_Trader GBPUSD,M1: aprire #2 vendere 0.01 GBPUSD a 2.02860 tp: 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1: chiudere #2 vendere 0,01 GBPUSD a 2,02860 tp: 2,02770 al prezzo 2,02890
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: aprire #3 vendere 0.01 GBPUSD a 2.03640 tp: 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1: chiudere #3 vendere 0,01 GBPUSD a 2,03640 tp: 2,03550 al prezzo 2,03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: aprire #4 vendere 0.01 GBPUSD a 2.04880 tp: 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1: chiudere #4 vendere 0.01 GBPUSD a 2.04880 tp: 2.04790 al prezzo 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: aperto #5 vendere 0.01 GBPUSD a 2.05140 tp: 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1: chiudere #5 vendere 0,01 GBPUSD a 2,05140 tp: 2,05050 al prezzo 2,05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: aperto #6 vendere 0.01 GBPUSD a 2.04840 tp: 2.04750 ok
16:01:36 2007.07.19 17:33 Tester: take profit #6 a 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: aprire #7 vendere 0.01 GBPUSD a 2.04810 tp: 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1: chiudere #7 vendere 0,01 GBPUSD a 2,04810 tp: 2,04720 al prezzo 2,04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: aperto #8 vendere 0.01 GBPUSD a 2.06160 tp: 2.06070 ok
16:01:36 2007.07.25 02:12 Tester: take profit #8 a 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0

Mostra il codice in modo più completo. Per esempio ora non si può vedere dove è dichiarata questa variabile.

 
ilunga:

mostrare il codice in modo più completo. Per esempio, in questo momento non si vede dove è dichiarata questa variabile.


extern int TF;
extern int TP;
extern int BARS;
extern int BarrierMinute;
extern int Step=0;
//--------
extern double ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ;
extern double Decrease=2;
extern inttern Wait=2;
extern inttern Ripetere;
extern int int MA_Sell;
extern int int Applied_Price_Sell;
//extern int MAPeriod_1;
//extern int Calc=8;
extern double Lots=5;
//----
int statico PrevTime=0;
doppi lotti;
int wait, start, step, repeat;
datetime openTime=0;
doppio lotto=0,1;
 
sergovan 26.01.2012 07:27 | banned | delete

Ciao, puoi dirmi come cambiare gli ordini OP_ BUYSTOP e OP_SELLSTOP nel mio EA per OP_SELLLIMIT e OP_BUYLIMIT? Ho provato e i miei ordini BUYLIMIT sono piazzati, ma quelli SELLLIMIT nemmeno, forse sto facendo qualcosa di sbagliato?


File allegati:
Expertd10.mq4 (5,82 KB) cancellare
 

Ciao amici, potete aiutarmi con questo problema?

Sto scrivendo un Expert Advisor con software stoploss, lo schema base dell'algoritmo è il seguente:


int start()
{double x, PreProfit, TekProfit;
for (x=0; x<1; x++) //L'operatore For loop (in teoria) dovrebbe essere eseguito 1 volta
{PreviousProfit=(-20);}// Assegna 1 valore temporale (in teoria)!

TextProfit=OrderProfit();//trova il profitto dell'ordine selezionato
if (PredPreviousProfit<TekProfit)//se il profitto attuale è superiore a quello precedente, allora...
{WeakProfit=TekProfit;}// Assegna alla variabile PredCompetitive un nuovo valore!
//allora la variabile PredCompanyProfit dovrebbe contenere il più alto valore di profitto di tutti i tempi!
}


La fregatura è che il valore della variabile "x" viene azzerato con un nuovo tick e il valore (-20) viene assegnato alla variabile "PredPreCompetition" con ogni nuovo tick! Così si perde tutto il senso dell'algoritmo! La variabile "PreProfit" è stata progettata per mantenere costantemente il valore massimo di profitto dell'ordine fino a quando questo valore viene "resettato" alla chiusura dell'ordine.

Qual è l'errore? Forse ci sono altre soluzioni per questo problema? Vi sono molto grato in anticipo!

 
bis:

La fregatura è che il valore della variabile "x" con un nuovo tick viene azzerato e l'assegnazione del valore (-20) alla variabile "PredPreprofit" viene eseguita ogni nuovo tick! Così si perde tutto il senso dell'algoritmo! La variabile "PrevPreprofit" è stata progettata per mantenere il valore massimo di profitto dell'ordine in modo permanente fino al "reset" forzato di questo valore quando l'ordine viene chiuso.

Qual è l'errore? Forse ci sono altre soluzioni per questo problema? Grazie in anticipo!

Vedere https://docs.mql4.com/ru/basis/variables/static
 
FAQ:
sergovan 26.01.2012 07:27 | banned | delete

Ciao, puoi dirmi come cambiare gli ordini OP_ BUYSTOP e OP_SELLSTOP nel mio EA per OP_SELLLIMIT e OP_BUYLIMIT? Ho provato a cambiare gli ordini BUYLIMIT ma SELLLIMIT non lo pensa nemmeno, forse sto facendo qualcosa di sbagliato?


Expertd10.mq4 (5,82 KB) Elimina


Non ti sei dimenticato di Bid e Ask quando l'hai cambiato?
 

Chi sa come rendere visibile un indicatore standard nello strategy tester?