Come posso ottenere i dati dal tacchino? - pagina 6

 
Retabs:


Mi correggo. Già inseritoil codice tramite il pulsante SRC.

Perché allora cancellare il mio codice se è, come hai scritto, inserito secondo le regole?


Perché tu devi offrire il tuo codice incollato secondo le regole, non io il tuo! L'ho cancellato solo ora quando sono arrivato a casa!
 
borilunad:

Perché tu devi offrire il tuo codice incollato secondo le regole, non io il tuo! L'ho cancellato solo ora quando sono arrivato a casa!


Potete per favore consigliare. Come permettere l'apertura di un nuovo trade solo quando le linee dell'indicatore si incrociano di nuovo, cioè dopo che val1 non è uguale a val2? (codice sopra). In loop?

 
Retabs:


Puoi dirmelo per favore. Come limitare l'apertura di un trade fino alla chiusura di un altro? (codice sopra).


Prima di aprire, mettete una condizione che se non ci sono posizioni, allora potete aprire!

Ci sono molte funzioni diverse, ma mentre le esplorate vi suggerisco uno standby che è per tutte le occasioni!

if(OrderTotal() == 0)
{
  // потом остальные условия, чтобы зря не производить расчёты,
  // если пока ещё есть открытая позиция. 
  // Если понадобится открывать больше позиций, тогда проставите
  // допустимый максимум, например, 3 позиции:
if(OrderTotal() < 3)
{
  // Всё это не ленитесь находить в Документации! Замечено, что 
  // если находите сами и сами делаете, тогда ваши знания и навыки
  // будут крепкими!
  
 
<br / translate="no">
Borilunad:

Perché tu devi offrire il tuo codice incollato secondo le regole, non io il tuo! L'ho cancellato solo ora quando sono arrivato a casa!

Grazie. Ho rivisto le mie condizioni e mi sono reso conto che non avevo capito bene quello che volevo. Mi dispiace.

Puoi dirmi per favore. Come posso permettere l'apertura di unnuovo trade solo quando le linee dell'indicatore si incrociano di nuovo, cioè dopo che val1 non è uguale a val2? (codice sopra). Per consentire solo un commercio tra 2 crossover, indipendentemente dal numero di aperto in quel momento mestieri passati, e naturalmente senza toccarli.

Ho provato ad aggiungere una nuova variabile come marcatore che cambia il suo valore durante l'attraversamento, ma niente ha funzionato.

Penso che l'unica via d'uscita sia cogliere il momento in cui l'affare è concluso e cambiare il marcatore al suo valore originale.

 
Retabs:


Si prega di avvisare. Come permettere l'apertura di un nuovo trade solo quando le linee dell'indicatore si incrociano di nuovo, cioè dopo che val1 non è uguale a val2? (codice sopra). È un loop?


Mentre ti scrivevo, hai aggiunto delle condizioni che vuoi vedere scritte da me! È qui che dovete trovare e scrivere voi stessi ciò di cui avete bisogno, guardando nella Documentazione e guardando il vostro grafico di serie temporali, barre-candele, e andare in profondità nello studio del Tutorial di Sergei Kovalev, che spiega tutto in modo accessibile!

Quindi, non perdete il vostro tempo, prendete lo studio, e il risultato sarà! E se usate i suggerimenti vi farete un cattivo servizio, perché anche un EA scritto professionalmente ha sempre bisogno di una babysitter, senza la quale diventerà irritabile in qualsiasi momento e smetterà di guadagnare a causa dei frequenti cambiamenti delle abitudini del mercato! Ecco perché dovresti sempre cercare nuove soluzioni, sperimentare e cambiare un po' o molto la strategia, e sapere cosa hai fatto tu è molto più facile che capire quella di qualcun altro! Buona fortuna a voi!

 
borilunad:


Mentre ti scrivevo, hai aggiunto delle condizioni che vuoi vedere scritte da me! È qui che devi trovare e scrivere tu stesso ciò di cui hai bisogno, guardando nella Documentazione e guardando il tuo grafico di serie temporali, barre-candele, e approfondire lo studio del Tutorial di Sergey Kovalev, che spiega tutto in modo facile da capire!

Quindi non perdete il vostro tempo, prendete l'insegnamento e otterrete dei risultati! E sui consigli vi farete un cattivo servizio, perché anche un EA scritto professionalmente ha sempre bisogno di una babysitter, senza la quale diventerà irritabile in qualsiasi momento e smetterà di guadagnare a causa dei frequenti cambiamenti nelle abitudini del mercato! Ecco perché dovresti sempre cercare nuove soluzioni, sperimentare e cambiare un po' o molto la strategia, e sapere cosa hai fatto tu è molto più facile che capire quella di qualcun altro! Buona fortuna a voi!


OK. Non rinuncio al riferimento. Per favore, ditemi in che direzione andare per "catturare il momento in cui la transazione ha avuto luogo, e cambiare il marcatore al suo valore originale".
 
Retabs:

Tutto a posto. Non rinuncio al certificato. Ditemi in che direzione scavare per "cogliere il momento in cui lo scambio ha avuto luogo, e cambiare il marcatore al suo valore originale"


serie temporale nella documentazione, barre-slides sul grafico! E imparerete un sacco di cose molto utili lungo la strada! E il tutorial!

E non è per un giorno o due di apprendimento, ma per mesi e anni, per tutta la vita se vuoi davvero sapere e saper fare! Buona fortuna!

 
_new-rena:

Finalmente.

L'errore di 130 è dovuto alle fermate e alle acquisizioni. Ci dovrebbe essere un livello di prezzo al quale dovrebbero scattare. (certamente non aspettando un tasso di prezzo di -100 o 60, dovrebbe essere come Prezzo-100*Punto o Prezzo+60*Punto, per esempio)


Si prega di avvisare. Come permettere l'apertura di unnuovo trade solo quando le linee dell'indicatore saranno incrociate di nuovo, cioè dopo che val1 non sarà uguale a val2? Permettere un solo trade tra 2 incroci, non dipendendo dal numero di trade precedenti aperti in quel momento, e naturalmente non toccandoli.

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=60;
input int   TakeProfit=100;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   
   if(val1>val2)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val1<val2)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
//+------------------------------------------------------------------+
 
Retabs:


Si prega di avvisare. Come permettere l'apertura di unanuova operazione solo quando le linee dell'indicatore si incrociano di nuovo, cioè dopo che val1 non sarà uguale a val2? Permettere un solo trade tra 2 incroci, non dipendendo dal numero di trade precedenti aperti in quel momento, e naturalmente non toccandoli.

Come questo
void OnTick()
  {
//---
   double val10=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val20=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);

   double val11=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,1);
   double val21=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,1);
   
   if(val11 < val21 && val10>=val20)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val11 > val21 && val10<=val20)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
 

Grazie per la risposta. Proprio ora e io stesso ho trovato delle soluzioni, ma su un principio diverso. Provato il mio e il tuo, sembra essere corretto.

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=100;
input int   TakeProfit=160;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
int    X=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   

   if (X>0 && val1==val2)
   Ctrl=0;
   
   
    if (X==0  )
      {
      if(val1>val2)
      OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
      Ctrl=Ctrl+1;
      }
      
    if (X==0 ) 
    
      {if(val1<val2)
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
      X=X+1;
      }
   
  }
//+------------------------------------------------------------------+

Ma ecco il punto: nel punto di crossover visivo, le linee sono effettivamente incrociate più di una volta, quindi il segnale viene ricevuto più volte e l'Expert Advisor ha il tempo di piazzare 4-30 ordini.

Dobbiamo sbarazzarci di questo inconveniente. L'unica cosa che ho inventato è fare la media delle letture precedenti e confrontarle con quelle attuali. Logicamente, sì. Ma come posso farlo programmaticamente? Aiuto!

Motivazione: