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

 
#property indicator_separate_window
#Eigenschaft indicator_buffers 1
#Eigenschaft indicator_color1 blau
//--------------------------------------------------------------------
double Puffer[];
//--------------------------------------------------------------------
int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY,2);
SetIndexPuffer(0,Puffer;)
zurück(0);
}
// -------------------------------------------------------------------
int deinit()
{
zurück(0);
}
//--------------------------------------------------------------------
int start()
{
int StartBar = Bars - IndicatorCounted() - 1;
for(int i = StartBar; i >= 0; i--)
Puffer[i] =(iClose("EURGBP",0,i)-iOpen("EURGBP",0,i))/MarketInfo("EURGBP",MODE_POINT)+
(iClose("EURAUD",0,i)-iOpen("EURAUD",0,i))/MarketInfo("EURAUD",MODE_POINT);
zurück(0);
}

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

Ich weiß leider nicht, wie man den Text mit Code formatiert.

Dies ist ein einfacher Zähler-Indikator ( Summe der Instrumentenkörper in Pips auf dem aktuellen Zeitrahmen ) Instrumente beliebig. Jeder Balken des Histogramms beginnt mit "O" und endet am Ende des Zeitrahmens. Zum Beispiel ist der aktuelle Zeitrahmen H1, um 12.00 Uhr zeigt er "0" und um 13.00 Uhr "+20" und der Bargraph zeigt deutlich = +20. Aber während dieser Stunde waren die Werte -50 und +60, aber der Indikator zeigt sie nicht an, es ist notwendig, einen Puffer für Minimum Buffer[i] und einen für Maximum Buffer[i] hinzuzufügen. Wir können High und Low nicht verwenden, da diese Werte für jedes im Indikator enthaltene Symbol zu unterschiedlichen Zeiten auftreten. Ich möchte, dass der zweite Puffer den Maximalwert von Buffer[i] des kleineren Diagramms (M5) auf dem aktuellen Diagramm (H1) fixiert, und der dritte Puffer fixiert den Minimalwert von Buffer[i] des kleineren Diagramms (M5) auf dem aktuellen Diagramm (H1). Lieber, wer kann was beraten?

 
vitek2010:

Es tut mirleid, ich weiß nicht, wie man den Text kodiert.

Wir können Hoch und Tief nicht verwenden, da diese Werte für jedes im Indikator angegebene Instrument zu unterschiedlichen Zeiten auftreten.

Und die Schließung erfolgt für jedes Instrument zur gleichen Zeit, während der Lebensdauer der Kerze? Es ist also eine falsche Meinung, die Zecken kommen alle zu unterschiedlichen Zeiten)))

 
trader781:
Der Punkt ist, dass es IMMER Verlustaufträge mit einer gewissen Menge geben wird, die auch durch den Rest der Aufträge gedeckt werden müssen. Der Auslöser ist die Schließzeit. Wenn wir auch nur eine schließen, ist die ganze Kette verloren. Es stellt sich also die Frage, wie man den Durchschnittspreis aller ausgewählten Angebote ermitteln kann.

Wir müssen also alle "notwendigen" Aufträge in der Schleife durchgehen und diesen Durchschnittspreis berechnen. Wenn dann der aktuelle Preis vom berechneten Durchschnittspreis in der gewünschten Richtung abweicht, sollten wir die Schleife erneut mit der Änderung aller Aufträge laden.

Wenn wir den Durchschnittspreis nicht bei jedem Tick lesen wollen, können wir ihn nur lesen, wenn wir einen weiteren Auftrag hinzufügen.

 
Alexey Viktorov:

Wir müssen also alle "notwendigen" Aufträge in der Schleife durchgehen und diesen Durchschnittspreis berechnen. Wenn dann der aktuelle Preis vom berechneten Durchschnittspreis in der gewünschten Richtung abweicht, sollten wir die Schleife erneut mit der Änderung aller Aufträge laden.

Wenn wir den Durchschnittspreis nicht bei jedem Tick zählen wollen, können wir ihn nur beim Hinzufügen eines weiteren Auftrags zählen.

Wenn Sie nichts dagegen haben, erklären Sie mir bitte, wie ich den Durchschnittspreis berechnen kann, wenn das Auftragsgitter ungleichmäßig verteilt ist (mit OrderType()<2). Das ist alles.
 
Vitalie Postolache:

Und Close für jedes Instrument kommt zur gleichen Zeit, während der Lebensdauer der Kerze? Ich spreche nicht von Ticks, sondern von der Festlegung der Mindest- und Höchstwerte des Indikatorpuffers).

Ich spreche nicht über Ticks Ich war sagen, dass wir die minimalen und maximalen Werte des Indikators Puffer auf einem kleineren Zeitrahmen berechnet zu beheben, in der Lücke von einem größeren Zeitrahmen werde ich versuchen, es auf dem Screenshot zu zeigen In diesem Fall ist der kleinste Zeitrahmen H1 (aber das ist das Fenster der verschiedenen Zeitrahmen):

[img]https://charts.mql5.com/13/642/eurgbp-w1-instaforex-group.png[/img]

Ich werde die Woche 05.12 (rotes Fadenkreuz) betrachten. Dieses Balkendiagramm des oben gezeigten Indikators zeigt deutlich, dass die Gesamtbewegung des Paares am Ende der Woche um 95 Punkte abwärts ging, aber es zeigt nicht, wie viele Punkte während der Woche abwärts oder aufwärts gingen.

Und hier auf diesem Bildschirm können Sie die Dynamik dieses Indikators auf dem H1-Chart während dieser Woche sehen:

[img]https://charts.mql5.com/13/642/eurgbp-h1-instaforex-group.png[/img]

Sie können sehen, dass der Indikator einen Minimalwert von 400 hatte, dann auf 700 stieg und bei 160 schloss (der Unterschied der Zahlen auf den beiden Bildschirmen ist nicht wichtig).

Ich brauche alle diese Werte in einem Indikator in einer Bar des Histogramms und das Minimum, Maximum und schließen (in diesem Fall auf der Docht). idealerweise auf dem aktuellen Zeitrahmen von dem, den Sie in den Einstellungen des Zeitrahmens angeben

Ich habe es mit mt4 insta über das Kopieren von mcl5 Website

 
trader781:
Wenn es nicht schwierig ist, erklären Sie bitte, wie ich den Durchschnittspreis berechnen kann, wenn das Auftragsgitter ungleichmäßig verteilt ist (mit OrderType()<2). Das ist alles.

Ich hoffe, dass Sie es herausfinden können.

for(int i=0; i<OrdersTotal(); i++) {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) {
    if(OrderType()==OP_BUY) {
      _BuyProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _BuyLot+=OrderLots(); //совокупный лот по всем Sell
    }
    if(OrderType()==OP_SELL) {
      _SellProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _SellLot+=OrderLots(); //совокупный лот по всем Sell
    }
}}}

double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);

if(_BuyLot  > 0) { BuyAwerage = NormalizeDouble(Bid-(_BuyProfit/(TickValue*_BuyLot))*_Point,_Digits); } else { BuyAwerage=0; }// безубыток buy
if(_SellLot > 0) { SellAwerage= NormalizeDouble(Ask+(_SellProfit/(TickValue*_SellLot))*_Point,_Digits); } else { SellAwerage=0; } // безубыток sell
if(_BuyLot-_SellLot! = 0) { AllAwerage= NormalizeDouble(((_BuyLot>_SellLot)?Bid:Ask)-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))*_Point),_Digits); } else { AllAwerage=0; } // общий безубыток
 
Vitaly Muzichenko:

Ich hoffe, Sie haben den Dreh raus.



double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);


Können wir ein wenig darüber sprechen? Ich verstehe den Sinn dieses Codes nicht.
 
trader781:
Können wir ein wenig darüber sprechen?

Der Betrag der Mindestpreisänderung eines Instruments in der Währung der Einlage

Der Pip-Wert ist für jedes Instrument unterschiedlich und ist nicht gleich "1" wie z.B. bei EUR/USD.

 
Vitaly Muzichenko:

Der Betrag der Mindestpreisänderung eines Instruments in der Währung der Einlage

Der Pip-Wert ist für jedes Instrument unterschiedlich und ist nicht gleich "1" wie z.B. bei EUR/USD.

Ja, jetzt verstehe ich

es stellt sich heraus, dass man auch einen gleitenden Anschlag setzen kann, z.B. (eqi=balance*1.1) oder (eqi=balance*0.9)

Gibt es solche Instrumente?

 
trader781:

Ja, jetzt habe ich es verstanden.

aber es stellt sich heraus, dass man auch einen gleitenden Anschlag setzen kann, zum Beispiel (eqi=balance*1.1) oder (eqi=balance*0.9)

Gibt es solche Instrumente?

Sie haben bereits einen bestimmten Preis, von dem aus Sie nur noch ein Trawl analog zu einem einfachen Trawl durchführen müssen, aber ein einfaches Trawl basiert auf dem Eröffnungskurs der Position = OrderOpenPrice() , während es hier auf dem berechneten Durchschnittspreis basiert und alle Positionen um eine Stufe verändert
Grund der Beschwerde: