Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 463

 
HUNTERGOOD:

Der Antrag, richtig erstellt ich zurück auf Seite 457 , in paost #4567 , und alle notwendigen: "Indikator, was benötigt wird, und wie genau" - es ist nicht schwer, alles zu beschreiben, setzen Sie alle kurz und auf den Punkt, klar und deutlich, und was war falsch in meinem ersten Beitrag, dass meine so eine kleine Anfrage, für einen Mann, der in den Code versteht, ignoriert sechs Seiten, und als Ergebnis "Geplänkel" mich auf die "Lichter" - ich schreibe hier stubby.DUPLIZIERTER ANTRAG:

(((^^^^ Guten Tag zusammen. Liebe Programmierer, bitte helfen Sie mir, eine Zeichenkette mit der Möglichkeit, die Sound-Datei für jeden Alert3.Lv1;2;3, um einen anderen Sound, den Sie angeben, auslösen einzufügen. Ich bin selbst nicht gut im Programmieren ^^))

Haben Sie es auf der Karte ausprobiert, funktioniert es?

 

Können Sie mir sagen, was ich tun soll: Ich möchte einen Stop und einen Take unmittelbar nach der Erteilung eines Auftrags setzen. Wenn ein EA eine Order eröffnet, möchte ich einen Stop und einen Take setzen. Wennein Marktteilnehmer einen Auftrag eröffnet, möchte ich einenStop und eine Take setzen.Wie soll ich es genauer beschreiben? Der Expert Advisor und der Operator wissen also, wo sich diese Aufträge befinden!

Dieser Code scheint zu funktionieren, aber ist er auch korrekt?

Oder ist es notwendig, für jeden Auftragstyp (Expert Advisor oder Operator) eine Aktion mit FOR zu vereinbaren?

Dateien:
STOP_TAKE.txt  4 kb
 

Wie man es richtig macht:1

2

 
Rewerpool:

Wie man es richtig macht:

Normalerweise werden hier Codes eingefügt. Die meisten Leute hier sind zu faul, Bilder zu analysieren.

 
Konstantin Nikitin:

Es ist in Ordnung , die Codes hier einzufügen. Die meisten Leute hier sind zu faul, um Bilder auseinander zu nehmen.

Ich dachte, ich hätte den gesamten Code zuerst beigefügt! Nur die Datei! Nachricht. Dann kurz die Situation in Bildern beschrieben!

 

Ordertyp(Expert Advisor oder Operator) mit FOR zu gestalten?



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

//| FUNKTION des Setzens von offenen Aufträgen von Stops und Übernahmen
//+------------------------------------------------------------------+
void STOP_TAKE()
{
int tip,Ticket;
doppelt OOP,OSL,OTP;
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD);
if (stoploss<STOPLEVEL) stoploss=0;
wenn (takeprofit<STOPLEVEL) takeprofit=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
tip=OrderType();
//----------IfOrderTotal()
if(tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = OrderStopLoss();
OTP = OrderTakeProfit();
if ((OSL==0&stoploss!=0)||(OTP==0&&takeprofit!=0))
{
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); sonst TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); sonst SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Fehler STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); sonst TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); sonst SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Fehler STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
}
}
//----------If(tip<2 &&Order)
else if(tip<2 && OrderSymbol()==Symbol()&& OrderMagicNumber()!=Magic)
{
OSL = OrderStopLoss();
OTP = OrderTakeProfit();
if ((OSL==0&stoploss!=0)||(OTP==0&&takeprofit!=0))
{
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); sonst TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); sonst SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Fehler STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); sonst TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); sonst SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Fehler STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
}
}
}
}
}
 
Rewerpool:

Ich dachte, ich hätte den gesamten Code zuerst beigefügt! Nur die Datei! Nachricht. Dann kurz die Situation in Bildern beschrieben!

Nun, warum ein Bild hier einstellen. Ich erzähle Ihnen davon.

 
Rewerpool: Manuell platzierte Aufträge haben eine magische Zahl von 0, der EA platziert mit seiner eigenen magischen Zahl. Daran sollten Sie sich orientieren.
 

@Konstantin Nikitin OK! Ist die Code-Konstruktion für die Eröffnung einer Take-Profit-Order durch einen Expert Advisor oder durch einen Operator korrekt? Deshalb habe ich ein Bild beigefügt, um die Frage zu verdeutlichen!

 
Rewerpool:

@Konstantin Nikitin OK! Ist die Code-Konstruktion für die Eröffnung einer Take-Profit-Order durch einen Expert Advisor oder durch einen Operator korrekt? Deshalb habe ich ein Bild beigefügt, um die Frage zu verdeutlichen!

Ich hätte es folgendermaßen gemacht

for(int i=0; i<OrdersTotal(); i++)
{
     if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
     if(OrderSymbol()!=Symbol()) continue;
     
     int tip = OrderType();
     if(tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT) continue;
     
     // переменные которые будут использоваться в любых ордерах
     int Ticket = OrderTicket();
     double OOP = OrderOpenPrice();
     
     //---
     switch( OrderMagicNumber() )
     {
          case Magic:    // Ордера советника
               {
                    // что-то делаем
               }
               break;

          default:       // Все остальные
               {
                    // что-то делаем
               }
     }
}
Grund der Beschwerde: