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

 
Roger:


Mostra la funzione stessa.

Se è void ClosePartPosBySelect(double Part), cambiare in

void ChiuderePartPosBySelect()

Ma come si può passare un parametro in questa funzione? Supponiamo:
if (x==2 && y==4) Part=0.5;
else Part=2;

ClosePartPosBySelect(Part);

La funzione ClosePosBySelect() di Kim è modificata in modo che richieda un parametro passato di tipo doppio, che è la variabile Part

 
keekkenen:

due modi

1. Nella funzione in cui il valore viene cambiato, aggiungete una e commerciale,

es. void function( double& Part ){}

poi, quando un valore all'interno della funzione viene cambiato, il nuovo valore tornerà al luogo della chiamata

2. rimuovere la variabile dalla lista dei parametri della funzione, poiché la variabile è definita globalmente, il suo valore può essere cambiato in qualsiasi punto del codice senza passarla come parametro...

La prima variante è migliore, poiché ci può essere più di una variabile dichiarata globalmente (e dentro una funzione)...


Ho dato un'occhiata al post, in effetti, la risposta è già stata data...

Grazie, farò una prova...
 
zelek:

Salve cari professionisti.

Mi piacerebbe molto scrivere un EA che apra due ordini di vendita e di acquisto allo stesso tempo.

Poi, dopo una certa quantità di punti (parametro lim), l'ordine perdente verrebbe chiuso,

e uno redditizio sarà chiuso quando il prezzo è sceso sotto il prezzo massimo da quando l'ordine è stato aperto

(una specie di trailing stop virtuale).

In agonia ho creato questo, ma non funziona... non funziona

Per favore suggerisci qualcosa

Come pensate di decidere se si tratta di un pullback o di un'inversione? O aprirete due posizioni ad ogni pullback? È un fallimento...
 
artmedia70:
Come si fa allora a passare un parametro a questa funzione?


Se il parametro è dichiarato globalmente, non avete bisogno di passarlo, assegnate direttamente il valore desiderato. Solo allora non ha bisogno di essere sovrascritta nella funzione.
 
È interessante...

Questo è tutto il 2009... Solo le letture di Momentum sono utilizzate per l'ingresso:
Sul TF H1 cerchiamo il momento della rottura del movimento Momentum, e sul TF M5 troviamo il momento esatto per entrare nel mercato. Quando si apre una posizione, controlliamo il tempo di apertura della posizione precedente, in modo da non aprire l'intero deposito al momento del segnale di entrata...
Il momento di entrare nel mercato è confermato dalla posizione di Demarker nelle zone di ipercomprato/ipervenduto su TF M5 e M15...
... A proposito, senza armadietti era anche positivo.

... Anche il fatto che ho negligentemente eseguito il test solo con Demarker, ha comunque dato risultati interessanti:

C'è qualcosa del genere da qualche parte:

//---------------------------------------------------------
   MomML_0   =iMomentum(NULL,PERIOD_M5,14,PRICE_CLOSE,0);
   MomML_1   =iMomentum(NULL,PERIOD_M5,14,PRICE_CLOSE,1);
   MomML_2   =iMomentum(NULL,PERIOD_M5,14,PRICE_CLOSE,2);
   
   MomST_0  =iMomentum(NULL,PERIOD_H1,14,PRICE_CLOSE,0);
   MomST_1  =iMomentum(NULL,PERIOD_H1,14,PRICE_CLOSE,1);
   MomST_2  =iMomentum(NULL,PERIOD_H1,14,PRICE_CLOSE,2);
   
   DeM5     =iDeMarker(NULL,PERIOD_M5, 14,0);
   DeM15    =iDeMarker(NULL,PERIOD_M15,14,0);

//---------------------------------------------------------
//==============================================================================================
   // Поиск пересечений
//==============================================================================================  
//----------------------- Проверка условий для старшего ТФ --------------------    
// ---------- Покупка --------
   MomBuy56M15=false;
   if (
         MomST_0<100 && 
         MomST_1<100 && 
         MomST_2<100 &&
         MomST_0>MomST_1 &&
         MomST_1<MomST_2 &&
         DeM15<0.3
      )                                
         {   
            MomBuy56M15=true;
         }

// ---------- Продажа --------
   MomSell56M15=false;
   if (
         MomST_0>100 && 
         MomST_1>100 && 
         MomST_2>100 &&
         MomST_0<MomST_1 &&
         MomST_1>MomST_2 &&
         DeM15>0.7
      )                                
         {   
            MomSell56M15=true;
         }
//----------------------- Проверка условий для младшего ТФ ---------------------    
// ---------- Покупка --------
   MomBuy56M5=false;
   if (
         MomML_0<100 && 
         MomML_1<100 && 
         MomML_2<100 &&
         MomML_0>MomML_1 &&
         MomML_1<MomML_2 &&
         DeM5<0.3   
      )                                
         {   
            MomBuy56M5=true;
         }

// ---------- Продажа --------
   MomSell56M5=false;
   if (
         MomML_0>100 && 
         MomML_1>100 && 
         MomML_2>100 &&
         MomML_0<MomML_1 &&
         MomML_1>MomML_2 &&
         DeM5>0.7   // ... и тут ...
      )                                
         {   
            MomSell56M5=true;
         }      

//==============================================================================================
   // Вычисление основных торговых критериев
//====================================================================  
   if (
         MomBuy56M15==true &&
         MomBuy56M5 ==true
      )
      
      return(106);                       // Открытие Buy по стратегии 6 
 //====================================================================   
 
   if (
         MomSell56M15==true &&
         MomSell56M5 ==true
      )
      
      return(206);                       // Открытие Sell по стратегии 6 
 //====================================================================   

Mi chiedo, se il risultato è simile, allora perché usare il momentum, che è buono (come dicono) per mostrare il momento di esaurimento del trend (fine)? Quando il momentum si rompe, il prezzo continua a salire e le posizioni vengono aperte ad ogni nuova rottura del momentum... Così sono state le prime voci che ho deciso di bloccare...
Cosa ne pensate?

 

non puoi usare la barra zero nel tester, per la semplice ragione che nonostante il fatto che si stia solo formando (tick del tester) il tester ha informazioni complete sui prezzi di questa barra, perché essa (la barra) è un fatto compiuto e il tester guarda nel futuro prendendo i dati dallo storico delle quotazioni, non quello che genera con i tick... sposta una barra a sinistra e considera i Momentum per 1,2,3 invece di 0,1,2 e demo 1 invece di 0...

Ha anche senso usare solo l'attuale m5 e moltiplicare il periodo in cui si usano prezzi più vecchi. 14 * PERIOD_H1 / Periodo() e 14 * PERIOD_M15 / Periodo()

 
keekkenen:

non puoi usare la barra zero nel tester, per la semplice ragione che nonostante il fatto che si stia solo formando (tick del tester) il tester ha informazioni complete sui prezzi di questa barra, perché essa (la barra) è un fatto compiuto e il tester guarda nel futuro prendendo i dati dallo storico delle quotazioni, non quello che genera con i tick... sposta una barra a sinistra e considera i Momentum per 1,2,3 invece di 0,1,2 e demo 1 invece di 0...

Ha anche senso usare solo l'attuale m5 e moltiplicare il periodo in cui si usano prezzi più vecchi. 14 * PERIOD_H1 / Periodo() e 14 * PERIOD_M15 / Periodo()

Perché se stampiamo ogni prezzo di chiusura della barra zero nel tester, allora in ogni tick il prezzo è diverso? Lo stesso su timeframe superiori, lo stesso senza visualizzazione. Allora, dov'è la visualizzazione?
 
beh, se il risultato (dinamica) non è molto diverso da quello ottenuto con una barra zero, non ci può essere nessuna sbirciatina, ma è meglio salvaguardarsi dalle illusioni...
 

Mi sono già scervellato :) - Ecco il problema:

L'EA funziona in modalità semi-automatica - i suoi input sono le mie uscite dalle posizioni, ma non riesco a capire - come fare l'EA per fare solo un trade prima del mio comando per il prossimo, cioè non ho un pulsante di avvio/inizio sul grafico :) . La mia sezione init() è occupata, e non posso disabilitare il mio EA - i suoi calcoli sono necessari per una corretta pesca a strascico

 
keekkenen:
beh, se il risultato (dinamica) non è molto diverso da quello ottenuto con una barra zero, non ci può essere nessuna sbirciatina, ma è meglio salvaguardarsi dalle illusioni...
Tutte le illusioni possono essere illusioni, ma alla fine del 2008 tutta la grande fratellanza di Limiti innescati, aggiungendo fedelmente depo, non poteva far fronte al drawdown, formato da posizioni aperte utilizzando segnali di indecks, ed ecco la tanto attesa chiamata da zio Kolya... :)

Come è possibile risolvere questi problemi?


Forse c'è un modo per ridurre questo slittamento? I vostri pensieri?

Motivazione: