csütörtök, április 05, 2012

A TrendMagic indikátor

Miután legutóbb feltettem a TVI indikátort, akkor vettem észre, hogy tulajdonképpen már csak a TrendMagic indikátor hiányzik hozzá. Nem szeretném, ha lemaradna, ezért most ezt is közzé teszem.

Korábban már volt róla szó, hogy ez egy CCI és ATR alapú indikátor, elég jól használható, amikor a trend irányára vagyunk kíváncsiak. Ez is színváltoztatós indikátor, de nem függ semmilyen másik indikátortól...

Nos, íme a kódja :

//+------------------------------------------------------------------+
//|                                                   TrendMagic.mq4 |
//|                                    Copyright © 2010, János Antal |
//|                                  http://tozsdecapak.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, János Antal"
#property link      "http://tozsdecapak.blogspot.com"
#include <stderror.mqh>
#include <stdlib.mqh>

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_width1 2
#property indicator_color2 Red
#property indicator_width2 2

extern int CCI = 50;
extern int ATR = 5;

double bufferUp[];
double bufferDn[];

int init()
{
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(0, bufferUp);
   SetIndexLabel(0,"TrendMagic Up");

   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(1, bufferDn);
   SetIndexLabel(1,"TrendMagic Down");
}

int start()
{
   double thisCCI;
   double lastCCI;

   for (int shift = Bars; shift >= 0; shift--)
   {
      thisCCI = iCCI(NULL, 0, CCI, PRICE_TYPICAL, shift);
      lastCCI = iCCI(NULL, 0, CCI, PRICE_TYPICAL, shift + 1);

      if (thisCCI >= 0 && lastCCI < 0) bufferUp[shift + 1] = bufferDn[shift + 1];
      if (thisCCI <= 0 && lastCCI > 0) bufferDn[shift + 1] = bufferUp[shift + 1];

      if (thisCCI >= 0)
      {
         bufferUp[shift] = Low[shift] - iATR(NULL, 0, ATR, shift);
         if (bufferUp[shift] < bufferUp[shift + 1])
            bufferUp[shift] = bufferUp[shift + 1];
      }
      else
      {
         if (thisCCI <= 0)
         {
            bufferDn[shift] = High[shift] + iATR(NULL, 0, ATR, shift);
            if (bufferDn[shift] > bufferDn[shift + 1])
               bufferDn[shift] = bufferDn[shift + 1];
         }
      }
   }
}

Ez egy igen egyszerű, ám igen jól használható indikátor, amely leginkább napon belüli kereskedés fő trendirányának a meghatározására való. Ez igen jó támpont lehet, ha egy másik momentum indikátor jelei alapján szeretnénk pozícióba lépni! Ez az indikátor a mi kis robotunk alapja.

Hamarosan backtest következik.
A backtest fogja megmondani nekünk, hogy a kereskedési elv, amelyet leprogramoztunk.

Addig is azt javaslom, hogy a három indikátort, melyet nem is régen közzétettem (most a TrendMagic, korábban a TVI és a TVI_2color, melyek közül ugyan csak az utóbbit használjuk, mégis az előbbivel együtt képes csak működni), valamint a teljes robotot másoljátok le, fordítsátok le a MetaEditor segítségével és próbálgassátok különféle devizapárokon.

Aki már végzett backtest-et, annak is javaslom, hogy mindenféle devizapáron tesztelje le, nézegesse, aki még sosem tesztelt, annak csak azt javaslom, hogy tegye fel a robotot egy demó számlára tetszőleges devizapárra és nézze meg, mikor köt, jókor köt-e, stb.
FIGYELEM! Jelenleg a profit lényegtelen, csak az a fontos, hogy jól működik-e a program!

Ha bárkinek bármilyen kérdése lenne, írjon bátran, válaszolok szívesen!

Jó szórakozást mindenkinek!