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

 
Il mio sistema di trading si basa sull'analisi dei dati storici. Ho costruito una funzione per calcolare il segnale direttamente nell'EA. Tuttavia, per quanto ho capito, durante i test, l'Expert Advisor usa solo i dati nella finestra visiva (ha molte meno barre che nelle finestre standard con la storia caricata dall'archivio). Ho bisogno di almeno diverse decine di migliaia di barre di storia per calcolare il segnale. C'è un modo per risolvere questo problema, cioè permettere all'EA sotto test di utilizzare l'intera storia, anche se il periodo sotto test è più piccolo? Sto usando MT4 e MQL4
 
sannin:

Aiuto se non ti dispiace

per insegnare a un Expert Advisor a fare trading in base all'indicatore

BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910

UP= iCustom(Symbol(),NULL,"Now",BQuant,0,0);

DOW= iCustom(Symbol(),NULL,"Now",BQuant,1,0);


if(DOW){OrderSend(Symbol(), OP_SELL, Lot, Bid, Slip, 0, 0, 0, "Forex-Robots.ru SELL", Magic, 0,Red);}


if(UP ){OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip, 0, 0, 0, "Forex-Robots.ru BUY", Magic, 0,Blue);}


Commento

(

"Un profitto: ", UP,

"Un profitto: ", DOW

);

Ho provato a leggere i valori nel commento ma sono sempre statici.

Il nome dell'indicatore dovrebbe essere "BS_Living Now ver #1".
 

Sì, ho un indicatore sotto il nome Now nella cartella

Ho messo i valori nel commento per vedere come cambiano i numeri ma sono statici sia nel tester che dal vivo e non sono zero

 
sannin:

Sì, ho un indicatore sotto il nome Now nella cartella

Ho postato i valori nel commento per vedere come cambiano i numeri e sono statici, sia nel tester che nella vita reale e non sono zero.


Se è simile a un frattale, il suo valore dovrebbe essere cercato nella storia, ma non sulla barra dello zero.

Z.I.: Esatto, inizia i calcoli dalla barra #1, non ha senso cercare qualcosa sulla barra zero...

 

Potete consigliarmi come aggiungere a un EA la funzione di chiudere tutti gli ordini se la distanza tra il prezzo di mercato e il prezzo dell'ordine più lontano supera i 1000 pips per esempio?

 
evillive:

Se è simile in principio ai frattali, allora ha senso cercare il suo valore più avanti nella storia, ma non alla barra zero.

Z.I.: Esatto, inizia i calcoli dalla barra 1, non ha senso cercare qualcosa sulla barra zero...

Dalla barra #2 per codice, Extrim_Detect(s+1);
 
AlexeyVik:

E di conseguenza la condizione

Grazie Alexey. Ho fatto tutto come mi avete raccomandato.

extern int    Min_iMA_OpenDistance   = 60;
extern int    Max_iMA_OpenDistance   = 85; 

condizione di ingresso modificata

int GetSignal()
{
  int Signal = 0;

  double iMA_Signal = iMA(Symbol(), 0, iMA_Period, 0, MODE_SMMA, PRICE_CLOSE, 0);
  
  int Ma_Bid_Diff = MathAbs(iMA_Signal - Bid)/vPoint;
  
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid > iMA_Signal) Signal = -1;
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid < iMA_Signal) Signal = 1;
  
  return(Signal);
}

Tuttavia, dopo aver apportato le modifiche il compilatore "giura" sulla seguente linea

iMA_OpenDistance  *= DcD; 

iMA_OpenDistance' - identificatore non dichiarato - identificatore non dichiarato. Ho letto il tutorial e l'aiuto sugli identificatori ma non funziona nulla. Potete dirmi dove ho sbagliato e come rimediare?

 
tatianati:

Grazie Alexey. Ho fatto come mi consigliate.

Condizione di ingresso cambiata

Tuttavia, dopo aver apportato le modifiche, il compilatore "giura" sulla seguente linea

iMA_OpenDistance' - identificatore non dichiarato. Ho letto il tutorial e l'aiuto sugli identificatori, ma non funziona nulla. Potete dirmi dove ho sbagliato e come rimediare?

A quanto pare dovremo usare i poteri della telepatia.

Prima c'era solo iMA_OpenDistance, poi è stato diviso in 2 variabili Min_iMA_OpenDistance e Max_iMA_OpenDistance, quindi la variabile iMA_OpenDistance è rimasta non dichiarata.

Non è necessario cambiare i valori delle variabili esterne. È meglio dichiarare una variabile aggiuntiva e farci quello che si vuole.

Da quanto ho capito, la variabile vPoint è Point*10. Di conseguenza Ma_Bid_Diff è la distanza dal Bid al MA in punti a 4 cifre. E DcD cos'è? Le mie capacità telepatiche non sono sufficienti. Ma comunque, mi sembra che iMA_OpenDistance *= DcD; non sia necessario. O si tratta di una conversione in punti a 5 cifre? Per quale motivo?

 
AlexeyVik:

A quanto pare dovremo usare la telepatia.

All'inizio c'era solo iMA_OpenDistance poi è stato diviso in 2 variabili Min_iMA_OpenDistance e Max_iMA_OpenDistance, quindi la variabile iMA_OpenDistance è rimasta non dichiarata.

Non è necessario cambiare i valori delle variabili esterne. È meglio dichiarare una variabile aggiuntiva e farci quello che si vuole.

Come ho capito la variabile vPoint è Point*10. Di conseguenza Ma_Bid_Diff è la distanza dal Bid al MA in punti a 4 cifre. Cos'è il DcD? Le mie capacità telepatiche non sono sufficienti. Ma comunque, mi sembra che iMA_OpenDistance *= DcD; non sia necessario. O si tratta di una conversione in punti a 5 cifre? Per quale motivo?



Alexey, sei davvero un telepate, è davvero una traduzione a 5 cifre. Grazie per il chiarimento e per come non ho capito Min_iMA e Max_iMa invece di iMa. Grazie ancora.

P.S. Se aprite un corso di telepatia, sarò il primo ad iscrivermi :-)

 

Forse qualcuno ha un tale consigliere.

1. apre due diversi ordini di acquisto e vendita simultaneamente

2. quando uno di loro chiude in profitto. apre di nuovo due diversi ordini di acquisto e di vendita, ecc.

Se non dovete fare nulla per perdere gli ordini, sembra essere abbastanza semplice. forse qualcuno sarà in grado di scriverlo per voi? Vi sarei molto grato!