Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 300

 
buyanov:

Aber es hat sich nichts geändert.

Sowohl der Fehler als auch die Warnung bleiben bestehen.

Geben Sie mir den GANZEN Code, nicht nur einen Teil davon. Erwarten Sie, dass alle mitraten? Dann fragen Sie hier - hier weiß jeder alles über alles auf einmal.

 

Ich gebe Ihnen den GANZEN Code.

Automated Trading and Strategy Testing
Automated Trading and Strategy Testing
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
buyanov:

Ich gebe Ihnen den GANZEN Code.

Es ist einfach riesig...

 

Alle Codes

"

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#Property-Version "Cross20170703 1.00"


//============================================ = ========================

extern int Period_FastMA=4;

extern int Period_SlowMA=8;


extern int MaxTickNum=30;

extern int MaxAttempt=10;

extern int k_slippage=1;


extern double k_SL=10.0;//*Punkt()

extern double k_TP=30.0;//*Punkt()


extern double TrailDist=30.0;//*Punkt()

extern doppelt k_lots=0.3;

extern bool ExFin=false;



int //************************************************ *****************************************


res,

Anzahl,

ich,

NextTick=0,

Zeit,

Endzeit,

BegMlSecTime,

EndMlSecTime,

Deltazeit,

Versuch,

Schlupf = 5,

TickNum=0,

Pos,

Fahrkarte,

MaxIntervall1000,

CrossNum=0,

comis=4,

Achtung,

Versuch,



irren;



doppelt //*********************************************** ***** *****************************


gesamt,

viele,

Verbreitung,


Fastma,

langsamMA,


Delta,


Letztes Delta,

ZurückDelta,


Comis=0.00004,

offener Preis,

Schlusskurs,

SL,

TP,


profitieren,

PROFITIEREN;


bool//************************************************ *** *************************************************


FirstCross=false,

NextCross=false,

CurType,

Erfolg = wahr

enable=true,


Begrüße,

BegDn,

BuyOpened=false,

SellOpened=false;


Zeichenkette//**************************************************** ***** ************************************************* *


rec,

str,

Aufzeichnung,

BegTimeCurrent,

EndzeitAktuell,

CurTime,

StrCur,

Schnurbett,

ZeichenfolgeEnde;

//**************************************************** ****************************************************** ****** ******


//============================================ = ============================================= == ============================

//============================================ = ============================================= == =============================

//============================================ = ============================================= == =============================




// > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>

//------------------------------------------------------------- -------------------------------------------------- --------------------------


//============================================ = ============================================= == =========================


int OnDeinit(const int res)

{

Alert("Bitte OnDeinit()");

err=StringToInteger((string)err);

Rückkehr(res);

Alert("end OnDeinit()");

}

//OnDeinit();-----------

//------------------------------------------------------------- -------------------------------------------------- -----------------------




//============================================ = ============================================= == ==========================

void ExpertStop()

{

Alert("ExpertStop");

if((ExFin==true)&&(TickNum==MaxTickNum))

{

ExperteEntfernen();

OnDeinit(res);

}

} // ExpertStop beenden


//------------------------------------------------------------- -------------------------------------------------- ------------------------



//============================================ = ============================================= == =======================

int Fehlerbeschreibung ()

{

Alert("beg ErrorDescription");

Schalter (irr)

{ Fall 0: err="Keine Fehler"; brechen;

Fall 1: err="Kein Fehler, aber Ergebnis unbekannt"; brechen;

Fall 2: err="Allgemeiner Fehler"; brechen;

Fall 3: err="Ungültige Parameter"; brechen;

Fall 4: err="Handelsserver ist beschäftigt"; brechen;

Fall 5: err="Alte Version des Client-Terminals"; brechen;

Fall 6: err="Keine Verbindung zum Handelsserver"; brechen;

Fall 7: err="Unzureichende Rechte"; brechen;

Fall 8: err="Zu häufige Anfragen"; brechen;

case 9: err="Illegaler Vorgang unterbricht den Server"; brechen;

Fall 64: err="Konto gesperrt"; brechen;

case 65: err="Falsche Kontonummer"; brechen;

case 128: err="Deal-Timeout abgelaufen"; brechen;

case 129: err="Falscher Preis"; brechen;

case 130: err="Falsche Stopps"; brechen;

Fall 131: err="Falsche Lautstärke"; brechen;

case 132: err="Markt geschlossen"; brechen;

Fall 133: err="Handel verboten"; brechen;

case 134: err="Nicht genug Geld, um die Operation abzuschließen"; brechen;

case 135: err="Preis geändert"; brechen;

case 136: err="Keine Preise"; brechen;

case 137: err="Broker beschäftigt"; brechen;

case 138: err="Neue Preise"; brechen;

case 139: err="Die Bestellung ist gesperrt und wird bereits bearbeitet"; brechen;

case 140: err="Nur Kauf erlaubt"; brechen;

case 141: err="Zu viele Anfragen"; brechen;

case 145: err="Modifikation ist nicht erlaubt, da die Order zu marktnah ist"; brechen;

Fall 146: err="Trading-Subsystem beschäftigt"; brechen;

case 147: err="Verwendung des Ablaufdatums der Order ist vom Makler verboten"; brechen;

case 148: err="Die Anzahl der offenen und ausstehenden Orders hat das vom Broker festgelegte Limit erreicht.";break;

//

case 4000: err="Kein Fehler"; brechen;

case 4001: err="Ungültiger Funktionszeiger"; brechen;

case 4002: err="Array-Index liegt außerhalb des gültigen Bereichs"; brechen;

case 4003: err="Kein Speicher für Funktionsstack"; brechen;

case 4004: err="Stapelüberlauf nach rekursivem Aufruf"; brechen;

case 4005: err="Es gibt keinen Speicher auf dem Stack um Parameter zu übergeben"; brechen;

case 4006: err="Nicht genügend Speicher für String-Parameter"; brechen;

case 4007: err="Nicht genügend Speicher für temporäre Zeichenkette"; brechen;

case 4008: err="Nicht initialisierter String"; brechen;

case 4009: err="Nicht initialisierter String im Array"; brechen;

case 4010: err="Nicht genügend Speicher für String-Array"; brechen;

case 4011: err="Zeichenfolge zu lang"; brechen;

case 4012: err="Null-Rest"; brechen;

case 4013: err="Division durch Null"; brechen;

case 4014: err="Unbekannter Befehl"; brechen;

case 4015: err="Falscher Übergang"; brechen;

case 4016: err="Nicht initialisiertes Array"; brechen;

case 4017: err="DLL-Aufrufe nicht erlaubt"; brechen;

case 4018: err="Bibliothek konnte nicht geladen werden"; brechen;

case 4019: err="Funktion kann nicht aufgerufen werden"; brechen;

case 4020: err="Aufrufe externer Bibliotheksfunktionen sind nicht erlaubt"; brechen;

case 4021: err="Nicht genug Speicher für die von der Funktion zurückgegebene Zeichenfolge"; brechen;

case 4022: err="System beschäftigt"; brechen;

case 4050: err="Ungültige Anzahl von Funktionsparametern"; brechen;

case 4051: err="Ungültiger Funktionsparameterwert"; brechen;

case 4052: err="Interner Fehler der String-Funktion"; brechen;

case 4053: err="Array-Fehler"; brechen;

case 4054: err="Falsche Verwendung des Zeitreihenarrays"; brechen;

Fall 4055: err=" Fehler des benutzerdefinierten Indikators "; brechen;

case 4056: err="Arrays sind inkompatibel"; brechen;

case 4057: err="Fehler beim Verarbeiten globaler Variablen"; brechen;

case 4058: err="Globale Variable nicht gefunden"; brechen;

case 4059: err="Funktion im Testmodus nicht erlaubt"; brechen;

case 4060: err="Funktion nicht erlaubt"; brechen;

case 4061: err="Fehler beim Senden der Mail"; brechen;

case 4062: err="String-Parameter erwartet"; brechen;

case 4063: err="Ein ganzzahliger Parameter wird erwartet"; brechen;

case 4064: err="doppelt erwartet"; brechen;

case 4065: err="Als Parameter wird ein Array erwartet"; brechen;

case 4066: err="Angeforderte Verlaufsdaten im Aktualisierungsstatus"; brechen;

case 4067: err="Fehler beim Ausführen einer Handelsoperation"; brechen;

case 4099: err="Dateiende"; brechen;

case 4100: err="Fehler beim Arbeiten mit der Datei"; brechen;

case 4101: err="Ungültiger Dateiname"; brechen;

case 4102: err="Zu viele offene Dateien"; brechen;

case 4103: err="Datei kann nicht geöffnet werden"; brechen;

case 4104: err="Inkompatibler Dateizugriffsmodus"; brechen;

case 4105: err="Keine Bestellungen ausgewählt"; brechen;

case 4106: err="Unbekanntes Zeichen"; brechen;

case 4107: err="Falscher Preisparameter für Handelsfunktion"; brechen;

case 4108: err="Ungültige Ticketnummer"; brechen;

case 4109: err="Trading ist nicht erlaubt. Sie müssen die Option Allow EA to trade in den EA-Eigenschaften aktivieren."; brechen;

case 4110: err="Long-Positionen sind nicht erlaubt. Sie müssen die EA-Eigenschaften überprüfen."; brechen;

case 4111: err="Short-Positionen sind nicht erlaubt. Sie müssen die EA-Eigenschaften überprüfen."; brechen;

case 4200: err="Objekt existiert bereits"; brechen;

case 4201: err="Eine unbekannte Objekteigenschaft wurde angefordert"; brechen;

case 4202: err="Objekt existiert nicht"; brechen;

case 4203: err="Unbekannter Objekttyp"; brechen;

case 4204: err="Kein Objektname"; brechen;

case 4205: err="Objektkoordinatenfehler"; brechen;

case 4206: err="Das angegebene Unterfenster wurde nicht gefunden"; brechen;

default: err="Fehler beim Arbeiten mit dem Objekt";

}

Alert("ende ErrorDescription");

zurück (irr);

}//ErrorDescription beenden()

//------------------------------------------------------------- -------------------------------------------------- ------------------------


//============================================ = ============================================= == =======================

int GetNext(NächsterTick)

//>>>>>>>>>>>>>>>>>>>>>>

{

Alert("beg GetNext(NextTick)");

Alert(NächsterTick);

while(RefreshRates()==false)Count++;

Alert("Count=",Count,"NextTick=",NextTick);

Alarm(" ");

Alert(RefreshRates(),Count,NextTick);

return(NächsterTick);

Alert(NächsterTick);

//-------------------

Alert("Ende GetNext(NextTick)");

}

//Ende GetNext(NextTick)

//============================================ = ============================================= == =======================


//------------------------------------------------------------- -------------------------------------------------- ------------------------

void OnTick()

{

//************************************

Alert("beg OnTick");

//************************************

FastMA=NormalizeDouble(iMA(NULL,0,Period_FastMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_FastMA=4

SlowMA=NormalizeDouble(iMA(NULL,0,Period_SlowMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_SlowMA=8

GetNext(NächsterTick);

Alert("NächsterTick=",NächsterTick);

Delta=NormalizeDouble(FastMA-SlowMA,Digits()); Alert("beg OnTick");

Alarm (Delta, Ziffern ());

Alert("FastMA=",DoubleToStr(FastMA ,Digits()),"SlowMA=",DoubleToStr(SlowMA,Digits()), "Delta=",DoubleToStr(Delta,Digits()));

Alert("Ende OnTick");

//------------------------------------------------------------- -------------------------------------------------- --------------------------

}// Ende (Ende OnTick)

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< < <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< < <<<<<<<<<<

//------------------------------------------------------------- -------------------------------------------------- ----------------------------



//============================================ = ============================================= == =========================



void Init()

{

Alarm(" ");

Alert("beg Init()");

Alarm(" ");



StringBeg=StringConcatenate("TimeToStr(TIME_DATE,TIME_SECONDS)=",TimeToStr(TIME_DATE,TIME_SECONDS));

alarm(stringbeg);


record=StringConcatenate("MaxTickNum=",MaxTickNum);

Alarm (Aufzeichnung);


record=StringConcatenate("k_SL=",DoubleToStr(k_SL,Digits()));

Alarm (Aufzeichnung);


record=StringConcatenate("k_TP=",DoubleToStr(k_TP,Digits()));

Alarm (Aufzeichnung);


record=StringConcatenate("k_lots=",DoubleToStr(k_lots,Digits()));

Alarm (Aufzeichnung);


Alert("end Init()");


}//Ende Init()

//------------------------------------------------------------- -------------------------------------------------- ------------------------




//============================================ = ============================================= == ====================

int GetTick(NächsterTick)


{


Alert("Bitte GetTick");


während (RefreshRates()==false)

NextTick++;

Alert("NächsterTick=",NächsterTick);


OrderSelect(NächsterTick,SELECT_BY_TICKET);


Gewinn=Bestellgewinn();


Alert(DoubleToStr(Profit, Digits));


GetNext(NächsterTick);


Alert("GetTick beenden");

}

//------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----


//============================================ = ============================================= == =========================


int NextType()

//>>>>>>>>>>>>>>>>>>>>>

{

Alert("beg NextType");


if(OrderSelect(NextTick,SELECT_BY_TICKET)==true)

{

OpenPrice=OrderOpenPrice();

ClosePrice=OrderClosePrice();

}


if(ClosePrice>OpenPrice)CurType=OP_BUY;


sonst CurType=OP_SELL;




return(curType);

Alert("end CurType()");

//>>>>>>>>>>>>>>>>>>>>>>>>>

}//"Ende CurType()";


//------------------------------------------------------------- -------------------------------------------------- ----------------------------



//============================================ = ============================================= == ==========================


bool FastMACrossUp()

{


if(!(Delta==LastDelta))Alert("Delta=",DoubleToStr(Delta,5),"LastDelta=",DoubleToStr(LastDelta,5));


Alert("LastDelta=",DoubleToStr(LastDelta,5));

Alert("!(Delta==LetztesDelta)=",!(Delta==LetztesDelta));

if(((Delta!=LetztesDelta) && (Delta>=0) && (LetztesDelta<=0)))Alert("(Delta!=LetztesDelta)&&(Delta>=0)&&(LetztesDelta<=0)= " ,

(Delta!=LetztesDelta) && (Delta>=0) && (LetztesDelta<=0));

Alert("(Delta>=0)=",(Delta>=0),"(LastDelta<=0)=",(LastDelta<=0));

if(Delta!=LastDelta)Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));

Alert("(Delta>=0)=",(Delta>=0)," ( LastDelta<=0)=",(LastDelta<=0)," TickNum=",TickNum);

Alert("(Delta>=0)=",(Delta>=0));

Alert("LetztesDelta<=",(LetztesDelta<=0));

Alert("!(Delta==LetztesDelta)&&((Delta>=0)&&(LetztesDelta<=0))=",!(Delta==LetztesDelta)&&((Delta>=0)&&(LetztesDelta<=0 )));

Alert(((Delta!=LastDelta)&&((Delta>=0)&&(LastDelta<=0))));

Alert(" (Delta!=LastDelta)= ",(Delta!=LastDelta)," (Delta>=0)= ",(Delta>=0)," (LastDelta<=0)= ",(LastDelta<= 0));

return((Delta!=LetztesDelta)&&(Delta>=0)&&(LetztesDelta<=0));

} // FastMACrossUp beenden ()

//------------------------------------------------------------- -------------------------------------------------- --------------------



//============================================ = ============================================= == ===================

bool FastMACrossDn()

{

if(!(Delta==LastDelta)&&(Delta<=0)&&(LastDelta>=0))Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5)) ;


Alert("LastDelta=",DoubleToStr(LastDelta,5));

Alert("!(Delta==LetztesDelta)=",!(Delta==LetztesDelta));

Alert("(Delta<=0)=",(Delta<=0));

Alert("LetztesDelta>=0",(LetztesDelta>=0));

if((Delta!=LetztesDelta) && (Delta<=0) && (LetztesDelta>=0))

Alert("(Delta<=0)=",(Delta<=0),"(LastDelta>=0)=",(LastDelta>=0));

Alert(" (Delta!=LetztesDelta)&&((Delta<=0)&&(LetztesDelta>=0))= ",(Delta!=LetztesDelta) && (Delta<=0) && (LetztesDelta>=0));

if(Delta!=LastDelta)Alert(" Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));

Alert("(Delta<=0)=",(Delta<=0)," (LastDelta>=0)=",(LastDelta>=0)," TickNum=",TickNum);

Alert(" (Delta!=LetztesDelta)&&((Delta<=0)&&(LetztesDelta>=0))= ",(Delta!=LetztesDelta)&&((Delta<=0)&&(LetztesDelta>=0)) );

return((Delta!=LetztesDelta)&&(Delta<=0)&&(LetztesDelta>=0));

}//Ende FastMACrossDn()

//------------------------------------------------------------- -------------------------------------------------- --------------------------------------



//============================================ = ============================================= == =================================

bool FastMAIsAbove()

{

Alert("bitte FastMAIsAbove()");

Alert(" (Delta>=0)=",(Delta>=0)," (LastDelta>=0)=",(LastDelta>=0));

if(((Delta>=0)&&(LetztesDelta>=0)))

Alert(" FastMA= ",DoubleToStr(FastMA,5)," SlowMA= ",DoubleToStr(SlowMA,5));

Alert(" Delta= ",DoubleToStr(Delta,5)," LastDelta= ",DoubleToStr(LastDelta,5));

Alert("Ende FastMAIsAbove()");

Alert("(Delta==LetztesDelta)&&(Delta>=0)&&(LetztesDelta>=0)=",(Delta==LetztesDelta)&&(Delta>=0)&&(LetztesDelta>=0));

Alert("Ende FastMAIsAbove()");

return((Delta==LetztesDelta)&&(Delta>=0)&&(LetztesDelta>=0));

}//Ende FastMAIsAbove()

//============================================ = ============================================= == ================


//------------------------------------------------------------- -------------------------------------------------- ------------------

bool FastMAIsBelow()

{


return((Delta==LetztesDelta)&&(Delta<=0)&&(LetztesDelta<=0));

}//Ende FastMAIsBelow()*/

"

//------------------------------------------------------------- -------------------------------------------------- ------------------

//**************************************************** ******************************************

"


 
Dmitriy Voevodkin:

Init kann nicht auf irgendeine Weise gestartet werden, es wird automatisch einmal gestartet, wenn der Indikator/Experte gestartet wird, genauso wie DeInit.

Alternativ dazu können Sie eine statische boolesche Variable erstellen und diese zusammen mitIsConnected() verwenden.Und wenn die Verbindung bei der Ankunft eines neuen Ticks wiederhergestellt wird, muss zuerst eine eigene Initialisierungsfunktion gestartet werden. AberIsConnected() sollte nicht in OnCalculate(), sondern in OnTimer()verwendet werden und meine eigene Initialisierungsfunktion sollte ganz am Anfang von OnCalculate() verwendet werden.


Danke, ich werde darüber nachdenken, ich dachte nur, dass es bereits typische Lösungen gibt......

 
buyanov:

Alle Codes

Wow, das sind eine Menge Warnmeldungen.
 
Mihail Marchukajtes:

Danke, ich werde darüber nachdenken, ich dachte nur, es gäbe bereits typische Lösungen......

Ich habe bereits eine Gegendarstellung zu den Worten dieser Person geschrieben. OnItit() ist eine gewöhnliche Funktion. Führen Sie es aus, wenn Sie es brauchen.

 
buyanov:

Alle Codes


Ich habe Ihnen bereits gesagt, dass Sie den Code über die SRC-Schaltfläche anhängen müssen. Entschuldigung, sind Sie völlig ungebildet?

Sagen Sie mir, wer würde sich diesen Schrott ansehen wollen?

 
Artyom Trishkin:

Ich habe bereits die Widerlegung der Worte dieses Mannes geschrieben. OnItit() ist eine übliche Funktion. Sie können es bei Bedarf einsetzen.


Nun, ja, ich habe mich gefragt, warum man es nicht anruft, wenn man eine Verbindung herstellt. Es stellt sich heraus, dass man das kann :-)

 
buyanov:

Alle Codes


Achten Sie auf variable Typen.

Werfen Sie alle unnötigen Ausschreibungen weg

Dateien:
test.mq4  42 kb
Grund der Beschwerde: