Darma system indicator

Pravidla pro použití Darma indikátoru:
KOUPĚ:
1.. Když se červené tečky zastaví (nad cenou) a objeví se modrá tečka (pod cenou), je to příležitost pro koupi.
2. Počkejte dokud se neobjeví rostoucí bar. Někdy se stane, ve stejném čase, ale někdy je třeba počkat.
3. Čekejte, až se uzavře rostoucí svíčka úplně.
4. Poté umístěte příkaz na koupi 10-15 pips nad high této svíčky.

PRODEJ:
1. Když se modré tečky zastaví (pod cenou) a objeví se červená tečka (nad cenou), je to příležitost k prodeji.
2. Počkejte na červený/klesající bar. Někdy se stane, ve stejném čase, ale někdy je třeba počkat.
3. Čekejte, až se uzavře klesající svíčka úplně.
4. Poté umístěte příkaz k prodeji 10-15 pips pod low této svíčky.

 

 

//+——————————————————————+
//|                                Darma System Indicator (beta).mq4 |
//|                                                tonyc2a@yahoo.com |
//|                                                                  |
//+——————————————————————+
/*README
This indicator is supposed to be a conversion of Darma’s set of indicators from MT3 to MT4.
This conversion is not exactly the same though. In the MT3 version, the indicators were split up between 4 separate custom indicator files.
This MT4 version has all the logic combined into one file. Due to this consolidation, some of the logic did not translate exactly as intended.
Also, I only did a direct code translation. Prior to looking at the code in the MT3 files, I had no understanding of the logic behind the indicator files.
If someone could provide the logic in human language, I might be able to make this indicator behave more properly as well as be a little more programmatically elegant.
Test this indicator out according to Darma’s original rules and see how it does for you.

Darma’s Rules:
BUY:
1. When red stop dot (above price) becoming a blue stop dot (below price), the mood is ready for a buy.
3. Wait for the bar becoming blue. Sometime it happens in the same time, but sometime need to wait.
4. After you have a blue bar, Wait that blue bar closed completely.
5. Then place order to buy at 10-15 pips above the high of that blue bar.

SELL:
1. When bule stop dot (below price) becoming a red stop dot (above price), the mood is ready for a sell.
3. Wait for the bar becoming red. Sometime it happens in the same time, but sometime need to wait.
4. After you have a red bar, Wait that red bar closed completely.
5. Then place order to sell at 10-15 pips below the low of that red bar.

PS. This code is very ugly and inelegant. I would like to fix this by getting system rules in english.

tonyc2a@yahoo.com
*/
#property copyright „tonyc2a@yahoo.com
#property link      „“

#property indicator_chart_window
#property indicator_buffers 4

//—- input parameters
extern int WingDings_Symbol = 108;

//—- buffers
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];

//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int init()
{
//—- indicators
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Blue);
SetIndexBuffer(0,Buffer1);
SetIndexLabel(0,“Blue Bar“);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
SetIndexBuffer(1,Buffer2);
SetIndexLabel(1,“Red Bar“);
SetIndexStyle(2,DRAW_ARROW,STYLE_DOT,2,Blue);
SetIndexBuffer(2,Buffer3);
SetIndexLabel(2,“Blue Dot“);
SetIndexArrow(2,WingDings_Symbol);
SetIndexStyle(3,DRAW_ARROW,STYLE_DOT,2,Red);
SetIndexBuffer(3,Buffer4);
SetIndexLabel(3,“Red Dot“);
SetIndexArrow(3,WingDings_Symbol);
//SetIndexStyle(4,DRAW_SECTION,STYLE_SOLID,1,Blue);
//SetIndexBuffer(4,Buffer5);
//SetIndexLabel(4,“Blue“);
//SetIndexStyle(5,DRAW_SECTION,STYLE_SOLID,1,Red);
//SetIndexBuffer(5,Buffer6);
//SetIndexLabel(5,“Red“);

//—-
return(0);
}
//+——————————————————————+
//| Custor indicator deinitialization function                       |
//+——————————————————————+
int deinit()
{
//—- TODO: add your code here

//—-
return(0);
}
//+——————————————————————+
//| Custom indicator iteration function                              |
//+——————————————————————+
int start()
{
int    counted_bars=IndicatorCounted();
//—- TODO: add your code here
int adjustment=0; //change this value to make the indicator behave slightly differently. valid values are 0-4.
int periods=3;
int extremes=0;
double smin, smax, SsMax, SsMin, pivothi, pivotlo, margins;
bool flag1, flag2;

for(int i=0;i<bars;i++){
if(extremes!=0){
SsMax = High[Highest(NULL,0,MODE_OPEN,periods,i+adjustment)];
SsMin = Low[Lowest(NULL,0,MODE_OPEN,periods,i+adjustment)];
}
else{
SsMax = Open[Highest(NULL,0,MODE_OPEN,periods,i+adjustment)];
SsMin = Open[Lowest(NULL,0,MODE_OPEN,periods,i+adjustment)];
}
smin = SsMin+(SsMax-SsMin)*margins/100;
smax = SsMax-(SsMax-SsMin)*margins/100;
pivothi=((2*High[i])+Low[i]+(2*Close[i]))/5;
pivotlo=(High[i]+(2*Low[i])+(2*Close[i]))/5;
if(pivotlo>smin && pivothi>smax) flag1=true; else flag1=false;
if(pivothi
if(flag1){
Buffer1[i]=High[i];
Buffer2[i]=Low[i];
}
if(flag2){
Buffer1[i]=Low[i];
Buffer2[i]=High[i];
}

double sig=iSAR(NULL,0,0.5,1,i);
if(sig<low[i])>          if(sig>High[i]) Buffer4[i]=sig;

/*
double sig2=iSAR(NULL,0,1,0.2,i);
if(sig2<low[i])>          if(sig2>High[i]) {Buffer6[i]=sig2; Buffer5[i]=-1;}
*/

}//end for
//—-
return(0);
}
//+——————————————————————+

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *