[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 130

 

Hallo. Könnten Sie mir bitte helfen? Der Code sollte eine Zeile auf der globalen TakeProfit-Ebene anzeigen. Ich kann den Fehler nicht finden.

Ich danke Ihnen im Voraus.

void Drawline_Per_B (int Drawline_Per, double Balans, double Free, double Global_TakeProfit)  {
    Balans=AccountBalance();//Баланс счёта
    Free=AccountEquity();//Текущее количество денег в статье "Средства"
    double q;
    double SchBuyLs=SchBuyLs_b(); сумма лот для баев
    double SchSellLs=SchSellLs_b(); сумма лот для сейлов  
    double ad.QuotePoint   = MarketInfo ( Symbol () , MODE_POINT     );
    double ad.QuoteTick    = MarketInfo ( Symbol () , MODE_TICKSIZE  );
    double ad.NominalTick  = MarketInfo ( Symbol () , MODE_TICKVALUE );
    double ad.NominalPoint = ad.NominalTick  * ad.QuotePoint / ad.QuoteTick ; // Цена 1 пункта для стандартного лота в валюте депозита
    q =  NormalizeDouble(Bid + (Balans-Free+Balans/100*Global_TakeProfit)/ad.NominalPoint*(SchBuyLs-SchSellLs)*Point,Digits);
    Drawline_Per("%_LINE");
    ObjectSet( "%_LINE", OBJPROP_PRICE1, q);
  }
 
Ich weiß nicht, was du da zählst, aber die Anzahl der Punkte ist eine ganze Zahl. Machen Sie einen int-Typ daraus und Sie brauchen keine Normalisierung.
q =  (Balans-Free+Balans/100*Global_TakeProfit)/PP*(SchBuyLs-SchSellLs);  //число пунктов до наступления условия  Global_TakeProfit
 

Danke für den Rat.

Ich habe die Fehler gefunden, alles funktioniert.

 

Bitte um Hilfe bei Fraktalen

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

Warum wird
maxF > Bid oder minF > Bid nicht ausgeführt?

Wenn <, wird sie ausgeführt.

Ohne NormalizeDouble ist es dasselbe. Gibt es etwas, das ich an Fraktalen nicht verstehe?

 
lia:

Bitte helfen Sie mit Fraktalen.

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

Warum kann ich nicht sehen, wie die Ausführung von
maxF > Gebot oder minF > Gebot?

Wenn <, wird sie ausgeführt.

Ohne NormalizeDouble ist es dasselbe. Ich verstehe etwas mit Fraktalen nicht?


Siehe diese und die nächste Seite - zeigen Sie Ihre Bedingungen in ähnlicher Weise an.
 

Könnten Sie eine Funktion für einen EA in MT4 vorschlagen, die den Gewinn der letzten geschlossenen Order zurückgibt, oder ob die letzte Order mit einem Gewinn oder einem Verlust geschlossen wurde?

PS: Ich habe eine solche Funktion bei Kim nicht gefunden.

 
Sancho77:

Können Sie eine Funktion vorschlagen, die den Gewinn des letzten geschlossenen Auftrags zurückgibt, oder ob der letzte Auftrag mit Gewinn oder Verlust geschlossen wurde?

PS Kim hat eine solche Funktion nicht gefunden.

Igor Kim hat solche Funktionen. Aber seine Funktionen sind für die Vielseitigkeit ein wenig übertrieben. Ich kann Ihnen hier schnell eine solche Funktion zusammenstellen.
Frage: Worin besteht der Gewinn? In Punkten oder in der Einzahlungswährung?
 
artmedia70:
Igor Kim hat solche Eigenschaften. Allerdings sind seine Funktionen für die Vielseitigkeit ein wenig übertrieben. Ich kann Ihnen hier schnell eine solche Funktion zusammenstellen.
Frage: Worin besteht der Gewinn? In Punkten oder in der Einzahlungswährung?
Ich wäre Ihnen dankbar, wenn Sie mir das mitteilen würden! Dabei spielt es keine Rolle, ob der Gewinn in Punkten oder in Währung angegeben ist, wichtig ist, dass ein Geschäft mit Gewinn oder Verlust abgeschlossen wurde. Für mich macht es keinen Unterschied, ob es sich um eine Währung oder um Pips handelt.
 
Sancho77:
Ich würde es begrüßen, wenn Sie es schreiben könnten! Es spielt keine Rolle, ob der Gewinn in Pips oder in Währung angegeben wird, wichtig ist, dass das Geschäft mit Gewinn oder Verlust abgeschlossen wurde. Meiner Meinung nach macht es keinen Unterschied bei der Währung oder den Pips.
//+----------------------------------------------------------------------------+
bool LossLastPose(string sy, int op, int mn) {
   datetime t;
   int      i, j;
   for (i=0; i<OrdersHistoryTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
         if (OrderType()!=op)          continue;
         if (OrderSymbol()!=sy)        continue;
         if (OrderMagicNumber()!=mn)   continue;
         if (OrderCloseTime()>t) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) 
      if (OrderProfit()<0) return(true);
   return(false);
}
//+----------------------------------------------------------------------------+

Wir nennen es so:

Zur Überprüfung der letzten geschlossenen Kaufposition für das aktuelle Symbol. Die Funktion gibt true zurück, wenn ein Verlust vorliegt, und false, wenn ein Gewinn vorliegt...

if (LossLastPose(Symbol(), OP_BUY, Magic)) {код, если последняя позиция закрылась с убытком}
else {Код, если последняя позиция закрылась с прибылью}

Die Magic-Variable ist eine EA-Magic, sie wird in globale Variablen des EA geschrieben.

 
artmedia70:

Wir nennen es so:

Zur Überprüfung der letzten geschlossenen Kaufposition für das aktuelle Symbol. Die Funktion gibt true zurück, wenn ein Verlust vorliegt, und false, wenn ein Gewinn vorliegt...

Die Magic-Variable ist die Magie des EA, die in die globalen Variablen des EA geschrieben wird.



Herzlichen Dank!
Grund der Beschwerde: