Fehler im Skript iADX wrong parameters count
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
- Ist das MQL4, dann gehört das nach unten in den MQL4 thread!
- Ist das MQL5, dann gibt iADX ein Handle zurück und keinen Indikatorwert!
- Einfach mal den Kursor auf iADX stellen und F1 drücken und schauen und lesen ....
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.
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);
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); } } //+------------------------------------------------------------------+
#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.
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?