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

 
MakarFX #:

Ja, du hast ein Chaos angerichtet)

Benennen Sie nun in jedem Ordner nacheinander den Ordner Experts in _Experts und den Ordner Indicators in _Indicators um.

Umbenannt in einem Ordner - starten Sie das Terminal, wenn es nicht geholfen hat - benennen Sie es zurück und gehen Sie zum nächsten Ordner.

P.S. Beim ersten Mal wird das Terminal etwas länger als üblich starten.

Makar!

Das Ereignis fand heute statt. Deshalb habe ich Ordner mit alten Daten nicht angefasst.

Und die Änderungen an den neuen Ordnern haben nichts geändert.

Also habe ich Profile, Indikatoren und Expert Advisors auf ein anderes Terminal gezogen. Endlich habe ich das Chaos beendet.

Jetzt funktioniert alles. Ich habe es allerdings auf einem anderen Terminal. Aber das Wichtigste ist das Ergebnis - Sie können arbeiten.

Ich werde dieses Terminal später löschen.

Ich denke, Ihr Vorschlag, die Indikatoren und Profile über den Editor zu finden, ist perfekt!

Vor allem für solche "Dummies" im Programmieren, wie mich.

Vielen Dank für Ihre Hilfe und Ihr Entgegenkommen!

Viel Glück!

Grüß Gott!

 

Hallo zusammen. Ich fange gerade an, alles zu verstehen, um sofort sagen zu können, dass ich grüner als grün bin. Ich weiß nicht, wie viel Zeit ich habe, aber ich werde einige Erfahrungen sammeln. Können Sie mir sagen, wer mit dieser Situation konfrontiert ist? Ich brauche ein Skript oder einen Code, der in den nächsten 10 Punkten nach oben und unten und keine offenen Buy und Sell hält.

1.....Zum Beispiel kam ein Tick - der Code schaut, ob in den nächsten 10 Punkten nach unten und (oder) nach oben die Order nicht ist, dann wird eine Verkaufsorder gesetzt. wenn ja, dann nichts. Auch bei einem Kaufauftrag

Hier ist einBeispielschema im Forex EA Generator



Dateien:
hktrabmcw4.jpg  222 kb
 
valentin104 ein Skript oder einen Code, der in den nächsten 10 Punkten nach oben und unten und keine offenen Buy und Sell hält.

1.....Zum Beispiel kam ein Tick - der Code schaut, ob in den nächsten 10 Punkten nach unten und (oder) nach oben die Order nicht ist, dann wird eine Verkaufsorder gesetzt. wenn ja, dann nichts. Auch bei einem Kaufauftrag

Hier ist einBeispielschema im Forex EA Generator



Diese Regelung ist idiotisch.

 
Artyom Trishkin #:

Das ist ein idiotischer Plan.

Nein, es sieht so aus, ohne if und else). Aber das ist nicht das, was ich meinte.

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

Das Skript ergibt tick_s =1.0 tick_vflue =80.32786885245902 und in der Eule tick_value =80.37529660186777 tick_size =1e-05

Der Spielstand setzt sich zusammen.




 
Artyom Trishkin #:

Das ist ein idiotischer Plan.

Sie haben das Thema verfehlt.

valentin104 #:

Hey, Leute. Ich bin gerade dabei, mich mit all dem vertraut zu machen, also sage ich nur Folgendes Ich bin grüner als grün.

 
Galim_V #:

Nein, es sieht so aus, ohne if und else). Aber das ist nicht das, was ich meinte.

Das Skript ergibt tick_s =1.0 tick_vflue =80.32786885245902 und in der Eule tick_value =80.37529660186777 tick_size =1e-05

Der tick_value ist defekt.




tick_size =1e-05

DoubleToString( tick_size , 2) normalisieren

 
MakarFX #:

tick_size =1e-05

DoubleToString( tick_size , 2) normalisieren

Nullen ganz allein. Nicht einmal ein Hundertstel.

//+------------------------------------------------------------------+
//|                                                     MAX+risk.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property script_show_inputs
enum Mani
  {
   free_margin,
   balans
  };
input Mani risk_mani;
input double Lot=0.0;
input int max_risk =0; //В% от свободных средсв или...
input int stoploss=300;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double Lots=0;
   int    Max_Risk=0;

   printf("ACCOUNT_MARGIN_FREE =  %G",AccountInfoDouble(ACCOUNT_MARGIN_FREE)); //Размер свободных средств на счете  в валюте
   printf("ACCOUNT_BALANCE =  %G",AccountInfoDouble(ACCOUNT_BALANCE)); //Баланс счета в валюте депозита
   printf("ACCOUNT_MARGIN_LEVEL =  %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));    // Уровень залоговых средств в %

   double freemani=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   double balance=AccountInfoDouble(ACCOUNT_BALANCE);
   double tick_s =  SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)/_Point;  //Минимальное изменение цены
   double tick_value= SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);//Размер минимального изменения цены инструмента в валюте депозита
   if(risk_mani==balans)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= balance*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_BALANCE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/balance*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   if(risk_mani==free_margin)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= freemani*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_MARGIN_FREE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/freemani*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   Print("Lots =",Lots," Max_Risk =",Max_Risk," tick_s =",tick_s," tick_vflue =",tick_value);
  }
//+------------------------------------------------------------------+

Das funktioniert hier. In der Tafel, Variablen anstelle von Funktionen. Aber schon von Anfang an erzeugt die Funktion in OnTick() Unsinn.

 
Galim_V #:

Alle Nullen. Ich konnte nicht einmal ein Hundertstel finden.

Das funktioniert hier. In owl: Variablen statt Funktionen. Aber die Funktion erzeugt bereits Unsinn in OnTick().

Ich habe es gefunden. Entschuldigung. Der Wert von tick_size =1e-05 beträgt 0,00001 und ist korrekt.

 
valentin104 #:

Ich kann Ihnen gleich sagen, dass ich grüner bin als grün. Ich weiß nicht, wie lange ich durchhalten werde.


Mit diesem Ansatz zum Erlernen des Programmierens sind Sie besser dran, wenn Sie einen Programmierer anstellen und sich nicht darum kümmern müssen.

 

Wir haben einen Standard-ZigZag-Indikator, aber sein Stil der Linienzeichnung ist DRAW_SECTION, d.h.der größte Teil der Werte im Indikatorpuffer ist gleich EMPTY_VALUE und nur manchmal erscheinen andere Werte (Haltepunkte), die als Grundlage für die Linienzeichnung dienen. Ich denke, dass jeder diesen Indikator und/oder seinen Code mindestens einmal in seinem Leben gesehen hat.

Die Aufgabe besteht darin, den Wert zu ermitteln, der dem letzten Haltepunkt entspricht, d.h. den letzten Wert des Indikatorpuffers, der nicht gleich EMPTY_VALUE ist.

Achtung: Ist es der richtige Ansatz, die Werte des Indikatorpuffers in einer Schleife zu durchlaufen, beginnend mit einer Nullverschiebung nach unten, wobei die iCustom-Funktion bei jeder Iteration aufgerufen wird, bis der erhaltene Wert von EMPTY_VALUE verschieden ist?

Oder gibt es einen einfacheren Weg, um diesen Wert zu erhalten?

Grund der Beschwerde: