Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 657
Gesamt: 657
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree5Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #141 (permalink)  
Alt 02.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

die angezeigten Fehlermeldungen haben aber nix mit iCCI zu tun.
An zwei stellen fehlen Semikolons(rotes Zeichen) und an zwei stellen hast Du Stringvariablen als Zahlen verwendet. Da weiss ich nicht, was da rauskommen soll.
Und an zwei stellen scheinen irgendwelche Abfragen nicht plausibel zu sein.

Kenne leider den Quellcode nicht.
  #142 (permalink)  
Alt 02.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Einen Fehler konnte ich irgendwie beheben. Bleibt bloß noch einer:


Code:
extern int TimeFrame = 60;
extern string TimeFrames= "Current:0;M1:1; M5:5; M15:15; M30:30; H1:60; H4:240; D1:1440";
extern int Fast_GD = 15;
extern int Slow_GD = 30;
extern int GD_Type = 0;
extern string GD_Types = "SMA:0; EMA:1; SMMA;2; LWMA:3";
extern int GD_Shift = 0;
extern double Lots = 0.01;
extern int InpCCIPeriod = 20;// CCI Period
extern int indicator_level1 = "-100.0";
extern int indicator_level2 = "+100.0";
extern color color1 = LightSeaGreen;

int Slippage = 1000;

int Ticket, i;
double Spread, PointSet;
bool IsInvested, CloseTicket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

int init(); {
int OnInit iCCI;
return(0);
}

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() {
   return(0);
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int start() {  
   if (Digits <= 3) PointSet = 0.01; else PointSet = 0.0001;
   if (Digits <= 1) PointSet = 1;
   Spread=Ask-Bid;
   Lots = MathMax(MathMin(Lots, MarketInfo(Symbol(),MODE_MAXLOT)),MarketInfo(Symbol(),MODE_MINLOT));

//Define Vars
   if (TimeFrame==0) TimeFrame=NULL;
   double LC = iClose(Symbol(), TimeFrame, 1);
   double GD1c = iMA(Symbol(), TimeFrame, Fast_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1);
   double GD2c = iMA(Symbol(), TimeFrame, Slow_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1);
   double CCI = iCCI(Symbol(), InpCCIPeriod, color1, PRICE_CLOSE, 1);

//Check position
   IsInvested = false;
   for (i=OrdersTotal()-1; i>=0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if((OrderType()==OP_SELL || OrderType()==OP_BUY) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) IsInvested=true;
      }
   } 

//Open Trade
   if (!IsInvested) {
      if (LC>GD1c && GD1c>GD2c && CCI>"+100") OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
      if (LC<GD1c && GD1c<GD2c && CCI<"-100") OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);
   }

//Close Trade
   if (IsInvested) {
    for (i=OrdersTotal()-1; i>=0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
            if(LC<GD1c && GD1c<GD2c == CCI<"+100") OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);
         }
         if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) {
            if(LC>GD1c && GD1c>GD2c >("-100")) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);
         } 
      }
    }    
   }
         
 return(0);
}

Geändert von MA-EA (02.03.16 um 20:58 Uhr)
  #143 (permalink)  
Alt 02.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

@MA_EA ich hab zwar keine Ahnung von mql4 aber den hier verstehe ich nicht:

extern int indicator_level1 = "-100.0";

Die Variable soll vom Typ Integer sein(also ganze Zahlen) den Wert aber setzt Du in Anführungszeichen (das ist dann der Variablentyp Buchstaben(string). Damit bringst Du den Compiler sicher zum Glühen.

Und was bezweckst Du mit diesen Zeilen?

if (LC<GD1c && GD1c<GD2c && CCI<"-100")

Der Lastclose soll kleiner als GD1 und GD2 sein und der CCi soll kleiner -100?

Das müsste dann glaube ich so ähnlich aussehen

if (LC<GD1c && GD1c<GD2c && iCCI(Symbol(),0,12,PRICE_TYPICAL,0)<-100)

kann mich auch irren, so hätte ich das gemacht
  #144 (permalink)  
Alt 02.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Versteh einiges selber nicht.

Habs zu double geändert. Hab keine Ahnung, wie ich dem Teil beibringen soll, negative Zahlen zu benutzen. Also hab ich den Schrott einfach in "" gesetzt. Funktioniert wahrscheinlich nicht. Aber das ist ja inzwischen normal.

Vielleicht muss man auch was anderes angeben, als die 100 und -100 Linie. Hab aber keine Ahnung, was.

Werd mich die nächsten Tage ganz genau mit allem befassen.
  #145 (permalink)  
Alt 02.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

Und was soll das jetzt bringen? Warum steht die Zeile überhaupt da? Kennst du den Unterschied zw int double bool string? Double sind doch auch zahlen und keine Buchstaben. Wie soll das gehen ? Da ist 100=ABC ?
  #146 (permalink)  
Alt 03.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

@MA-EA
nochmal langsam, wenn Du den aktuellen Wert des CCI Indikators auslesen willst machst Du das mit

iCCI(Symbol(),0,12,PRICE_TYPICAL,0)

wenn der aktuelle Wert des Indikators kleiner/gleich -100 sein soll lautet die Bedingung:

if(iCCI(Symbol(),0,12,PRICE_TYPICAL,0)<=-100)

wenn du verschiedene Werte statt der -100 testen willst legst Du ne Variable vom Typ double an, also so ähnlich dann:

extern double CCIMin=-100;

und die Bedingung die erfüllt sein muss schreibst Du dann so:

if(iCCI(Symbol(),0,12,PRICE_TYPICAL,0)<=-CCImin)

Ich hab aber auch nur die Tutorials bei mql5 gelesen, kann mich irren.
Man kann auch die Indikatorwerte mit iCustom(....) direkt auslesen
  #147 (permalink)  
Alt 03.03.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

@ralfbenker:
extern double CCIMin=-100;
und die Bedingung die erfüllt sein muss schreibst Du dann so:
if(iCCI(Symbol(),0,12,PRICE_TYPICAL,0)<=-CCImin)

Doppeltes - wird zu +. Sicherlich copy/paste-Fehler.

@MA-EA: Auch sage ich es gern noch einmal. Kein Meister ist vom Himmel gefallen, aber auf dem Wege zum Meister, sollte ein Grundlagen"Studium" der Basics des MQL einfach dazugehören.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #148 (permalink)  
Alt 03.03.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

@traderdoc
jo genau, das ist einer von meinen Schusslichkeitsfehlern wenn's schnell gehen muss
  #149 (permalink)  
Alt 03.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Ich schnall einfach nicht, was ich beim init von Indis etc. falsch mache.
Immer krieg ich irgendeine Fehlermeldung. Diesmal heißt es "'{' - function definition unexpected".

Code:
{
int init;
int OnInit iIchimoku;
return;
}
  #150 (permalink)  
Alt 03.03.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Ich schnall einfach nicht, was ich beim init von Indis etc. falsch mache.
Immer krieg ich irgendeine Fehlermeldung. Diesmal heißt es "'{' - function definition unexpected".

Code:
{
int init;
int OnInit iIchimoku;
return;
}
Ja, dann schaue Dir doch einfach mal Indikatoren an, die als mq4-Code vorliegen.

Was soll dieser Code auch bedeuten?
Wo ist die Funktion zu diesem Funktionskörper?
OnInit() ist eine prädefinierte Funktion von MQL mit der Struktur:
int OnInit()
{

return(INIT_SUCCEEDED);
}

Die sehe ich bei Dir nicht.
Sorry, aber ich kann mich des Eindruckes nicht erwehren, dass Du auf Biegen und Brechen Dir irgendwas zusammenstückeln willst, ohne die entsprechenden Grundlagen zu haben.
Wie bereits erwähnt, nimm Dir fertigen Code, gehe Zeile für Zeile durch, schlage die Funktionen und Variablen nach usw.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
expert advisor, gleitender durchschnitt, mql4, programmierung, programmierung metatrader, programmierung mql4, trading

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------