Tâche terminée
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Spécifications
hallo,
Suche einen Deutschsprachigen Programmierer der mir einen bereits vorhandenen mql4 Indikator zu einem mql4 Expert Advisor um Programmieren kann bzw. so schreiben kann dass wenn das "Popup Fenster" des Indikators erscheint der EA Automatisch Handelt (selbstständig Positionen eröffnet oder bei gegen signal wieder schließt)
Der Indikator reagiert bei Eintritt der ereignisses beim eröffnen einer neuen Kerze mit einem Alarm "Popup Fenster"
In dem angewendetem Chartfenster erscheint ein
Blauer Punkt für eine evtl. "Long BUY Position".
und ein Roter Punkt für evtl. "Short SELL Position "
der erscheinte Punkt im chart gleicht dem Risiko der Einstellungen z.B RISK 4
Der EXPERT ADVISOR sollte bei dem eintritt der Ereignisses Positionen eröffnen
Roter Punkt "Short SELL Position "
Blauer Punkt "Long BUY Position"
Eingaben (Variable)
Der Stop Loss sollte man manuell zusätzlich einstellen können (Pips) oder dem jeweiligem Punkt im chart entsprechen zuordnen
Der Take Profit sollte ebenfalls eingestellt werden können (Pips) (Manuell Variabl einstellbar)
Breakeven SL auf Entry bei z.b 10 Pips (Manuell Variable einstellbar)
Magic Number zb. 666 (Manuell Variable einstellbar)
Ebenfalls sollte man wie im Indikator RISK und ALLBARS manuell eingestellt werden können (Manuell Variabl einstellbar)
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 RoyalBlue
#property indicator_color2 Red
//----
extern int RISK=4;
extern int AllBars=250;
int up=0,dn=0;
double val1buffer[];
double val2buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW,EMPTY);
SetIndexArrow(0,108);
SetIndexBuffer(0, val1buffer);
//
SetIndexStyle(1,DRAW_ARROW,EMPTY);
SetIndexArrow(1,108);
SetIndexBuffer(1, val2buffer);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double value2;
double value3;
double value10=10;
double value11;
double x1=70;
double x2=30;
int TrueCount;
int counter;
int MRO1;
int MRO2;
int i1;
double Range;
double AvgRange;
double val1;
double val2;
double Table_value2[500][2];
int counted_bars=IndicatorCounted();
//
value10=3+RISK*2;
x1=67+RISK;
x2=33-RISK;
value11=value10;
//----------------------------
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--; //last bar recounted
int i;
int shift=Bars-counted_bars-1;
if (shift > AllBars) shift=AllBars;
for(i=shift; i>0; i--)
{
counter=i;
Range=0;
AvgRange=0;
for(counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
counter=i;
TrueCount=0;
while(counter<i+9 && TrueCount<1)
{
if (MathAbs(Open[counter]-Close[counter+1])>=Range*2.0 )
TrueCount++;
counter++;
}
if (TrueCount>=1)
MRO1=counter;
else
MRO1=-1;
counter=i;
TrueCount=0;
while(counter<i+6 && TrueCount<1)
{
if(MathAbs(Close[counter+3]-Close[counter])>=Range*4.6)
{TrueCount++;}
counter++;
}
if(TrueCount>=1)
MRO2=counter;
else
MRO2=-1;
if (MRO1>-1)
value11=3;
else
value11=value10;
if (MRO2>-1)
value11=4;
else
value11=value10;
//----
value2=100-MathAbs(iWPR(NULL,0,value11,i));
Table_value2[i][0]=i;
Table_value2[i][1]=value2;
val1=0;
val2=0;
value3=0;
//------------------- val1
if (value2<x2) // x2 = 30
{
i1=1;
while(Table_value2[i+i1][1]>=x2 && Table_value2[i+i1][1]<=x1)
{i1++;}
if (Table_value2[i+i1][1]>x1)
{
value3=High[i]+Range*0.5;
val1=value3;
}
}
//------------------- val2
if(value2>x1) // x1 = 70
{
i1=1;
while(Table_value2[i+i1][1]>=x2 && Table_value2[i+i1][1]<=x1)
{i1++;}
if (Table_value2[i+i1][1]< x2)
{
value3=Low[i]-Range*0.5;
val2=value3;
}
}
if (val2!=0 && up==0 )
{
val1buffer[i]= val2-1*Point;
up=1;
dn=0;
if(shift<=2)
{
Alert (Symbol()," ",Period(),"M Asctrend BUY ");
}
}
if (val1 !=0 && dn==0)
{
val2buffer[i]= val1+1*Point;
dn=1;
up=0;
if(shift<=2)
{
Alert (Symbol()," ",Period(),"M Asctrend SELL ");
}
}
}
return(0);
//----
}
//+------------------------------------------------------------------+