une stratégie commerciale basée sur la théorie des vagues d'Elliott - page 125

 
la dispersion de la variable aléatoire (prix) issue du modèle d'approximation (fonction souhaitée) ne peut être inférieure à la dispersion de la variable aléatoire elle-même (somme des carrés de Close[i]-Close[i+1])

"ne peut être inférieur" - est-ce déjà le critère lui-même ? Ou s'agit-il simplement d'un énoncé du théorème ?

Le fait est que, pour autant que je comprenne, elle n'est pas applicable dans ce cas. Ce critère peut être utilisé pour trouver un ordre de polynôme suffisant pour la courbe d'approximation. Mais cette courbe s'approchera de la trajectoire. Pouvez-vous imaginer un ordre de polynôme qui reproduirait sous une forme lissée le comportement de la trajectoire ?
 
En termes simples, avez-vous demandé un ajustement ?
 
Avez-vous demandé un simple raccord ?

:-)
 
Un livre qui s'inscrit pleinement dans le thème de la branche (recherche de solutions). En plus des problèmes de statistiques, il y a des exemples de calculs dans Excel, Mathcad et Statistica.
Je n'en ai pas trouvé dans la méga liste.

 
Oui, je l'ai aussi trouvé sur Amazon - http://www.ozon.ru/context/detail/id/1908057/
 
Oui, je l'ai aussi trouvé sur Amazon - http://www.ozon.ru/context/detail/id/1908057/

Rosh, pouvez-vous scanner la table des matières ? J'aimerais bien le voir. Ça prendrait beaucoup de temps pour le faire passer par Ozone. Mais peut-être pourriez-vous faire une critique du livre dans un avenir proche. C'est-à-dire, que pensez-vous qu'il serait utile ?
 
J'ai créé une archive de 10 photos non traitées, mais elle était trop grande (plus de 6 Mo), je la posterai donc probablement plus tard. J'ai cependant traité une page sur ce sujet :

 
Images sauvegardées (9 pages de contenu) dans 2 archives, total 1100 kB

https://c.mql5.com/mql4/forum/2006/08/soderz.zip
de 1 à 5

https://c.mql5.com/mql4/forum/2006/08/soderz2.zip
de 6 à 9 ans
 
J'ai trouvé un EA qui négocie avec des canaux de régression (c'est ce qu'il dit) à partir du 20.04.05.
J'utilise MQL-II, mais quelqu'un pourrait en avoir besoin. L'auteur n'est pas répertorié, je ne me souviens pas où je l'ai eu.

/*[[
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


 
J'ai créé une archive de 10 photos non traitées, mais elle était trop grosse (plus de 6 Mo), je la posterai donc probablement plus tard. J'ai tout de même édité une page sur ce sujet :<br / translate="no">


Il y a une inexactitude assez grave dans les postulats énoncés dans le livre (d'après ce que je peux voir de la page publiée) (IMHO : incompréhension de l'essence du processus). Le fait est que le prix n'est pas une fonction du temps. En tout cas, il est impossible de le prouver avec certitude.
Dans la déclaration que j'ai décrite, l'approche est basée sur ces considérations qu'il est impossible de définir de manière fiable une fonction de quel paramètre est le prix. Une autre hypothèse est que le prix est fonction d'une superposition de facteurs externes. Nous essayons d'approximer les changements de prix et de les relier aux changements de temps, ce qui n'est pas la même chose. En d'autres termes, le temps n'est pas une variable indépendante (variable), il dépend de plusieurs facteurs. Il s'agit d'un temps interne du système au moment où l'événement a lieu. Un observateur extérieur qui observe tout cela de l'extérieur dans son système de coordonnées peut tirer des conclusions absolument erronées. Par exemple : on se tient sur une route et on compte le nombre de voitures qui sont passées dans les deux sens. Bien sûr, sur la base de certaines informations, nous pouvons dire que le nombre de voitures qui passent sur la piste est une fonction du temps, mais est-ce bien le cas ? J'ai surtout donné un exemple dont l'absurdité est évidente. Tout est plus compliqué ici ;).

Salutations, Vladislav.
Bonne chance et bonnes tendances.