Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die Aufträge werden zu nahe am aktuellen Geld-/Briefkurs platziert. Die Aufträge müssen einen bestimmten Abstand zum aktuellen Kurs haben. Verwenden Sie die Funktion Marketinfo mit dem Parameter stop_level, um diese Informationen zu extrahieren, und vergewissern Sie sich, dass Ihre Orders so weit von der Geld-/Briefmarke entfernt sind.
Ich hoffe, das hilft Ihnen.
Die Orders werden zu nahe am aktuellen Bid/Ask platziert. Die Orders müssen einen gewissen Abstand zum aktuellen Kurs haben. Verwenden Sie die Funktion Marketinfo mit dem Parameter stop_level, um diese Informationen zu extrahieren, und stellen Sie sicher, dass Ihre Orders so weit von der Geld-/Briefmarke entfernt sind. Ich hoffe, das hilft.
ummm....
Tut mir leid, aber ich kann Ihnen nicht folgen...
Kann ich nicht einfach einen Auftrag auf dem "aktuellen" Niveau platzieren? Das meiste, was ich bisher getan habe, war, Aufträge am Ende des Zeitraums auszuführen. Kann man das tun?
Ich muss erst lernen, was der Parameter stop_level und die marketinfo-Funktionen sind.
Danke für den Hinweis
Was auch immer es wert sein mag, hier ist das Update, das ich für den Trendband-Indikator gemacht habe, das war ziemlich lustig
ok hier ist es...
Marktinformations-Identifikatoren, die mit der Funktion MarketInfo() verwendet werden.
Es kann einer der folgenden Werte sein:
MODE_STOPLEVEL 14 Stop-Level in Punkten.
Ich nehme also an, es ist...
MarktInfo(14)
Wo muss ich das eintragen?
oder ist das...
MarketInfo(NULL,MODE_STOPLEVEL);
oder...
double bid =MarketInfo(NULL,MODE_BID);
double ask =MarketInfo(NULL,MODE_ASK);
double point =MarketInfo(NULL,MODE_POINT);
Ich schätze, ich verstehe nicht wirklich, wie man das benutzt...können Sie mir ein Beispiel zeigen?
Hier ist das, womit ich in diesem Fall arbeite... Ich frage mich, warum dieser EA vorher keine Probleme hatte, Aufträge zu platzieren, und jetzt hat er welche? Es hat funktioniert, bevor ich den Filter hinzugefügt habe?
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### ends here
return(0);
}
if(isCrossed == 2 && Ask > LowLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### ends here
return(0);
}
return(0);
}
return(0);
}
return(0);
}
}
//+------------------------------------------------------------------+Sie sollten MarketInfo(NULL,MODE_STOPLEVEL) verwenden, um zu bestimmen, wie weit Ihre Stop-Orders vom aktuellen Kurs entfernt sein sollten. Denken Sie daran, dass der Wert in Pips zurückgegeben wird.
Sie können den Wert jedoch auch in Punkte umrechnen, indem Sie etwas wie folgt verwenden:
double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);
Stellen Sie nun sicher, dass Ihre Stop-Orders mindestens so weit vom aktuellen Marktpreis entfernt sind. Übrigens, durch die Verwendung von NormalizeDouble und Digits konvertieren Sie den Pip-Wert in die entsprechenden Nachkommastellen (4 oder 2). Das ist eine sehr schöne Sache in MT4.
Hoffentlich hilft das.
Maji
Sie sollten MarketInfo(NULL,MODE_STOPLEVEL) verwenden, um zu bestimmen, wie weit Ihre Stop-Orders vom aktuellen Kurs entfernt sein sollten. Denken Sie daran, dass der Wert in Pips zurückgegeben wird.
Sie können jedoch in Punkte umrechnen, indem Sie etwas wie folgt verwenden:
double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);
Stellen Sie nun sicher, dass Ihre Stop-Orders mindestens so weit vom aktuellen Marktpreis entfernt sind. Übrigens, durch die Verwendung von NormalizeDouble und Digits konvertieren Sie den Pip-Wert in die entsprechenden Nachkommastellen (4 oder 2). Das ist eine sehr schöne Sache in MT4.
Hoffentlich hilft das.
MajiWas ich nicht verstehe, ist, warum das Hinzufügen des Indikators als Filter die Art und Weise, wie er Aufträge oder Stops platziert, durcheinander bringt. Es hat sich nichts geändert, soweit ich das beurteilen kann. Warum also ändert das Verbot von Trades oberhalb der Linie die Art und Weise, wie er seine Stop-Orders platziert?
Wenn es Ihnen nichts ausmacht, schicken Sie mir den aktuellen Code per E-Mail. Ich werde versuchen, am Wochenende einen Blick darauf zu werfen. Ich kann nicht versprechen, dass ich das Problem beheben kann, aber ich werde es ehrlich versuchen.
Hier ist Ihr Problem, das Sie sich zuerst ansehen sollten
Ask and upLevel are in "price" (like 115.56 or 1.2678) while longrange is in pips (like 4,5,6) and u cannot mixed them. U have to normalize the pips to "price" and this is done by muliplying the pips with Points
the corrected code is like that
[PHP]if(isCrossed == 1 && Ask < upLevel-longrange*Point)Nun, das ist ausnahmsweise mal eine einfache Lösung ...
nur...
... die Sache ist, dass ich es geändert habe, seit ich diesen Beitrag geschrieben habe. ...Ich habe den Indikator mit einem Parameter modifiziert, um die Bänder breiter oder schmaler zu machen und den Teil des EAs herausgenommen, der eine nahe Grenze zur Linie bildet. Ich dachte mir, wenn ich nur die Handelsbänder selbst schmaler oder breiter machen könnte, würde das die gleiche Funktion bieten, ohne so komplex zu sein, und für mich war es einfacher, den geistigen Überblick zu behalten....so...
derzeit ist es so...
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
elsesowohl ask als auch uplevel sind beide im Preis, nicht wahr? das ist der Code, der immer noch den Fehler erzeugt. da muss noch mehr los sein.
bisher sehe ich kein Problem (codeorientiert)
Aber logisch betrachtet, sieht es so aus
if(isCrossed == 1 && Ask < upLevel)
Sie prüfen nicht, ob sie nahe beieinander liegen, sondern nur, ob der Preis unter der Linie liegt
Ich wusste, dass ich es habe!!!
Ich Tests genau das, was u wollte zu bekommen, und meine previuos Beitrag habe ich nur die falsche EA.
Dieser EA kann bis zu 4 TF zu überprüfen, ob alle von ihnen bekommen den Rand zur gleichen Zeit. U kann nur eine auswählen, wenn u wollen.
Sie können es als ein Beispiel verwenden, wie man die Logik aus einem Indikator zu bekommen, und wie man mehrere TF zusammen zu kombinieren
Mit freundlichen Grüßen
Eli
Ich wusste, dass ich es habe!!!
Ich testet genau das, was u wollte zu bekommen, und meine previuos Beitrag habe ich gerade die falsche EA.
Dieser EA kann bis zu 4 TF überprüfen, um zu prüfen, ob alle von ihnen den Rand zur gleichen Zeit erhalten. U kann nur eine auswählen, wenn u wollen.
Sie können es als Beispiel verwenden, wie man die Logik aus einem Indikator herausholen kann und wie man mehrere TF miteinander kombiniert.
Mit freundlichen Grüßen
EliDas ist faszinierend Ich habe mich noch nicht wirklich mit Multi-TF-Indikatoren befasst, aber ich glaube, dass sie ihre Berechtigung haben.