una strategia di trading basata sulla teoria dell'onda di Elliott - pagina 125

 
la dispersione della variabile casuale (prezzo) dal modello approssimativo (funzione desiderata) non può essere più piccola della dispersione della variabile casuale stessa (somma dei quadrati di Close[i]-Close[i+1])

"non può essere inferiore" - questo è già il criterio stesso? O è solo una dichiarazione del teorema?

Il punto è che, per quanto ne so, non è applicabile in questo caso. Il criterio può essere usato per trovare un ordine di polinomio sufficiente per la curva approssimata. Ma questa curva approssima la traiettoria. Potete immaginare un ordine di polinomio che replichi in forma levigata il comportamento della traiettoria?
 
In parole povere, avete chiamato per un montaggio?
 
Hai chiamato per un semplice montaggio?

:-)
 
Un libro che è pienamente in linea con l'argomento del ramo (trovare la soluzione). Oltre ai problemi di statistica ci sono esempi di calcoli in Excel, Mathcad e Statistica.
Non ne ho trovato nessuno nella mega lista.

 
Sì, l'ho trovato anche su Amazon - http://www.ozon.ru/context/detail/id/1908057/
 
Sì, l'ho trovato anche su Amazon - http://www.ozon.ru/context/detail/id/1908057/

Rosh, potresti scansionare l'indice? Mi piacerebbe vederlo. Ci vorrebbe molto tempo per farlo passare attraverso Ozone. Ma forse potresti fare una recensione del libro nel prossimo futuro. Cioè, cosa pensi che sarebbe utile?
 
Ho fatto un archivio di 10 foto non elaborate, ma era troppo grande (oltre 6 MB), quindi probabilmente lo posterò più tardi. Però ho elaborato una pagina su questo argomento:

 
Immagini salvate (9 pagine di contenuto) in 2 archivi, totale 1100 kB

https://c.mql5.com/mql4/forum/2006/08/soderz.zip
da 1 a 5

https://c.mql5.com/mql4/forum/2006/08/soderz2.zip
da 6 a 9
 
Ho trovato un EA che fa trading con canali di regressione (questo è quello che dice) dal 20.04.05
Sto usando MQL-II, ma forse qualcuno potrebbe averne bisogno. L'autore non è elencato, non ricordo dove l'ho preso.

/*[[
VC-1hr
Lots := 0.1
Notes := Use in H1 timeframe.
Update on every tick := Yes
Enable Alerts := Yes
Disable alert once hit := No
Lots := 1
Stop Loss := 999
Take Profit := 200
Trailing Stop := 999
]]*/


// ====================================================================================================
// DECLARATION AND ASSIGNMENT
// ====================================================================================================

defines: Risk(1),mm(1),maxTradesPerPair(1);
Inputs : NumberName(1), iPeriod(21), MAShoot(50), DrawVertical(0), DrawText(0), ShowMA(0), LineWeight(1), BarsCount(0);
vars: spread(0),
Slippage(5),
sl(0),tp(0),
mode(0),
lastHigh(0),lastLow(0),lastOpen(0),lastClose(0),
target(0),
entryTS(0),
cnt(0),
first(0),
lotMM(0),
tHour(0),
CurrentTrades(0),
AccountIsMini(False);  // See comments near assignment statement below.

Var : shift(0), n_begin(0), n_end(0), n(0), a_(0), b_(0), a1(0), a2(0), a3(0), b1(0);
var : y1(0), y2(0), price(0), BarBegin(100), BarEnd(1);
var : tmp_div_high(0), tmp_div_low(0), stddiv_low(0),  stddiv_high(0), tmp_div(0);
var : x_n_up(0), x_n_down(0), x_1_up(0), x_1_down(0);
var : check_upper_chanel(false), color_1(0), color_2(0), name(""), angle(0), ratio(0), ratio_currency(0);
Var : MA(0), value(0), Bars_(170), check_low(false), check_high(false);
Var : save_low(0), save_high(0), save_shift_low(0), save_shift_high(0), save_shift(0);
Var : MAType(0), MAPrice(0);

//================================================================================================================
SetLoopCount(0);
comment("Auto Regression channel");

if BarsCount < 1 then Bars_ = Bars
else Bars_ = BarsCount;

save_low = -1;
save_high = -1;
save_shift_low = -1;
save_shift_high = -1;

check_low = false;	
check_high = false;	

MAType = MODE_SMA;
MAPrice = PRICE_CLOSE;

if Close[1] > 80 then ratio_currency = 100
else ratio_currency = 10000;

For shift = Bars_-1 Downto 0 Begin
	MA = iMAEx(iPeriod, MAType, 0, MAPrice, shift);
	
	if ShowMA then SetIndexValue(shift, MA);
	
	if MA - MAShoot/ratio_currency > Close[shift] then
	{
			
		if Close[Shift] < save_low or save_low = -1  then
		{
			check_low = true;
					
			save_low = close[Shift];
			save_shift_low = shift;
		};		
	};
	
	if MA  +  MAShoot/ratio_currency< Close[shift] then
	{
		if save_high < Close[Shift] or save_high = -1 then
		{
			check_high = true;	
			
			save_high = close[Shift];
			save_shift_high = shift;
		};
	};

	if check_low then
	{	
		if MA + MAShoot/ratio_currency < Close[shift] then 
		{
			check_low = false;	
			save_low = -1;
		};
	};
	
	if check_high then
	{
		if MA - MAShoot/ratio_currency > Close[shift] then 
		{						
			check_high = false;	
			save_high = -1;
		};
	};
	
End;

if save_shift_low > save_shift_high then
{
	n_begin = save_shift_low;
	n_end = save_shift_high;
}
else
{
	n_begin = save_shift_high;
	n_end = save_shift_low;
};

if n_end = 0 then n_end = 1; 
n = (n_begin - n_end + 1); 

a1 = 0;
a2 = 0;
a3 = 0;
b1 = 0;
a_ = 0;
b_ = 0;
y1 = 0;
y2 = 0;
tmp_div_high = 0;
tmp_div_low = 0;
tmp_div = 0;

if close[n_begin] < close[n_end] then check_upper_chanel = true
else check_upper_chanel = false;

For shift = n_begin Downto n_end Begin
	if check_upper_chanel then price = low[shift]
	else price = high[shift];
	
	a1 = a1 + shift*price;
	a2 = a2 + shift;
	a3 = a3 + price;
	b1 = b1 + shift*shift;
End;

b_ = (n*a1 - a2*a3)/(n*b1 - a2*a2);
a_ = (a3 - b_*a2)/n;
y1 = a_ + b_*n_begin;
y2 = a_ + b_*n_end;

MoveObject(	"Regression_middle" + NumberName, OBJ_TRENDLINE, Time[n_begin], y1, Time[n_end], y2, yellow, LineWeight, STYLE_SOLID);	

For shift = n_begin Downto n_end Begin
	if check_upper_chanel then price = low[shift]
	else price = high[shift];
	
	tmp_div = tmp_div + (price - (a_ + b_*shift))*(price - (a_ + b_*shift));	
End;	

stddiv_low = sqrt(tmp_div/n);
stddiv_high = sqrt(tmp_div/n);

x_n_up = y1 + 2*stddiv_high;
x_1_up = y2 + 2*stddiv_high;

x_n_down = y1 - 2*stddiv_low;
x_1_down = y2 - 2*stddiv_low;

if check_upper_chanel then  {
	color_1 = blue;
	color_2 = red;
}else{
	color_1 = red;
	color_2 = blue;
};
	
//upper
MoveObject(	"Regression_upper" + NumberName, OBJ_TRENDLINE, Time[n_begin], x_n_up, Time[n_end], x_1_up, color_1, LineWeight, STYLE_SOLID);	
//lower
MoveObject(	"Regression_lower" + NumberName, OBJ_TRENDLINE, Time[n_begin], x_n_down, Time[n_end], x_1_down, color_2, LineWeight, STYLE_SOLID);	

if  DrawText then
{	
	name = "Regression_bars_begin" + NumberName;
	MoveObject(name, OBJ_TEXT, Time[n_begin], x_n_down, Time[n_begin], x_n_down, red, 1, STYLE_SOLID);			
	SetObjectText(name, NumberToStr(n_begin,0), "System", 10, White);	
		
	name = "Regression_bars_end" + NumberName;
	MoveObject(name, OBJ_TEXT, Time[n_end], x_1_up, Time[n_end], x_1_up, red, 1, STYLE_SOLID);			
	SetObjectText(name, NumberToStr(n_end,0), "System", 10, White);	
}else{
	DelObject("Regression_bars_end" + NumberName, 0, 0, 0, 0);
	DelObject("Regression_bars_begin" + NumberName, 0, 0, 0, 0);
}

if DrawVertical then
{
	MoveObject(	"Regressin_begin" + NumberName, OBJ_VLINE, 	Time[n_begin], y1, Time[n_begin], y2, 	silver, 1, STYLE_DOT);	
	MoveObject(	"Regressin_end" + NumberName, OBJ_VLINE, 	Time[n_end], y1, Time[n_end], y2, 	silver, 1, STYLE_DOT);	
}else{
	DelObject("Regressin_begin" + NumberName, 0, 0, 0, 0);
	DelObject("Regressin_end" + NumberName, 0, 0, 0, 0);
}

//================================================================================================================


entryTS   = 4 * Point;          // Entry trailing stop - points
target    = TakeProfit * Point; // Profit target - points
lastHigh  = High[1];            // Last bar high
lastLow   = Low[1];             // Last bar low
lastOpen  = Open[1];            // Last bar open
lastClose = Close[1];           // Last bar close
spread    = Ask - Bid;          // Spread



// ====================================================================================================
// VALIDATION
// ====================================================================================================

if CurTime - LastTradeTime < 300 Then Exit;
if Bars < 100 or TakeProfit < 10 then Exit;
if IsIndirect(Symbol) = True then Exit;

if TrailingStop < 5 then
{
  print("invalid Trailing Stop");
  Exit;
};

// ====================================================================================================
// DATE CHOKE - For testing purposes
// ====================================================================================================
if TimeYear(time[0]) < 2004 then Exit;

// ====================================================================================================
// PYRAMIDING - LINEAR
// Money management risk exposure compounding
// ====================================================================================================

AccountIsMini = False; // Change to False for real trading w/ 100k/regular account
                       //        or for all backtesting, since backtests allow
                       //        fractional lots.
                       // Change to True for real trading w/ mini account

if mm <> 0 then 
{
  lotMM = Ceil(Balance * risk / 10000) / 10;

  if lotMM < 0.1 then lotMM = lots;

  if lotMM > 1 then lotMM = Ceil(lotMM);

  if AccountIsMini then lotMM = lotMM * 10;

  if lotMM > 100 then lotMM = 100;
}
else {
  lotMM = Lots; // Change mm to 0 if you want the Lots parameter to be in effect
};

// ====================================================================================================
// OPEN ORDER CHECK -
// Each instance of a script is attached to one currency pair.
// When this check executes, it sets CurrentTrades to 1 so that
// only one trade for this symbol will be open, which is enforced
// by "if CurrentTrades = 0".
// ====================================================================================================

CurrentTrades = 0;

for cnt = 1 to TotalTrades
{ 
  if OrderValue(cnt,VAL_SYMBOL) = Symbol then
  {
    CurrentTrades = CurrentTrades + 1; 
  };
};

// ====================================================================================================
// TRADE ENTRY
// ====================================================================================================

if CurrentTrades < maxTradesPerPair then
{
  //LONG TRADES ENTRY CRITERIA

  if //lastOpen < lastClose        and  // Last bar bullish, open less than close;
     check_upper_chanel = true   and  // Ask above lastHigh, and SAR less than Ask,
     y2 > Close     and  // then request order.
     tHour != TimeHour(time[0])  then
  {
    tHour=TimeMinute(time[0]);

    // Set stoploss to last bar low so that Bid must hit lastLow to exit.

    sl = x_1_down - (2 * point);
    tp = Ask + target;
  
    SetOrder(OP_BUY,
             lotMM,
             Bid,
             Slippage,
             sl,
             tp,
             LIME);
    Exit;
  };

  //SHORT TRADES ENTRY CRITERIA

  if //lastOpen > lastClose       and  // Last bar bearish, open greater than close;
     check_upper_chanel = False and  // if Bid below lastLow, and SAR greater than Bid,
     y2  < Close  and // then request order.
     tHour != TimeHour(time[0]) then
  {
    tHour=TimeMinute(time[0]);

    // Set stoploss to last bar high so that Ask must hit lastHigh to exit.

    sl = x_1_up + (2 * point);
    tp = Bid - target;

    SetOrder(OP_SELL,
             lotMM,
             Ask,
             Slippage,
             sl,
             tp,
             RED);
    Exit;
  }; 
}; // end of if CurrentTrades < maxTradesPerPair

// ====================================================================================================
// TRAILING STOP UPDATE
// ====================================================================================================

if CurrentTrades = 0 then exit;

for cnt = 1 to TotalTrades
{ 
  if OrderValue(cnt,VAL_SYMBOL) = Symbol then 
  {
    if OrderValue(cnt,VAL_TYPE) = OP_BUY then 
    {
      // If Bid - Open is now higher than entryTS pips profit,
      // and the stop loss order is lower than
      // entryTS pips below the Bid, then adjust the stop loss part of
      // the order to the Bid - entryTS pips

      if (Bid - OrderValue(cnt,VAL_OPENPRICE)) > (entryTS) then
      {
        if OrderValue(cnt,VAL_STOPLOSS) < x_1_down then
        {
          ModifyOrder(OrderValue(cnt,VAL_TICKET),
                      OrderValue(cnt,VAL_OPENPRICE),
                      x_1_down - (2 * point),
                      OrderValue(cnt,VAL_TAKEPROFIT),
                      BLUE);
          Exit;
        }; 
      };
      
      // if Stop Loss > Open Price then Set Takeprofit 

      if OrderValue(cnt,VAL_STOPLOSS) >= OrderValue(cnt,VAL_OPENPRICE) then
      {
        ModifyOrder(OrderValue(cnt,VAL_TICKET),
                    OrderValue(cnt,VAL_OPENPRICE),
                    OrderValue(cnt,VAL_STOPLOSS),
                    Ask + TakeProfit * Point,
                    BLUE);
        Exit;
      };
    }; // end OP_BUY check

    if OrderValue(cnt,VAL_TYPE) = OP_SELL then
    {
      // If Open - Ask is now higher than entryTS pips profit,
      // and the stop loss order is higher than
      // entryTS pips above the Ask, then adjust the stop loss part of
      // the order to Ask + entryTS pips

      if (OrderValue(cnt,VAL_OPENPRICE) - Ask) > (entryTS) then
      {
        if OrderValue(cnt,VAL_STOPLOSS) > x_1_up then
        {
          ModifyOrder(OrderValue(cnt,VAL_TICKET),
                      OrderValue(cnt,VAL_OPENPRICE),
                      x_1_up + (2 * point),
                      OrderValue(cnt,VAL_TAKEPROFIT),
                      BLUE);
          Exit;
        };
      };

      // if Stop Loss < Open Price then Set Takeprofit 

      if OrderValue(cnt,VAL_STOPLOSS) <= OrderValue(cnt,VAL_OPENPRICE) then
      {
        ModifyOrder(OrderValue(cnt,VAL_TICKET),
                    OrderValue(cnt,VAL_OPENPRICE),
                    OrderValue(cnt,VAL_STOPLOSS),
                    Bid - TakeProfit * Point,
                    BLUE);
        Exit;
      };
    };  // end OP_SELL check
  }; // end Symbol check
}; // end for cnt=1 to TotalTrades


 
Ho fatto un archivio di 10 foto non elaborate, ma era troppo grande (oltre 6MB), quindi probabilmente lo posterò più tardi. Ho modificato una pagina su questo argomento però:<br / translate="no">


C'è un'imprecisione piuttosto grave nei postulati dichiarati nel libro (per quanto posso vedere dalla pagina pubblicata) (IMHO: incomprensione dell'essenza del processo). Il punto è che il prezzo non è una funzione del tempo. In ogni caso, è impossibile provarlo in modo definitivo.
In quella dichiarazione che ho descritto, l'approccio è costruito sul presupposto che è impossibile definire in modo affidabile una funzione di quale parametro sia il prezzo. Un altro presupposto è che il prezzo sia una funzione di una sovrapposizione di fattori esterni. Stiamo cercando di approssimare i cambiamenti di prezzo e di metterli in relazione con i cambiamenti nel tempo, che non è la stessa cosa. In altre parole, il tempo non è una variabile indipendente (variabile), dipende da diversi fattori. Significa un certo tempo interno del sistema nel momento in cui l'evento ha luogo. Un osservatore esterno che osserva tutto questo dall'esterno nel suo sistema di coordinate può trarre conclusioni assolutamente errate. Per esempio: stiamo su una strada e contiamo il numero di auto che sono passate in entrambe le direzioni. Naturalmente sulla base di alcune informazioni possiamo dire che il numero di auto che passano sulla pista è una funzione del tempo, ma è così? Ho fatto appositamente un esempio per il quale l'assurdità è evidente. Qui tutto è più complicato ;).

Saluti, Vladislav.
Buona fortuna e buone tendenze.