Come codificare? - pagina 101

 

Ho avuto acquisti e vendite.

panteraschoice:
Questo backtesting ha dato compravendite o solo una delle due? Con me ho ottenuto solo acquisti (o solo vendite quando ho cambiato il codice). Non ho visto nulla che mostri un errore.
 

questo RSIFilter_v1... Non lo so...

il codice che mostri qui deve farlo...

Ecco quello che ho fatto... vedi allegati.

panteraschoice:
Quindi questo va bene?

double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);

if ( Sg>0) Order = SIGNAL_BUY;

se (Sg<0) Ordine = SIGNAL_SELL;
 
IN10TION:
Deve essere al 90% di qualità di modellazione, non so perché non si vede.

Penso che sia dovuto agli errori non corrispondenti. Backtester da alcune versioni ha questo problema. Ho sentito che è a causa di cattivi dati.

FerruFx

 

errore di abbinamento booleano

Ciao a tutti, ho questo errore e non capisco come risolverlo, penso che sia un problema di corrispondenza di diversi tipi di variabili

Ecco lo snippet del codice

doppio

BuyCondition,

SellCondition,

StopLong,

StopVendita;

gli indicatori sono

doppio indicatore1,

indicatore2

indicatore 3; (ma è int)

quindi voglio queste condizioni

StopLong = ((SellValueCurrent !=0 && SellValueCurrent2 !=0) || (TrendEnvDown != EMPTY_VALUE));

StopSell = ((BuyValueCurrent !=0 && BuyValueCurrent2 !=0) || (TrendEnvUp != EMPTY_VALUE));

quindi perché a volte non ho 0 quando ho bisogno di 1 e a volte ho entrambi1 quando o uno di loro dovrebbe bhe 1? questo ora per me non hanno senso a tutti perché è sbagliato? per favore aiutatemi!!!

p.s. sellvalue e buyvalue sono doppi

 

bisogno di più codice per risolvere questo...

se volete, pubblicate il vostro mq4

payback:
Ciao a tutti, ho questo errore e non capisco come risolverlo, penso che sia un problema di abbinamento di diversi tipi di variabili

ecco il frammento di codice

doppio

BuyCondition,

SellCondition,

StopLong,

StopVendita;

gli indicatori sono

doppio indicatore1,

indicatore2

indicatore 3; (ma è int)

quindi voglio queste condizioni

StopLong = ((SellValueCurrent !=0 && SellValueCurrent2 !=0) || (TrendEnvDown != EMPTY_VALUE));

StopSell = ((BuyValueCurrent !=0 && BuyValueCurrent2 !=0) || (TrendEnvUp != EMPTY_VALUE));

quindi perché a volte non ho 0 quando ho bisogno di 1 e a volte ho entrambi1 quando o uno di loro dovrebbe bhe 1? questo ora per me non ha senso a tutti perché è sbagliato? per favore aiutatemi!!!

p.s. sellvalue e buyvalue sono doppi
 
panteraschoice:
Qualcosa va storto. Il conto demo è stato cancellato completamente.

Ecco una piccola parte del log dell'esperto, con centinaia di quei "prezzi non validi per la funzione OrderClose":

GBPJPY a 209.23 sl: 212.23 tp: 208.23 ok

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: prezzo non valido 2.02750000

per la funzione OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 EURUSD,H1: prezzo non valido 1.55750000

per la funzione OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: chiudere #11685361 vendere

0.10 GBPCHF a 2.0270 sl: 2.0570 tp: 2.0170 al prezzo 2.0275

10:00:05 2730_BasketVentilatorVoorProg_2 USDCHF,H1: prezzo non valido 1.03350000

per la funzione OrderClose

10:00:05 2730_BasketVentilatorVoorProg_2 EURUSD,H1: prezzo non valido 1.55740000

per la funzione OrderClose

Questa è la parte nell'ea per la funzione OrderClose,

Non vedo cosa c'è di sbagliato in esso, forse qualcuno può aiutare?

//---------------------

int l_ord_total_72 = OrdersTotal();

for (int l_pos_76 = 0; l_pos_76 < l_ord_total_72; l_pos_76++) {

if (OrderSelect(l_pos_76, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol() == Symbol()) {

l_cmd_80 = OrderType();

se (l_cmd_80 == OP_BUY) {

l_count_56++;

if (l_isar_48 > Close[0]) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);

}

if (l_cmd_80 == OP_SELL) {

l_count_60++;

if (l_isar_48 < Close[0]) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);

}

}

}

}

//--------------------

Forse hai ricevuto nuovi prezzi dal broker, prova ad usare la funzione RefreshRates prima di OrderClose se ottieni un errore.

 

Errore OrderClose

Qualcosa va storto. Il conto demo è stato completamente spazzato via.

Ecco una piccola parte del log dell'esperto, con centinaia di quei "prezzi non validi per la funzione OrderClose":

GBPJPY a 209.23 sl: 212.23 tp: 208.23 ok

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: prezzo non valido 2.02750000

per la funzione OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 EURUSD,H1: prezzo non valido 1.55750000

per la funzione OrderClose

10:00:04 2730_BasketVentilatorVoorProg_2 GBPCHF,H1: chiudere #11685361 vendere

0.10 GBPCHF a 2.0270 sl: 2.0570 tp: 2.0170 al prezzo 2.0275

10:00:05 2730_BasketVentilatorVoorProg_2 USDCHF,H1: prezzo non valido 1.03350000

per la funzione OrderClose

10:00:05 2730_BasketVentilatorVoorProg_2 EURUSD,H1: prezzo non valido 1.55740000

per la funzione OrderClose

Questa è la parte nell'ea per la funzione OrderClose,

Non vedo cosa c'è di sbagliato in esso, forse qualcuno può aiutare?

//---------------------

int l_ord_total_72 = OrdersTotal();

for (int l_pos_76 = 0; l_pos_76 < l_ord_total_72; l_pos_76++) {

if (OrderSelect(l_pos_76, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol() == Symbol()) {

l_cmd_80 = OrderType();

se (l_cmd_80 == OP_BUY) {

l_count_56++;

if (l_isar_48 > Close[0]) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);

}

if (l_cmd_80 == OP_SELL) {

l_count_60++;

if (l_isar_48 < Close[0]) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet);

}

}

}

}

//--------------------

La compilazione non dà un errore.

 
IN10TION:
ho bisogno di più codice per risolvere questo problema... se vuoi, pubblica il tuo mq4

No, non voglio pubblicare tutto, ma penso che sia un problema con la corrispondenza dei tipi di variabili che cercherò di spiegare meglio

indicatore1 e 2 sono doppi giusto

quindi ho buyvaluecurrent = icustom(indicator1 etc etc);

buyvaluecurrent2 = icustom(indicator2 etc etc);

sellvaluecurrent = icustom(indicator1 etc etc); //double giusto?

trenendvup =icustom (indicator3 etc etc) ; //int

e così via

quindi buycondition= ((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup != Empty_Value);

questa dichiarazione funziona solo a volte e potrebbe anche essere un problema, quindi la mia domanda è perché? voglio che buycondition restituisca 1 o 0 non importa di quale tipo sia bool o double

 
Kalenzo:
Forse hai ricevuto nuovi prezzi dal broker, prova a usare la funzione RefreshRates prima di OrderClose se ottieni un errore.

Sì, grazie!

 

a seconda di ciò che gli indicatori iCustom stanno inviando...

double buyvaluecurrent = iCustom(indicator1);

doppio buyvaluecurrent2 = iCustom(indicatore2);

double sellvaluecurrent = iCustom(indicator1);

int trenendvup = iCustom(indicator3);

quindi...

if((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup !=0)) {buycondition=0;}

if((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup !=1)) {buycondition=1;}

non puoi mettere un bool nella tua buycondition solo usando "&&" e alcune condizioni, usa la funzione if()...

spero che questo aiuti, altrimenti è un piccolo passo avanti

payback:
No, non voglio pubblicare tutto, ma penso che sia un problema con la corrispondenza dei tipi di variabili che cercherò di spiegare meglio

indicator1 e 2 sono doppi a destra

quindi ho buyvaluecurrent = icustom(indicator1 etc etc);

buyvaluecurrent2 = icustom(indicator2 etc etc);

sellvaluecurrent = icustom(indicator1 etc etc); //double giusto?

trenendvup =icustom (indicator3 etc etc) ; //int

e così via

quindi buycondition= ((buyvaluecurrent !=0 && buyvaluecurrent2 !=0) && (trendenvup != Empty_Value);

Questa affermazione funziona solo a volte e potrebbe anche essere un problema, quindi la mia domanda è: perché? Voglio che buycondition restituisca 1 o 0 non importa di quale tipo sia bool o double