Fehler im Skript iADX wrong parameters count

 

Hallo, ich hab da was geschrieben. Beim kompilieren bekomme ich aber diesen Fehler 'iADX' - wrong parameters count... der Fehler befindet sich in der Zeile double adxValue.....  an Was könnte das liegen?

  // Berechnungen für CCI, ADX und RSI
   double cciValue = iCCI(NULL, 0, cciPeriod, PRICE_CLOSE, 0);
   double adxValue = iADX(NULL, adxPeriod, 0);
   double rsiValue = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE, 0);

   // Bedingungen für den Einstieg überprüfen
   if (rsiValue > rsiThreshold && adxValue > adxThreshold && cciValue < cciThreshold)

 
alex1860:
double adxValue = iADX(NULL, adxPeriod, 0);

Hallo,

es könnte sein, dass die Parameter nicht stimmen:

statt:

double adxValue = iADX(NULL, adxPeriod, 0);

das:

double adxValue = iADX(NULL, PERIOD_CURRENT, 100);

Oder Ihre definierte Variablen.

Benutzen Sie bei iADX immer F1 Taste in die Dokumentation, damit alle richtige Variablen kommen.

Gruß Igor

 
  1. Ist das MQL4, dann gehört das nach unten in den MQL4 thread!
  2. Ist das MQL5, dann gibt iADX ein Handle zurück und keinen Indikatorwert!
  3. Einfach mal den Kursor auf iADX stellen und F1 drücken und schauen und lesen ....
 
Igor Widiger #:
double adxValue = iADX(NULL, PERIOD_CURRENT, 100);

Danke, leider kommt immer noch die Meldung

 
alex1860 #:

Danke, leider kommt immer noch die Meldung

Ich sehe Ihren Kode nicht, wie der vordefiniert wurde.

Der Aufbau sieht so aus:

int adxValue = 0;

int OnInit() {

adxValue= iADX(_Symbol,PERIOD_CURRENT,100); // Timeframe und MA sollte von Ihnen eingestellt sein

      if(adxValue == INVALID_HANDLE) {
         printf("Error creating ADX Indicator");
         return(INIT_FAILED);
      }

ResetLastError();

}

void OnTick() {

 double   adx_wert[];

   ArraySetAsSeries(adx_wert,true);

   CopyBuffer(adxValue,0,0,3,adx_wert);


   double adx_value = NormalizeDouble(adx_wert[0],_Digits);

// Bedingungen für den Einstieg überprüfen
   if (rsiValue > rsiThreshold && adx_value > adxThreshold && cciValue < cciThreshold) // Ihre Funktion


}

Habe nicht geprüft, aber Aufbau sollte ungefähr so aussehen.

Übrigens ADX Indikator hat Drei Werte.

 
Igor Widiger #:

Ich sehe Ihren Kode nicht, wie der vordefiniert wurde.

Der Aufbau sieht so aus:

Habe nicht geprüft, aber Aufbau sollte ungefähr so aussehen.

Übrigens ADX Indikator hat Drei Werte.

Das ist der code

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   // Berechnungen für CCI, ADX und RSI
   double cciValue = iCCI(NULL, 0, cciPeriod, PRICE_CLOSE, 0);
   double adxValue = iADX(NULL,, adxPeriod, 0);
   double rsiValue = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE, 0);

   // Bedingungen für den Einstieg überprüfen
   if (rsiValue > rsiThreshold && adxValue > adxThreshold && cciValue < cciThreshold)
     {
      // Einstieg long
      OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Long Trade", 0, 0, Green);
 
Igor Widiger #:

Ich sehe Ihren Kode nicht, wie der vordefiniert wurde.

Der Aufbau sieht so aus:

Habe nicht geprüft, aber Aufbau sollte ungefähr so aussehen.

Übrigens ADX Indikator hat Drei Werte.

hier nochmal der Code 

#property strict

// Indikator-Parameter
int cciPeriod = 7;
int adxPeriod = 10;
int rsiPeriod = 15;

// Einstiegsschwellen
double rsiThreshold = 50;
double adxThreshold = 35;
double cciThreshold = -85;

// Risk Management
double lotSize = 0.1;  // Handelsgröße
int stopLoss = 50;     // Stop-Loss in Pips
int takeProfit = 100;  // Take-Profit in Pips

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   // Berechnungen für CCI, ADX und RSI
   double cciValue = iCCI(NULL, 0, cciPeriod, PRICE_CLOSE, 0);
   double adxValue = iADX(NULL, 0, adxPeriod, 0);
   double rsiValue = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE, 0);

   // Bedingungen für den Einstieg überprüfen
   if (rsiValue > rsiThreshold && adxValue > adxThreshold && cciValue < cciThreshold)
   {
      // Einstieg long
      OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Trade", 0, 0, Green);

      // Setzen Sie Stop Loss und Take Profit
      OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Trade", stopLoss, takeProfit, Green);
   }
}
//+------------------------------------------------------------------+
 
alex1860 #:
#property strict // Indikator-Parameter int cciPeriod = 7; int adxPeriod = 10; int rsiPeriod = 15; // Einstiegsschwellen double rsiThreshold = 50; double adxThreshold = 35; double cciThreshold = -85; // Risk Management double lotSize = 0.1;  // Handelsgröße int stopLoss = 50;     // Stop-Loss in Pips int takeProfit = 100;  // Take-Profit in Pips //+------------------------------------------------------------------+ //| Expert initialization function                                   | //+------------------------------------------------------------------+ int OnInit() {    return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function                                             | //+------------------------------------------------------------------+ void OnTick() {    // Berechnungen für CCI, ADX und RSI    double cciValue = iCCI(NULL, 0, cciPeriod, PRICE_CLOSE, 0);    double adxValue = iADX(NULL, 0, adxPeriod, 0);    double rsiValue = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE, 0);    // Bedingungen für den Einstieg überprüfen    if (rsiValue > rsiThreshold && adxValue > adxThreshold && cciValue < cciThreshold)    {       // Einstieg long       OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Trade", 0, 0, Green);       // Setzen Sie Stop Loss und Take Profit       OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Trade", stopLoss, takeProfit, Green);    } } //+------------------------------------------------------------------+

Ach so. Sie verwenden mql4. Eigentlich gehört das Thema zu diesem Thread: 

https://www.mql5.com/de/forum/mql4

Aber gut. Versuche den Kode richtig zu bearbeiten.

#property strict

// Indikator-Parameter
int cciPeriod = 7;
int adxPeriod = 10;
int rsiPeriod = 15;

// Einstiegsschwellen
double rsiThreshold = 50;
double adxThreshold = 35;
double cciThreshold = -85;

// Risk Management
double lotSize = 0.1;  // Handelsgröße
int stopLoss = 50;     // Stop-Loss in Pips
int takeProfit = 100;  // Take-Profit in Pips

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   // Berechnungen für CCI, ADX und RSI
   double cciValue = iCCI(NULL, 0, cciPeriod, PRICE_CLOSE, 0);
   double adxValue = iADX(NULL, _Period, adxPeriod, 0, 0);
   double rsiValue = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE, 0);

   // Bedingungen für den Einstieg überprüfen
   if (rsiValue > rsiThreshold && adxValue > adxThreshold && cciValue < cciThreshold)
   {
      // Einstieg long
      OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Trade", 0, 0, Green);

      // Setzen Sie Stop Loss und Take Profit
      OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Trade", stopLoss, takeProfit, Green);
   }
}
//+------------------------------------------------------------------+

Sie haben eine NULL vergessen für den Buffer.

Selbst programmiere schon seit Ewigkeit MQL4 nicht und den Kode nicht getestet.