Hallo zusammen, Ich möchte einen EA programmieren der aus einem Custom Indicator (ADX-Crossing) ein Buy oder Sell Signal ausliest und dementsprechend Positionen aufbaut. Leider verstehe ich nicht wie man im EA die Variable vom Custom Indikator ausliest... Daran scheitert es bereits... :( Die Suche habe ich bereits benutzt, und auch Themen gefunden die dieses Gebiet behandeln, aber bisher bin ich noch auf keine Lösung gekommen. Hättet ihr einen Lösungsvorschlag, bzw. eine Erklärung? Das wäre super, und würde mir sehr weiterhelfen. Indikator ADX Crossing #property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- input parameters
extern int ADXbars=14;
extern int CountBars=350;
//---- buffers
double val1[];
double val2[];
double b4plusdi,nowplusdi,b4minusdi,nowminusdi;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(4);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,108);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,108);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2 |
//+------------------------------------------------------------------+
int start()
{
bool buy,sell;
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars);
SetIndexDrawBegin(1,Bars-CountBars);
int i,shift,counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- initial zero
if(counted_bars<1)
{
for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;
for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;
}
for (shift = CountBars; shift>=0; shift--)
{
b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift-1);
nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift);
b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift-1);
nowminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift);
if (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
{
val1[shift]=Low[shift]-5*Point;
//val1[0]=1;
}else{
//val1[0]=0;
}
if (b4plusdi<b4minusdi && nowplusdi>nowminusdi)
{
val2[shift]=High[shift]+5*Point;
//val2[0]=1;
}else{
//val2[0]=0;
}
}
return(0);
}
//+------------------------------------------------------------------+ EA //---- input parameters
extern double Lots=0.1;
extern double StopLoss=0.00040;
//---- input parameters
extern int ADXbars=14;
extern int CountBars=350;
//---- buffers
double val1[];
double val2[];
double b4plusdi,nowplusdi,b4minusdi,nowminusdi;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int A=14;
int C=350;
int buy = iCustom(NULL,0,"ADX Crossing",A,C,0,0);
int sell = iCustom(NULL,0,"ADX Crossing",A,C,1,0);
Print ("Buy: ",buy);
Print ("Sell: ",sell);
return(0);
}
//+------------------------------------------------------------------+ Meine kläglichen VErsuche habe ich bereits ausgeklammert :( Grüße Heinz E.