Wie programmiert man? - Seite 269

 

Dema-Variable falsch gesetzt

Ich bin nicht in der Lage, den Abschnitt "DEMA-Variablen" und seine Syntaxen richtig zu setzen. Die Codes DEMA1, DEMA2 und DEMA3 sind korrekt.

Bitte helfen Sie bei der Korrektur des DEMA-Variablen-Abschnitts.

wenn (TradeOrAlert) {

if (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) ;}

wenn (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}

CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);

CheckTrailingStop(Symbol(), 1, MagischeZahlKurz, S_Symbol_TS_0);

} sonst {

if (DEMA1)>(DEMA2) {MyAlert("if (DEMA1)>(DEMA2)", "CLOSESHORT(Symbol(),0.1,100,15,17)", Symbol());}

if (DEMA1)<(DEMA2) {MyAlert("if (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MyAlert("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MyAlert("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol());}

}

g_bars_276 = Bars;

return (0);

}

//----DEMA VARIABLES----Nicht richtig gesetzt, Hilfe benötigt-----

int init() {

double DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA1);

}

int start() {

double DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA2);

}

int start() {

double DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA3);

}

//

 

Dema-Variable nicht korrekt gesetzt

Ich stehe vor dem Problem, die Syntaxen im Abschnitt "DEMA VARIABLES" des untenstehenden Codes richtig zu setzen.

Sagen Sie mir auch, was ich nach dem Abschnitt "#include" in Bezug auf Dema-Variablen einfügen soll.

Ich erhalte die Fehler

'DEMA1' - Variable nicht definiert.

DEMA2' - Variable nicht definiert.

DEMA3' - Variable nicht definiert.

Bitte helfen Sie mir.

if (TradeOrAlert) {

if (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) ;}

if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}

CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);

CheckTrailingStop(Symbol(), 1, MagischeZahlKurz, S_Symbol_TS_0);

} sonst {

if (DEMA1)>(DEMA2) {MyAlert("if (DEMA1)>(DEMA2)", "CLOSESHORT(Symbol(),0.1,100,15,17)", Symbol());}

if (DEMA1)<(DEMA2) {MyAlert("if (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MyAlert("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MyAlert("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol());}

}

g_bars_276 = Bars;

return (0);

}

//----DEMA VARIABLES----Nicht richtig gesetzt, Hilfe benötigt-----

int start() {

double DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA1);

}

int start() {

double DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA2);

}

int start() {

double DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA3);

}

//

 

MA+Stoch Alert...bitte

Können Sie mir helfen, einen Indikator zu erstellen: MA+Stoch mit Alert

stoch(5,3,3);MA(8);MA(15);MA(30)....

Alarm, wenn MA(8)>MA(15)>MA(30) und %K über %D, aber unter dem Niveau 50 kreuzen

Warnung, wenn MA(8)<MA(15)<MA(30) und %D über %K, aber mehr als Level 50 kreuzen

Ich danke Ihnen vielmals

mein Englisch ist Fremdsprache

sympathetically!

 
lequoctrieu:
Können Sie mir helfen, einen Indikator zu erstellen: MA+stoch mit Alarm

stoch(5,3,3);MA(8);MA(15);MA(30)....

Alarm, wenn MA(8)>MA(15)>MA(30) und %K über %D, aber weniger als Level 50 kreuzen

Warnung, wenn MA(8)<MA(15)<MA(30) und %D über %K, aber mehr als Level 50 kreuzen

Ich danke Ihnen vielmals

mein Englisch ist eine Fremdsprache

sympathisch!

Hi,

Codeschnipsel aus einem meiner Indis, du musst es an deine Bedürfnisse anpassen:

extern bool AlertON=false;

extern bool EmailON=true;

extern bool SoundON=false;

extern bool VoiceON=false;

extern bool SMSON=false;

extern string ExtSoundFileName = "";//externe Sounddateien erforderlich, dann löschen

FastMA = fastMAnow;

SlowMA = slowMAnow;

if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))

{

if (i == 1 && flagval1==0)

{

flagval1=1;

flagval2=0;

if (AlertON==true) Alert("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 BUY-ALP EUR", "BUY Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+ZeitMinute(CurTime())+" Symbol="+Symbol()+" Periode="+Periode());

if (SMSON==true) SendMail("2754 BUY-ALP EUR", "BUY Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Periode="+Periode());

if (SoundON==true) PlaySound(ExtSoundFileName);//Peep etc

if (VoiceON==true) PlaySound(ExtSoundFileName);// eigene Sprach-WAV

}

CrossUp = Low - Range*0.5;

}

else if ((fastMAnow slowMAprevious))

{

wenn (i == 1 && flagval2==0)

{

flagval2=1;

flagval1=0;

if (AlertON==true) Alert("SELL Signal bei Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 SELL-ALP EUR", "SELL Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+ZeitMinute(CurTime())+" Symbol="+Symbol()+" Zeitraum="+Periode());

if (SMSON==true) SendMail("2754 SELL-ALP EUR", "SELL Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Periode="+Periode());

if (SoundON==true) PlaySound(ExtSoundFileName);//Peeeps etc

if (VoiceON==true) PlaySound(ExtSoundFileName);// eigene Sprach-WAV

}

CrossDown = Hoch + Bereich*0.5;

}

}

return(0);

}

 

MA+Stoch Alert...bitte

ixbone:
Hallo!

Codeschnipsel aus einer meiner Indis, Sie müssen ihn an Ihre Bedürfnisse anpassen:

extern bool AlertON=false;

extern bool EmailON=true;

extern bool SoundON=false;

extern bool VoiceON=false;

extern bool SMSON=false;

extern string ExtSoundFileName = "";//externe Sounddateien erforderlich, dann löschen

FastMA = fastMAnow;

SlowMA = slowMAnow;

if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))

{

if (i == 1 && flagval1==0)

{

flagval1=1;

flagval2=0;

if (AlertON==true) Alert("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 BUY-ALP EUR", "BUY Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+ZeitMinute(CurTime())+" Symbol="+Symbol()+" Zeitraum="+Periode());

if (SMSON==true) SendMail("2754 BUY-ALP EUR", "BUY Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Periode="+Periode());

if (SoundON==true) PlaySound(ExtSoundFileName);//Peep etc

if (VoiceON==true) PlaySound(ExtSoundFileName);// eigene Sprach-WAV

}

CrossUp = Low - Range*0.5;

}

else if ((fastMAnow slowMAprevious))

{

wenn (i == 1 && flagval2==0)

{

flagval2=1;

flagval1=0;

if (AlertON==true) Alert("SELL Signal bei Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 SELL-ALP EUR", "SELL Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+ZeitMinute(CurTime())+" Symbol="+Symbol()+" Zeitraum="+Periode());

if (SMSON==true) SendMail("2754 SELL-ALP EUR", "SELL Signal bei Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Periode="+Periode());

if (SoundON==true) PlaySound(ExtSoundFileName);//Peeeps etc

if (VoiceON==true) PlaySound(ExtSoundFileName);// eigene Sprach-WAV

}

CrossDown = Hoch + Bereich*0.5;

}

}

return(0);

}

Vielen Dank...ixbone

Ich schreibe Code sehr schlecht...Also, ich kann Ihren Code nicht verstehen....Sie können mir helfen, Indikator(.mq4) zu bauen, um zu verwenden

wenn ja, danke ich Ihnen sehr

Ich wünsche Ihnen einen guten Arbeitstag!

 

Wie überprüfe ich, ob das Hoch des aktuellen Balkens 2 Pips über dem Hoch des vorherigen Balkens liegt?

Sorry, falscher Ort für diese Frage.

Bitte löschen Sie diesen Admin.

Danke!

 

Teilweiser Abschluss einer Bestellung

Hallo,

ich versuche, einen EA zu programmieren, der auf zwei Ebenen Gewinne mitnimmt. Dazu möchte ich den ursprünglichen Auftrag so aufteilen, dass "x" Lots am ersten Gewinnziel und die restlichen Lots am zweiten Gewinnziel abgezogen werden. Zu diesem Zweck verwende ich zwei OrderClose()-Funktionen.

Die erste OrderClose()-Funktion funktioniert einwandfrei, aber sie scheint auch den bestehenden Auftrag zu schließen und ein neues Ticket für die verbleibenden Lots zu erzeugen.

Könnte mir jemand einen Tipp geben, wie ich dieses "neue" Ticket bzw. diesen "neuen" Auftrag behandeln soll, damit er von der zweiten CloseOrder()-Funktion verarbeitet werden kann?

Vielen Dank

Jim

 
jimdee:
Hallo,

Ich versuche, einen EA zu programmieren, der auf zwei Ebenen Gewinne mitnimmt. Dazu möchte ich den ursprünglichen Auftrag so aufteilen, dass "x" Lots am ersten Gewinnziel und die restlichen Lots am zweiten Gewinnziel abgezogen werden. Zu diesem Zweck verwende ich zwei OrderClose()-Funktionen.

Die erste OrderClose()-Funktion funktioniert einwandfrei, aber sie scheint auch den bestehenden Auftrag zu schließen und ein neues Ticket für die verbleibenden Lots zu erzeugen.

Könnte mir jemand einen Tipp geben, wie ich dieses "neue" Ticket bzw. diesen "neuen" Auftrag behandeln soll, damit er von der zweiten CloseOrder()-Funktion verarbeitet werden kann?

Vielen Dank

Jim

Nur eine Idee. Sie können versuchen, zwei Trades anstelle von einem zu verwenden, wenn eine teilweise Schließung mit Gewinn schwieriger zu erreichen ist. Und diese Trades nach ihrer Open Time zu verwalten.

 
jimdee:
Hallo,

Ich versuche, einen EA zu programmieren, der auf zwei Ebenen Gewinne mitnimmt. Dazu möchte ich den ursprünglichen Auftrag so aufteilen, dass "x" Lots am ersten Gewinnziel und die restlichen Lots am zweiten Gewinnziel abgezogen werden. Zu diesem Zweck verwende ich zwei OrderClose()-Funktionen.

Die erste OrderClose()-Funktion funktioniert einwandfrei, aber sie scheint auch den bestehenden Auftrag zu schließen und ein neues Ticket für die verbleibenden Lots zu erzeugen.

Könnte mir jemand einen Tipp geben, wie ich dieses "neue" Ticket bzw. diesen "neuen" Auftrag behandeln soll, damit er von der zweiten CloseOrder()-Funktion verarbeitet werden kann?

Vielen Dank

Jim

Die Leute haben unterschiedliche Referenzen, ich mag die Verwendung von Partial Close, weil es weniger Trades gibt, die der Broker bearbeiten muss.

Jedes Mal, wenn ein teilweiser Abschluss stattfindet, wird der Broker die verbleibende Order als neue Order betrachten und ein neues Ticket zuweisen. Aber es ist nicht wirklich wichtig, solange Ihr nächster Schritt die Methode für die Identifizierung von Trades nicht durch Auftragsticket basiert, kann es auf Auftragspartien basieren, oder Sie können eine Variable zuweisen, um EA zu zeigen, wann es in der Phase ist.

Partial Close ist ein bisschen schwierig zu handhaben, wenn die folgende Situation vorliegt:

1. Ihre Aufträge können aufgrund von MM unterschiedliche Losgrößen haben.

2. Sie haben mehrere Aufträge zur gleichen Zeit mit unterschiedlichen Lotgrößen.

Wenn Ihr EA die oben genannten Situationen aufweist und Sie keine Erfahrung in der Programmierung haben, denke ich, dass Sie den Ansatz der Mehrfachaufträge verwenden können.

 

Schnelle Lösung für ein einfaches Problem. Danke *Du : )

Ich möchte gerne die folgenden Variablen zurückgeben:

1. Der Eröffnungskurs des ersten Balkens des letzten aufgezeichneten Montags (Hour Bar).

2. Den Schlusskurs des letzten aufgezeichneten Mittwochs (Hour Bar).

Weiß jemand, wie man das macht? Ich habe versucht, die Variablen zu erhalten, wie sie mit :

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

if (currentday == 1 && currenttime == 0)

{

MondayOpenPrice = iOpen(Symbol(),PERIOD_H1,0);

}

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

Das Problem mit dem oben genannten ist, dass ich meinen Metatrader nicht immer die ganze Woche laufen lassen kann, um diese Variablen zu erhalten.

Also brauche ich den EA, um in der Geschichte für den ersten aufgezeichneten offenen Preis an einem Montag usw. zurück zu schauen.

Ich danke Ihnen vielmals für Ihre Zeit.

Grund der Beschwerde: