Fragen Sie! - Seite 61

 

Code Frage

Bitte ignorieren Sie den Beitrag. Diese Einstellung hat getan, was ich brauchte. Vielen Dank für den Anfang, um uns zu helfen.

Ich habe einen EA modifiziert, um mit mehreren Methoden zu arbeiten. Ich habe einige Nachforschungen angestellt, kann aber nicht herausfinden, wie ich den Namen des EA in das Kommentarfeld einfügen kann, wenn ich eine Bestellung eröffne. Kann mir bitte jemand die richtige Richtung weisen?

Ich hoffe, dass es einen einfachen String-Befehl gibt, den ich in jeden EA integrieren kann, den ich modifiziere, damit die Aufträge besser organisiert sind, wenn mehr als ein EA während eines Tests ausgeführt wird.

Vielen Dank für Ihre Zeit und Ihren Einblick.

Hier ist einer der nicht modifizierten Abschnitte, die ich ändern muss, um den EA-Kommentar einzugeben.

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Dateien:
 

Danke, dass Coderguru für uns da ist!

Ich habe eine Frage zu Alerts.

Ich möchte den Alarmtyp in diesem Code so ändern, dass er eine Wav-Datei abspielt, die ich auswähle, und nicht das Popup-Fenster Kauf-Verkauf-Ding hat. Es soll einfach eine wav-Datei abgespielt werden, wenn ein Fraktal erscheint.

Wie sollte der Code aussehen? Ich habe den sFractals-Alarm-Indikator beigefügt.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), ", ", Zeitraum(), ") - KAUFEN!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), ", ", Zeitraum(), ") - SELL!!!");

}

}

Dateien:
sfractals.mq4  8 kb
 
proverbs:
Ich bin mir der Logik nicht sicher, aber kann ich den CommentName einfach an der folgenden Stelle eingeben? Ich habe das nicht getestet, aber es lässt sich gut kompilieren.

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Das wird gut funktionieren. Sie können auch eine String-Variable an diese Stelle setzen.

 
Drivefast:
Vielen Dank an Coderguru, dass er für uns da ist!

Ich habe eine Frage zu Alerts.

Ich möchte den Alarmtyp in diesem Code ändern, so dass er eine Wav-Datei abspielt, die ich auswähle, und nicht das Popup-Fenster Kauf-Verkauf-Ding hat. Es soll einfach eine wav-Datei abgespielt werden, wenn ein Fraktal erscheint.

Wie sollte der Code aussehen? Ich habe den sFractals-Alarm-Indikator beigefügt.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), ", ", Zeitraum(), ") - KAUFEN!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), ", ", Zeitraum(), ") - SELL!!!");

}

}

Ich glaube, CodersGuru ist gestorben oder so. Er war schon eine Weile nicht mehr hier.

Auf jeden Fall.... diese Anweisung hinzufügen:

PlaySound("alert.wav");

.... wobei "alert.wav" der Name der Datei ist, die Sie abspielen möchten.

 
ryanklefas:
Ich glaube, CodersGuru ist gestorben oder so. Er war schon eine Weile nicht mehr hier.

Auf jeden Fall.... diese Anweisung hinzufügen:

PlaySound("alert.wav");

.... wobei "alert.wav" der Name der Datei ist, die Sie abspielen möchten.

Vielen Dank für die Antwort auf meinen Beitrag.

Ich bin mir nicht sicher, wo ich PlaySound("alert.wav"); in den Code einfügen soll.

Kann ich diesen Teil einfach löschen? Alert("sFractals (", Symbol(), ", ", Zeitraum(), ") - KAUFEN!!!");

Oder muss es so etwas wie das hier sein?

PrevSignal = 1;

PlaySound("alert.wav");

Alert("sFractals (", Symbol(), ", ", Periode(), ") - BUY!!!");

 

Ja, genau. Ersetzen Sie einfach die gesamte Meldung durch den Ton.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

Vielen Dank, ryanklefas, für all deine Hilfe, es funktioniert jetzt genau so, wie ich es will.

 

Frage zur Sortierung

Ich habe eine 2-dimensionale Datentabelle, die in einem 2-dimensionalen Array gespeichert ist. Ich möchte einige Manipulationen vornehmen, wie z.B. das Sortieren nach einer beliebigen Spalte aus dieser Datentabelle.

Die Funktion ArraySort() in der Anweisung kann Arrays nach ihrer ersten Dimension sortieren. Ich weiß nicht, wie das für mich funktionieren kann.

Haben Sie Vorschläge für die Sortierung von Datentabellen im MetaTrader?

 

Kommunikation zwischen Expert Advisor

Hallo,

ich möchte wissen, ob es eine Möglichkeit gibt, zwischen Expert Advisor zu kommunizieren, sagen wir, ich habe EA A als Hauptstrategie

und Backup EA B als Backup-Strategie

Ich platziere sie auf 2 verschiedenen Paaren.

Ich möchte auslösen, wenn EA A in Drawdown-Position sind, starten EA B...

wenn der kumulative Gewinn von EA A und EA B einen bestimmten Zielpunkt erreicht hat...

alle Positionen von EA A und EA B schließen

Ist das möglich?

 
veematics:
Hallo,

Ich möchte wissen, ob es eine Möglichkeit gibt, zwischen Expert Advisor zu kommunizieren, sagen wir, ich habe EA A als Hauptstrategie

und Backup EA B als Backup-Strategie

Ich platziere sie auf 2 verschiedenen Paaren.

Ich möchte auslösen, wenn EA A in der Drawdown-Position ist, EA B starten...

wenn der kumulative Gewinn von EA A und EA B einen bestimmten Zielpunkt erreicht hat...

alle Positionen von EA A und EA B schließen

Ist das möglich?

Ich denke, dass globale Variablen das sind, wonach Sie suchen. Sie können sie im MetaEditor-Referenzabschnitt nachlesen. Um Ihre aktuellen globalen Variablen zu sehen, drücken Sie F3 im MT4-Terminal.