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

 
dixi:

MetaEditor funktioniert nach der Neuinstallation des Terminals nicht mehr. Es funktioniert nur, wenn Sie nichts am Code des Indikators ändern. Wenn Sie etwas ändern, sogar die Farbe der Linie, wird ein Fehler erzeugt:

Das Betriebssystem ist Windows 7. Vielleicht hat jemand mit einem ähnlichen Problem zu kämpfen. Können Sie mir sagen, was ich tun soll?


Gehen Sie zunächst zu den Terminaleigenschaften und aktivieren Sie auf der Registerkarte "Kompatibilität" die Option "Als Administrator ausführen". Zweitens, machen Sie dasselbe mit der Datei, die den Code-Editor startet. Die Datei ist MetaEditor.exe. Drittens: Passen Sie Ihr Betriebssystem an. Der letzte Punkt ist recht schnell erledigt, wenn Sie genau wissen, was Sie brauchen.
 
demlin:

Grüße an alle!

Bitte helfen Sie mir bei diesem Problem: Ich kann den Indikator nicht dazu bringen, sich beim Erscheinen eines neuen Balkens (D-Intervall) neu zu zeichnen. П

Ich muss ihn manuell neu starten.


Die Zeile 44 ist absolut unnötig. Der Funktionsaufruf zur Neuberechnung der nicht berechneten Candlesticks gibt alle zurück. Außerdem sollte der Aufruf der gleichen Funktion (Zeile 64) im Code der Startfunktion theoretisch Null zurückgeben. Achten Sie auf Folgendes. Ein neuer Tag ist gekommen (eine neue Kerze). Es ist nicht klar, was los ist - der Indikator wurde gestern abgeschnitten und heute neu gestartet, oder er testet im Tester? Durch den Neustart wird die Initialisierungsfunktion ausgelöst, danach erfolgt der Start. Beim Start wird nichts neu gezeichnet, da wir die nicht berechneten Balken bereits beim Start aufgerufen haben. Wenn im Prüfgerät, kann es neu gezeichnet werden.

 
FxPro2:
Hallo zusammen! Ich bin auf einen alten Experten gestoßen, der mit dem asctrend-Indikator arbeitet. Ich würde gerne überprüfen, wie sich dieser Indikator in Echtzeit verhält, aber ich kann den Punkten nicht immer folgen und mein Handel ist nicht voll. Ich überprüfte den Tester, gibt es ein Signal an jedem Punkt, aber setzen Sie es auf eine Demo und bemerkte, dass die Demo Signale überspringt, während das Protokoll nichts an den Experten zu schreiben, Graben in den Code und nicht verstehen, was das Problem :( vielleicht jemand stoßen eine Nase in was kann das Problem sein?

Das Problem ist, dass Sie den Code, den Sie verwenden, nicht verstehen. Das Problem ist, dass du ein Maschinengewehr in der Hand hältst und es aus irgendeinem Grund nicht immer feuert. Wäre es nicht besser, ein Gerät in die Hände zu bekommen, von dem Sie alles verstehen? А?
 
drknn:

Rufen Sie zunächst die Eigenschaften des Terminals auf und aktivieren Sie auf der Registerkarte Kompatibilität das Kontrollkästchen "Als Administrator ausführen". Zweitens, machen Sie dasselbe mit der Datei, die den Code-Editor startet. Die Datei ist MetaEditor.exe. Drittens: Passen Sie Ihr Betriebssystem an. Der letzte Punkt ist recht einfach zu lösen, wenn man weiß, was man will.
Ich danke Ihnen! Ich hab's!!! :)))
 
Dimka-novitsek:

if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point)

Es ist nur so, dass die Variante ohne NormalizeDouble im Vergleich zu Null nicht so zuverlässig ist. Das funktioniert hier.


Es geht nicht um ND. Point ist die Größe eines Punktes; multiplizieren wir ihn mit Null fünf, so ergibt sich zum Beispiel 0,00005; ich sehe keinen Grund, diese Zahl mit OrderClosePrice()-OrderTakeProfit() zu vergleichen. TP garantiert nicht genau den gleichen Schlusskurs. Außerdem sind die Kontrollbedingungen für Bais und Selves unterschiedlich.

if(OrderType() == OP_SELL)
       {
        if( NormalizeDouble(OrderTakeProfit()-OrderClosePrice(),Digits) >= 0
          && OrderTakeProfit() != 0)    

Diese Konstruktion ist zuverlässiger.

 
drknn:

Das Problem ist, dass Sie den Code, den Sie verwenden, nicht verstehen. Das Problem ist, dass Sie ein Maschinengewehr in die Hand genommen haben und es aus irgendeinem Grund nicht immer feuert. Wäre es nicht besser, ein Gerät in die Hände zu bekommen, von dem Sie alles verstehen? А?
Vielleicht. Aber Ihre beiden letzten Beiträge sind nichts als Moralisieren, und Sie täten besser daran, sie auf die richtige Idee zu bringen. Wenn Sie keinen solchen Wunsch haben, warum schreiben Sie dann unnötige Dinge? Ich habe niemanden gezwungen, mir zu helfen, wenn es keinen Wunsch gibt, werde ich nicht beleidigt sein, die Arbeit ist schwierig, ich verstehe es perfekt.
 
drknn:
Ihr Jungs mit den langen Codes! Ich möchte noch einmal betonen, dass der Code eines anderen zunächst einmal ein Kryptogramm ist, das erst noch entschlüsselt werden muss! Und das ist eine Menge Arbeit! Glauben Sie, ein Programmierer möchte sich durch kilometerlange Listen wühlen? Lassen Sie mich einem von Ihnen meinen Code für nur dreitausend Zeilen geben und darum bitten, ein kleines Missverständnis dieses Codes zu beseitigen. Glaubst du, du willst einfach nur in meine Gedankenwelt eindringen? Ich bezweifle es wieder. Deshalb habe ich eine Bitte an Sie: Wenn Sie eine Schlüsselfrage stellen, beschreiben Sie das Problem so kurz wie möglich und machen Sie gleichzeitig eine ausreichende Beschreibung, um das Wesentliche zu verstehen. Sonst ist dein Schrei ein Schrei ins Leere. Der Code kann an den Beitrag angehängt werden. Das alles ist notwendig und ausreichend.

Ich stimme mit Ihnen völlig überein.


FxPro2:

drknn:

Der Haken an der Sache ist, dass du den Code, den du verwendest, nicht verstehst. Der Haken ist, dass du ein Maschinengewehr in die Hand genommen hast und es aus irgendeinem Grund nicht immer feuert. Wäre es nicht besser, ein Gerät in die Hände zu bekommen, von dem Sie alles verstehen? А?
Vielleicht. Nur Ihre letzten beiden Beiträge haben nichts gebracht, sie sind nur moralisierend, oder besser gesagt, sie weisen auf die richtige Idee hin. Wenn Sie keinen solchen Wunsch haben, warum schreiben Sie dann unnötige Dinge? Ich habe niemanden gezwungen, mir zu helfen, wenn es keinen Wunsch gibt, werde ich nicht beleidigt sein, die Arbeit ist schwierig, ich verstehe es perfekt.

Aber du verstehst den Code, den du vorhin genannt hast, wirklich nicht, oder?

 

Hallo zusammen!!! Hilfe plz, gerade lernen zu schreiben, peredomnoy dieses Problem bekam, kann ich nicht schreiben, Code, um die Losgröße um einen bestimmten Schritt in der prametrov gegeben zu erhöhen, überprüft ein Bündel von Beratern und war in der Lage zu sortieren, habe ich das Los zu erhöhen, nur abhängig von der Marge. Bitte raten Sie mir, wo ich suchen soll, denn mein Kopf ist bereits kaputt. Ich habe mir schon den Kopf zerbrochen. Danke!

 
SeALALex:

Hallo zusammen!!! Hilfe plz, gerade lernen zu schreiben, peredomnoy dieses Problem bekam, kann ich nicht schreiben, Code, um die Losgröße um einen bestimmten Schritt in der prametrov gegeben zu erhöhen, überprüft ein Bündel von Beratern und war in der Lage zu sortieren, habe ich das Los zu erhöhen, nur abhängig von der Marge. Bitte raten Sie mir, wo ich suchen soll, denn mein Kopf ist bereits kaputt. Ich habe mir schon den Kopf zerbrochen. Danke!

Zeigen Sie Ihren Code mit der Bedingung, nach der Sie die Menge um einen bestimmten, in Parametern festgelegten Schritt erhöhen müssen, und wie Sie versucht haben, dies umzusetzen.
 
Болк открытия на бай
if(Buy==true) 
  {Buy=false;

   ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask, Digits),5,SL,TP,Order,070177,0,Orange);
   if(ticket>0)
    { 
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      {Print("BUY order opened : ",OrderOpenPrice());
       Alert("Buy Order for ",Symbol());
       SendMail("Buy Order "+Symbol()+" "+Ask,SL);     
       }
     }
     else Print("Error opening BUY order : ",GetLastError()); 
     return(0); 
   }

Умножение лота в зависимости от маржи нашел в советнике, 
код вставил работает вот только в советнике он увеличивает на определенный шаг, у меня просто в %-ом соотношении

double LotSize() 
  
   {
   double lots_0;
   if (MicroLots == FALSE) {
      lots_0 = NormalizeDouble(AccountFreeMargin() * RiskPercent / 1000.0, 1);
      if (lots_0 < 0.1) lots_0 = Lots;
      if (lots_0 >= 1.0) lots_0 = NormalizeDouble(lots_0, 1);
      if (lots_0 >= 100.0) lots_0 = 100;
   } else {
      lots_0 = NormalizeDouble(AccountFreeMargin() * RiskPercent / 1000.0, 2);
      if (lots_0 < 0.01) lots_0 = Lots;
      if (lots_0 >= 1.0) lots_0 = NormalizeDouble(lots_0, 2);
      if (lots_0 >= 100.0) lots_0 = 100;
   }
   return (lots_0);
}
Es ist wie folgt