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.
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
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?