엘리엇 파동 이론에 기반한 거래 전략 - 페이지 125

 
근사 모델(원하는 함수)의 확률 변수(가격)의 확산은 확률 변수 자체의 확산(제곱합 Close[i]-Close[i+1])보다 작을 수 없습니다.

"더 작을 수 없다" - 이것이 기준 자체인가? 아니면 단지 정리의 진술입니까?

문제는 내가 이해하는 한 이 경우에는 적용할 수 없다는 것입니다. 이 기준을 사용하여 피팅 곡선에 충분한 다항식의 차수를 찾을 수 있습니다. 그러나 이 곡선은 궤적을 근사할 것입니다. 궤적의 동작을 매끄러운 형태로 반복하는 다항식의 순서를 상상할 수 있습니까?
 
간단히 말해서, 당신은 적합을 요청 했습니까?
 
간단히 말해서, 당신은 적합을 요청 했습니까?

:-)
 
분기의 주제와 완전히 일치하는 책(해결책 찾기). 통계 문제 외에도 Excel, Mathcad 및 Statistica의 계산 예가 제공됩니다.
나는 메가리스트에서 그것을 찾지 못했습니다.

 
예, 오존에서도 찾았습니다 - http://www.ozon.ru/context/detail/id/1908057/
 
예, 오존에서도 찾았습니다 - http://www.ozon.ru/context/detail/id/1908057/

Rosh, 책 제목을 스캔할 수 있습니까? 매우 살펴보고 싶습니다. 그렇지 않으면 오존을 통해 보내는 동안 시간이 많이 걸립니다. 글쎄, 아마도 가까운 장래에 우리 문제 해결의 일환으로 책에 대한 일종의 검토를 할 수 있을까요? 즉, 귀하의 의견으로는 무엇이 유용할 수 있습니까?
 
원본 사진 10장으로 아카이브를 만들었는데 용량이 너무 커서(6MB 이상) 나중에 올릴 예정입니다. 이 주제에 대한 한 페이지를 계속 처리했습니다.

 
2개의 아카이브에 저장된 사진(콘텐츠 9페이지), 총 1100kB

https://c.mql5.com/mql4/forum/2006/08/soderz.zip
1에서 5

https://c.mql5.com/mql4/forum/2006/08/soderz2.zip
6~9
 
2005년 4월 20일자 회귀 채널(저를 위해 작성된 대로)을 통해 거래하는 고문을 찾았습니다.
MQL-II에 있지만 누군가에게 유용할 수 있습니다. 저자는 그가 그것을 가져간 곳이 표시되어 있지 않습니다 - 나는 기억하지 못합니다.

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

 
원본 사진 10장으로 아카이브를 만들었는데 용량이 너무 커서(6MB 이상) 나중에 올릴 예정입니다. 이 주제에 대한 한 페이지를 계속 처리했습니다.


책에 제시된 가정에는 다소 심각한 부정확성이 있습니다(출판된 페이지에서 볼 수 있는 한)(IMHO: 프로세스의 본질에 대한 오해). 요점은 가격은 시간의 함수 가 아니라는 것입니다. 어쨌든 이것을 확실하게 증명하는 것은 불가능합니다.
내가 설명한 공식에서 접근 방식은 매개변수가 가격인 기능을 안정적으로 결정할 수 없다는 고려 사항을 기반으로 합니다. 가격이 외부 요인의 중첩 함수라는 또 다른 가정이 이루어졌습니다. 우리는 가격 변화를 대략적으로 파악하고 그것들을 시간 변화와 연관시키려고 노력합니다. 이는 동일한 것이 아닙니다. 즉, 시간은 독립(가변) 변수가 아니며 자체적으로 몇 가지 요인에 따라 달라집니다. 어떤 이벤트가 발생한 순간 시스템의 내부 시간을 나타냅니다. 외부 관찰자는 자신의 좌표계에서 이 모든 것을 외부에서 관찰하면 완전히 잘못된 결론을 내릴 수 있습니다. 예: 우리는 선로에 서서 어떤 방향으로 지나가는 자동차의 수를 계산합니다. 물론 몇 가지 정보에 따르면 고속도로를 지나는 차량의 수는 시간의 함수라고 주장할 수 있지만 과연 그럴까? 그는 특히 부조리가 분명한 예를 들었다. 모든 것이 여기에서 더 복잡합니다 ;).

진심으로, 블라디슬라프.
행운을 빕니다.