EAs und Indikatoren kaufen/verkaufen - Seite 4

 
cifox:
Hallo Masters ......, Könnten Sie mir helfen, EA für offenen Kauf oder offenen Verkauf auf eine Zeit zu machen...

Ich habe Ihren Beitrag hierher verschoben.

Lesen Sie diesen Thread vom ersten Beitrag an und Sie werden einige EAs finden.

 

Öffnen Sie nur einen Kauf und einen Verkauf pro Tag!

Hallo Leute,

ich habe ein kleines Problem mit meinem EA. Er basiert auf der Preisbewegung und während eines Tages öffnet er mehr als eine Position. Ich möchte dies begrenzen, aber ich habe nicht verstanden, wie ich das machen kann.

Was ich tun möchte, ist etwas wie dieses:

Wenn Sie am aktuellen Tag bereits eine Kaufposition eröffnet haben, eröffnen Sie keine weiteren KAUF-Positionen. Wenn Sie aber ein Verkaufssignal finden, eröffnen Sie ein Verkaufssignal. Wenn Sie in diesem Fall ein weiteres Verkaufssignal finden, eröffnen Sie keine weiteren Verkaufspositionen.

Ich weiß nicht, wie ich das schreiben soll und was die richtige Position ist. Können Sie mir helfen?

Herzlichen Dank!!!

Mit freundlichen Grüßen,

Mauro

EDIT:

In einem anderen Thema habe ich diesen Code gefunden, aber ich weiß nicht, wo und wie ich ihn anhängen kann:

if(OrderSelect(1, SELECT_BY_POS)==true)

{

if(TimeToStr(OrderOpenTime(),TIME_DATE ) != TimeToStr(CurTime(),TIME_DATE ))

{

//open new order

}

}
 

In diesem Thema gibt es nichts über das, was ich suche... dieses Thema ist über Kauf und Verkauf zur gleichen Zeit....Aber was ich spreche, ist, dass, wenn ich bereits einen Kaufauftrag geöffnet haben meine EA während des Tages hat keine neuen Kaufauftrag öffnen. Dasselbe gilt, wenn er bereits eine Verkaufsorder eröffnet hat.

Aber wenn er eine Kauforder eröffnet, kann er während des Tages nur eine Verkaufsorder eröffnen...gemäß den oben beschriebenen Regeln.

Beispiel:

Die Zeit ist: heute

Der EA eröffnet eine Kauf-Order.

Die Position erreicht den TakeProfit oder den StopLoss, also wird sie geschlossen.

Jetzt kann der EA ein weiteres Kaufsignal sehen, aber da er bereits eine BUY ORDER in der vorherigen Zeit geöffnet hat, öffnet er diese Order nicht.

Jetzt sieht der EA ein SELL-Signal, und da er noch keine SELL-Order eröffnet hat, eröffnet er eine SELL-Position.

Die Position erreicht den TakeProfit oder den StopLoss, also wird sie geschlossen.

Jetzt kann der EA ein weiteres Verkaufssignal sehen, aber da er bereits einen VERKAUFSAUFTRAG in der vorherigen Zeit geöffnet hat, öffnet er diesen Auftrag nicht.

Das ist es, wonach ich suche....

 

In diesem Fall benötigen Sie diese 2 Threads:

https://www.mql5.com/en/forum/176322

https://www.mql5.com/en/forum/173026

 

Ok, danke für deine Antwort NewDigital. Nun, ich denke, dass mein Code folgendermaßen aussieht:

if (TimeDayOfYear(TimeCurrent())!=DayOfLastTrade)

{

ticket=OrderSend(....

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());

}

[/CODE]

So, can you check if I have added this code in the right way on my code?Here it is

[CODE]if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if (TimeDayOfYear(TimeCurrent())!=DayOfLastTrade)

{

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Buy Order", MagicNumber, 0, DodgerBlue);

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());

}

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

Der obige Code ist nur für Kaufpositionen, also sollte er nur eine Kaufposition eröffnen. Wenn ich das Gleiche für den Code über SELL mache, sollte er nur eine Verkaufsposition eröffnen, richtig?

Vielen Dank für Ihre Hilfe.

Mauro

 

MMM...der Metaeditor sagt, dass ein Fehler vorliegt...

'\end_of_program' - unbalanced left parenthesis (259, 1)
 

Das bedeutet, dass dieser

{[/CODE]

and

[CODE]}

unausgewogen ist.

Überprüfen Sie den Code.

Sorry, ich bin kein Programmierer, so kann ich nicht viel helfen.

 

Hallo newdigital...ja, ich weiß für die pharentesis....aber ich habe den ganzen Code überprüft und die pharentesis sind ausgeglichen...

mmm....Ich verstehe nicht, wo das Problem liegt....Aber ich werde weiter prüfen...ich hoffe, eine Lösung zu finden!

Vielen Dank für alles...

Mauro

 

Zum Beispiel dieses hier:

DayOfLastTrade=(TimeDayOfYear(TimeCurrent());
 

Die Fehlersuche in MT4 ist eine nervige Angelegenheit, aber wenn Sie geduldig sind, können Sie das Problem herausfinden.

Das erste, was ich sagen würde, ist, wo immer MT4 Ihnen sagt, das Problem ist... es ist nicht! Als Nächstes würde ich anfangen, riesige Teile des Codes in der komplizierten IF-Anweisung, die höchstwahrscheinlich die Probleme verursacht, herauszuschneiden.

Wenn ich zum Beispiel...

if(){

//second if

if(){

//third if

if(){

}

}

}

Ich würde die if's 2 & 3 herausschneiden und nur if 1 übrig lassen. Versuchen Sie, es zu kompilieren. Wenn es kompiliert, haben Sie das Problem eingegrenzt. Fügen Sie dann 2 und 3 wieder ein und schneiden Sie 3 heraus. Testen Sie erneut. Machen Sie das ein paar Minuten lang und Sie werden das Problem schließlich finden.

Viel Glück!

LUx