Hilfe bei der Codierung - Seite 507

 
tristantsh:
Danke mntiwana und malden. aber warum muss ich erneut kaufen? Können Sie diese Indikatoren in Nachrichten senden

Schicken Sie die ursprüngliche E-Mail mit dem Link, den Sie beim Kauf des Indikators erhalten haben, an support@forex-tsd.com, und wenn alles korrekt ist, erhalten Sie eine aktualisierte Version.

 

Okay mlanden. aber der Indikator vor nmc sieht interessanter aus als nach nmc . Ist es nur mein Gefühl?

 
tristantsh:
Okay mlanden. aber der Indikator vor nmc sieht interessanter aus als nach nmc . Ist das nur mein Gefühl?

Die Ergebnisse der "nmc"-Version sind gegenüber der "pre-nmc"-Version überhaupt nicht verändert. "nmc" steht für "new metatrader compatible".

Alles Gute

 

Warum?

Mladen,

Bitte können Sie mir den Grund nennen, warum dieser Ea nicht funktioniert.

//----------------------- EA-PARAMETER

externer String

Expert_Name = "---------- Pending Order EA v1",

Expert_Name2 = "---------- Für aktuellen Kurs EntryLevel = 0 setzen";

extern double

EntryLevel = 1.8600,

Abstand = 100,

StopLoss = 50,

TakeProfit = 50,

TrailingStop = 50;

externer String

Order_Setting = "---------- Order-Einstellung";

extern int

NumberOfTries = 5,

Schlupf = 5,

MagischeZahl = 1234;

extern string

MM_Parameter = "---------- Geldverwaltung";

extern double

Lots =0,01;

extern bool

MM = false, //Geldmanagement verwenden oder nicht

AccountIsMicro = true; //Mikro-Konto verwenden oder nicht

extern int

Risiko = 0; //10%

extern string

Testing_Parameters= "---------- Back Test Parameter";

extern bool

Show_Settings = true;

//----------------------- GLOBALE VARIABLE

statische int

TimeFrame = 0;

string

TicketKommentar = "PendingOrderEA v2",

LastTrade;

bool

TradeAllow = true,

EntryAllow = true;

//+------------------------------------------------------------------+

//| Experten-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//----------------------- GENERIERT MAGISCHE NUMMER UND TICKET-KOMMENTAR

//----------------------- QUELLE: PENGIE

MagischeZahl = subGenerateMagicNumber(MagischeZahl, Symbol(), Punkt());

TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());

//----------------------- EA-EINSTELLUNG IM DIAGRAMM ANZEIGEN

//----------------------- QUELLE: CODERSGURU

if(Show_Settings) subPrintDetails();

else Comment("");

return(0);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----------------------- VERHINDERT EINE ERNEUTE ZÄHLUNG, WENN DER BENUTZER DEN ZEITRAHMEN ÄNDERT

//----------------------- QUELLE: CODERSGURU

TimeFrame=Period();

return(0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

double

// BuyLevel,

SellLevel;

int

cnt,

ticket,

total;

//----------------------- KAUF- und VERKAUFSPREIS festlegen

if(EntryLevel==0) EntryLevel = Bid;

// BuyLevel = EntryLevel + Entfernung*Punkt;

SellLevel = EntryLevel - Entfernung*Punkt;

// if((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)

// {

// Comment("Ungültiger Einstiegskurs oder Abstand");

// return(0);

// }

//----------------------- LOTS ANPASSEN, WENN GELDMANAGEMENT VERWENDET WIRD

if(MM) Lots = subLotSize();

//----------------------- ENTRY

//----------------------- GESAMTAUFTRAG AUF BASIS VON MAGICNUMBER UND SYMBOL

total = subTotalTrade();

//----------------------- SETZT DIE ORDER NUR 1 MAL

if(TradeAllow)

{

//----------------------- IF NO TRADE

if(total<1 && EntryAllow)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);

// Ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green);

EntryAllow = false;

return(0);

}

if(gesamt==1)

{

subDeleteOrder();

TradeAllow = false;

}

}

//----------------------- TRAILING-STOP-ABSCHNITT

if(TrailingStop>0 && subTotalTrade()>0)

{

total = OrdersTotal();

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

subTrailingStop(OrderType());

return(0);

}

}

}

return(0);

}

//----------------------- END PROGRAM

//+------------------------------------------------------------------+

//| FUNKTIONSDEFINITIONEN

//+------------------------------------------------------------------+

//----------------------- GELDVERWALTUNGSFUNKTION

//----------------------- QUELLE: CODERSGURU

double subLotSize()

{

double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;

if(AccountIsMicro==false) //normales Konto

{

if(lotMM < 0.1) lotMM = Lots;

if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

else //micro account

{

if(lotMM < 0,01) lotMM = Lots;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

wenn(lotMM > 100) lotMM = 100;

}

return(lotMM);

}

//----------------------- ANZAHL DER AUFTRÄGE AUF BASIS DES SYMBOLS UND DER MAGICNUMBER-FUNKTION

int subTotalTrade()

{

int

cnt,

gesamt = 0;

for(cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SELL &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber) total++;

}

return(total);

}

//----------------------- FUNKTION BESTELLUNG LÖSCHEN

void subDeleteOrder()

{

int

cnt,

total = 0;

total = OrdersTotal();

for(cnt=summe-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(BestellSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

switch(OrderType())

{

// Fall OP_BUYLIMIT :

// case OP_BUYSTOP :

Fall OP_SELLLIMIT:

case OP_SELLSTOP :

OrderDelete(OrderTicket());

}

}

}

}

//----------------------- TRAILING STOP FUNCTION

//----------------------- QUELLE: CODERSGURU

//----------------------- MODIFIED : FIREDAVE

void subTrailingStop(int Typ)

{

if(Type==OP_BUY) // Kaufposition wird eröffnet

{

if(Bid-OrderOpenPrice()>Point*TrailingStop &&

OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

if(Type==OP_SELL) // Verkaufsposition wird eröffnet

{

if(OrderOpenPrice()-Ask>Point*TrailingStop)

{

if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

//----------------------- GENERIERT MAGISCHE ZAHL AUF BASIS VON SYMBOL UND ZEITRAHMENFUNKTION

//----------------------- QUELLE: PENGIE

//----------------------- MODIFIED : FIREDAVE

int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)

{

int isymbol = 0;

if (symbol == "EURUSD") isymbol = 1;

else if (symbol == "GBPUSD") isymbol = 2;

sonst if (Symbol == "USDJPY") isymbol = 3;

sonst wenn (Symbol == "AUDCAD") isymbol = 4;

sonst wenn (Symbol == "AUDUSD") isymbol = 5;

sonst wenn (Symbol == "USDCAD") isymbol = 6;

sonst wenn (Symbol == "EURGBP") isymbol = 7;

sonst wenn (Symbol == "EURJPY") isymbol = 8;

sonst wenn (Symbol == "EURCHF") isymbol = 9;

sonst wenn (Symbol == "EURAUD") isymbol = 10;

sonst wenn (Symbol == "EURCAD") isymbol = 11;

sonst wenn (Symbol == "GBPUSD") isymbol = 12;

sonst wenn (Symbol == "GBPJPY") isymbol = 13;

sonst wenn (Symbol == "GBPCHF") isymbol = 14;

sonst wenn (Symbol == "GBPAUD") isymbol = 15;

sonst wenn (Symbol == "GBPCAD") isymbol = 16;

sonst isymbol = 17;

if(isymbol<10) MagicNumber = MagicNumber * 10;

return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));

}

//----------------------- KOMMENTAR DRUCKEN FUNKTION

//----------------------- QUELLE: CODERSGURU

void subPrintDetails()

{

string sKommentar = "";

string sp = "----------------------------------------\n";

string NL = "\n";

sComment = sp;

sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";

sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";

sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;

sKommentar = sKommentar + sp;

sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";

sKommentar = sKommentar + "MM=" + subBoolToStr(MM) + " | ";

sKommentar = sKommentar + "Risiko=" + DoubleToStr(Risiko,0) + "%" + NL;

sKommentar = sKommentar + sp;

Kommentar(sKommentar);

}

//----------------------- BOOLEN VARIABLE ZU STRING FUNKTION

//----------------------- QUELLE: CODERSGURU

string subBoolToStr ( bool wert)

{

if(value) return ("True");

else return ("False");

}

//----------------------- FUNKTION BEENDEN

Vielen Dank im Voraus.

Jo

 

mladen,

hoffen, dass Sie gut. die unten hat zwei Fehler beim Kompilieren. bitte helfen

Dateien:
 
candyman752:
mladen, ich hoffe, es geht Ihnen gut. die unten hat zwei Fehler beim Kompilieren. helfen Sie bitte

candyman752

Probieren Sie es jetzt aus: rstochalert-4tf_1.mq4

Dateien:
 

Liebste MLADEN,

(bei meinen Fragen geht es immer mehr um Reparaturhilfe als um Codierungshilfe)

ich habe eine Bitte zu verstehen.....siehe 2 Bilder, die ich hinzugefügt habe, das erste ist mit 1 Fehler und 2 Warnungen in Bezug auf Zeile 70 und 72....wie Sie im 2. Bild sehen können, habe ich ersetzt und 1 Fehler und 1 Warnung entfernt......meine Frage ist...ist es richtig, dies so zu tun....und zweite Frage über die 2. Warnung, die noch in Zeile 80 ist...wenn es so belassen wird, kein Problem in der Funktion?

Grüße

mntiwana

 
mntiwana:
Liebste MLADEN,

(meine Fragen sind immer über die Reparatur Hilfe mehr als Codierung Hilfe)

Ich habe eine Bitte zu verstehen.....Siehe 2 Bilder, die ich hinzugefügt habe, das erste ist mit 1 Fehler und 2 Warnungen in Bezug auf Zeile 70 und 72....wie Sie im zweiten Bild sehen können, habe ich ersetzt und 1 Fehler und 1 Warnung entfernt......Meine Frage ist...ist es richtig, dies so zu tun....und zweite Frage über die zweite Warnung, die noch in Zeile 80 ist...wenn es so belassen wird, kein Problem in der Funktion?

Grüße

mntiwana

mntiwana

Auf diese Weise ist alles in Ordnung. Sie haben die Änderungen in Ordnung gebracht.

 
mladen:
mntiwana auf diese Weise ist alles in Ordnung. Sie haben die Änderungen OK

also vielen Dank großer Chef für die Ermutigung eines neugierigen Studenten.

Mit freundlichen Grüßen

 
Jovager:
Mladen,

Bitte können Sie mir den Grund nennen, warum diese ea nicht funktioniert.

//----------------------- EA-PARAMETER

externer String

Expert_Name = "---------- Pending Order EA v1",

Expert_Name2 = "---------- Für aktuellen Kurs EntryLevel = 0 setzen";

extern double

EntryLevel = 1.8600,

Abstand = 100,

StopLoss = 50,

TakeProfit = 50,

TrailingStop = 50;

externer String

Order_Setting = "---------- Order-Einstellung";

extern int

NumberOfTries = 5,

Schlupf = 5,

MagischeZahl = 1234;

extern string

MM_Parameter = "---------- Geldverwaltung";

extern double

Lots =0,01;

extern bool

MM = false, //Geldmanagement verwenden oder nicht

AccountIsMicro = true; //Mikro-Konto verwenden oder nicht

extern int

Risiko = 0; //10%

extern string

Testing_Parameters= "---------- Back Test Parameter";

extern bool

Show_Settings = true;

//----------------------- GLOBALE VARIABLE

statische int

TimeFrame = 0;

string

TicketKommentar = "PendingOrderEA v2",

LastTrade;

bool

TradeAllow = true,

EntryAllow = true;

//+------------------------------------------------------------------+

//| Experten-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//----------------------- GENERIERT MAGISCHE NUMMER UND TICKET-KOMMENTAR

//----------------------- QUELLE: PENGIE

MagischeZahl = subGenerateMagicNumber(MagischeZahl, Symbol(), Punkt());

TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());

//----------------------- EA-EINSTELLUNG IM DIAGRAMM ANZEIGEN

//----------------------- QUELLE: CODERSGURU

if(Show_Settings) subPrintDetails();

else Comment("");

return(0);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----------------------- VERHINDERT EINE ERNEUTE ZÄHLUNG, WENN DER BENUTZER DEN ZEITRAHMEN ÄNDERT

//----------------------- QUELLE: CODERSGURU

TimeFrame=Period();

return(0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

double

// BuyLevel,

SellLevel;

int

cnt,

ticket,

total;

//----------------------- KAUF- und VERKAUFSPREIS festlegen

if(EntryLevel==0) EntryLevel = Bid;

// BuyLevel = EntryLevel + Entfernung*Punkt;

SellLevel = EntryLevel - Entfernung*Punkt;

// if((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)

// {

// Comment("Ungültiger Einstiegskurs oder Abstand");

// return(0);

// }

//----------------------- LOTS ANPASSEN, WENN GELDMANAGEMENT VERWENDET WIRD

if(MM) Lots = subLotSize();

//----------------------- ENTRY

//----------------------- GESAMTAUFTRAG AUF BASIS VON MAGICNUMBER UND SYMBOL

total = subTotalTrade();

//----------------------- SETZT DIE ORDER NUR 1 MAL

if(TradeAllow)

{

//----------------------- IF NO TRADE

if(total<1 && EntryAllow)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);

// Ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green);

EntryAllow = false;

return(0);

}

if(gesamt==1)

{

subDeleteOrder();

TradeAllow = false;

}

}

//----------------------- TRAILING-STOP-ABSCHNITT

if(TrailingStop>0 && subTotalTrade()>0)

{

total = OrdersTotal();

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

subTrailingStop(OrderType());

return(0);

}

}

}

return(0);

}

//----------------------- END PROGRAM

//+------------------------------------------------------------------+

//| FUNKTIONSDEFINITIONEN

//+------------------------------------------------------------------+

//----------------------- GELDVERWALTUNGSFUNKTION

//----------------------- QUELLE: CODERSGURU

double subLotSize()

{

double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;

if(AccountIsMicro==false) //normales Konto

{

if(lotMM < 0.1) lotMM = Lots;

if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

else //micro account

{

if(lotMM < 0,01) lotMM = Lots;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

wenn(lotMM > 100) lotMM = 100;

}

return(lotMM);

}

//----------------------- ANZAHL DER AUFTRÄGE AUF BASIS DES SYMBOLS UND DER MAGICNUMBER-FUNKTION

int subTotalTrade()

{

int

cnt,

gesamt = 0;

for(cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SELL &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber) total++;

}

return(total);

}

//----------------------- FUNKTION BESTELLUNG LÖSCHEN

void subDeleteOrder()

{

int

cnt,

total = 0;

total = OrdersTotal();

for(cnt=summe-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(BestellSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

switch(OrderType())

{

// Fall OP_BUYLIMIT :

// case OP_BUYSTOP :

Fall OP_SELLLIMIT:

case OP_SELLSTOP :

OrderDelete(OrderTicket());

}

}

}

}

//----------------------- TRAILING STOP FUNCTION

//----------------------- QUELLE: CODERSGURU

//----------------------- MODIFIED : FIREDAVE

void subTrailingStop(int Typ)

{

if(Type==OP_BUY) // Kaufposition wird eröffnet

{

if(Bid-OrderOpenPrice()>Point*TrailingStop &&

OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

if(Type==OP_SELL) // Verkaufsposition wird eröffnet

{

if(OrderOpenPrice()-Ask>Point*TrailingStop)

{

if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

//----------------------- GENERIERT MAGISCHE ZAHL AUF BASIS VON SYMBOL UND ZEITRAHMENFUNKTION

//----------------------- QUELLE: PENGIE

//----------------------- MODIFIED : FIREDAVE

int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)

{

int isymbol = 0;

if (symbol == "EURUSD") isymbol = 1;

else if (symbol == "GBPUSD") isymbol = 2;

sonst if (Symbol == "USDJPY") isymbol = 3;

sonst wenn (Symbol == "AUDCAD") isymbol = 4;

sonst wenn (Symbol == "AUDUSD") isymbol = 5;

sonst wenn (Symbol == "USDCAD") isymbol = 6;

sonst wenn (Symbol == "EURGBP") isymbol = 7;

sonst wenn (Symbol == "EURJPY") isymbol = 8;

sonst wenn (Symbol == "EURCHF") isymbol = 9;

sonst wenn (Symbol == "EURAUD") isymbol = 10;

sonst wenn (Symbol == "EURCAD") isymbol = 11;

sonst wenn (Symbol == "GBPUSD") isymbol = 12;

sonst wenn (Symbol == "GBPJPY") isymbol = 13;

sonst wenn (Symbol == "GBPCHF") isymbol = 14;

sonst wenn (Symbol == "GBPAUD") isymbol = 15;

sonst wenn (Symbol == "GBPCAD") isymbol = 16;

sonst isymbol = 17;

if(isymbol<10) MagicNumber = MagicNumber * 10;

return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));

}

//----------------------- KOMMENTAR DRUCKEN FUNKTION

//----------------------- QUELLE: CODERSGURU

void subPrintDetails()

{

string sKommentar = "";

string sp = "----------------------------------------\n";

string NL = "\n";

sComment = sp;

sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";

sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";

sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;

sKommentar = sKommentar + sp;

sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";

sKommentar = sKommentar + "MM=" + subBoolToStr(MM) + " | ";

sKommentar = sKommentar + "Risiko=" + DoubleToStr(Risiko,0) + "%" + NL;

sKommentar = sKommentar + sp;

Kommentar(sKommentar);

}

//----------------------- BOOLEN VARIABLE ZU STRING FUNKTION

//----------------------- QUELLE: CODERSGURU

string subBoolToStr ( bool wert)

{

if(value) return ("True");

else return ("False");

}

//----------------------- FUNKTION BEENDEN

Vielen Dank im Voraus.

Jo

Jo,

Können Sie bitte die mq4-Datei anhängen? Es ist sehr schwierig, es auf diese Weise zu testen.