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

 
danya-asg:

Ich habe meinen Fehler verstanden, aber ich habe nicht verstanden, wie ich ihn lösen kann. Die Aufgabe wird normalerweise jede Sekunde gestartet, aber die Zeit ab dem Beginn der aktuellen Kerze wird nicht korrekt gezählt.

Die Funktion Seconds() gibt die Sekunden aus den Daten des letzten bekannten Ticksaus, aber ich muss irgendwie die tatsächliche Anzahl der Sekunden seit der Eröffnung der Minutenkerze zum Zeitpunkt des Funktionsaufrufs zählen, selbst wenn es in den letzten paar Sekunden überhaupt keine Ticks gab.

ZeitSekunden (TimeLocal()) oder ( TimeLocal() - Time[0]) funktioniert ebenfalls nicht, da die lokale Zeit vom Server um mehrere Sekunden abweichen kann. Wie ist das Problem zu lösen?


Sie lassenOnTimer() jede Sekunde laufen,

void OnTimer()
{
OnTick(); //-- старт каждую секунду
}
 
Alekseu Fedotov:


Sie lassenOnTimer() jede Sekunde laufen,


Aber damit das Programm richtig funktioniert, muss es jede Sekunde die Zeit des Servers anzeigen, und hier hängt es davon ab, ob der nächste Tick gekommen ist oder nicht. Wenn das nicht der Fall ist, wird der Ontimer zwar gestartet, zeigt aber trotzdem eine Verzögerung an, und das ist das Problem.
 

Das ist das Einzige, was mir bis jetzt eingefallen ist, aber es ist ein bisschen schief:

int sek
void OnTick()
{
if(Seconds() > sek)
sek = Seconds ();
Clicker (); //-- старт каждый тик
}
void OnTimer()
{
sek = TimeSeconds(TimeLocal());
Clicker (); //-- старт каждую секунду
}

Und dazu musste ich den Computer so einstellen, dass er die Zeit alle 10 Minuten synchronisiert.

 
danya-asg:

Das ist das Einzige, was mir bis jetzt eingefallen ist, aber es ist ein bisschen schief:

Dazu musste ich den Computer so einstellen, dass er die Zeit alle 10 Minuten synchronisiert.


Sie müssen einen Millisekunden-Timer von 100-200 ms erstellen und innerhalb dieses Zeitfensters arbeiten.
Die Sekunden sind zu lang, und sie verrutschen häufig.

EventSetMillisecondTimer(200);
GetTickCount();
 

Ich habe keine Ahnung, was am Anfang, in der Mitte und am Ende zu tun. Das Problem ist, eine Eule auf einem Indikator zu machen, und der Anschlag zu ziehen 2 Kerzen nach der Einreise, wenn das Geschäft geht gegen den aktuellen Trend, dann schließen Sie das Geschäft und öffnen Sie eine Umkehrung, die Umkehrung der Anschlag in der gleichen Weise. Ich habe keine Ahnung, wie man eine Konstante von 20 und 80 als Ein- und Ausstiegspunkt festlegen kann.

Dateien:
f9h46khtl1.png  29 kb
 
novikov433:

Das Problem ist, eine Eule auf einem Indikator zu machen und den Stop 2 Kerzen nach dem Einstieg zu ziehen, wenn das Geschäft gegen den aktuellen Trend geht, dann das Geschäft zu schließen und eine Umkehrung zu eröffnen, wobei der Stop auf die gleiche Weise umgekehrt wird. Ich habe keine Ahnung, wie ich konstante 20 und 80 als Ein- und Ausstiegspunkte festlegen kann.

Verzeih mir, betrunkener Idiot... Aber ich sage Ihnen Folgendes: Wenn Sie sich so sicher sind, dass "dieser TS nicht scheitern wird", was hält Sie dann davon ab, $20 manuell zu verdienen und diesen EA bei Freiberuflern zu bestellen? Ich versichere Ihnen, die meisten der anständigen Menschen dort und wird nicht verbreiten diese TS, geschweige denn Berater überall...
 
Alexey Viktorov:
Verzeih mir, betrunkener Idiot ... Aber ich sage Ihnen eines: Wenn Sie sich so sicher sind, dass "dieser TS nicht scheitern wird", was hält Sie dann davon ab, manuell $20 zu verdienen und diesen EA bei Freelancer zu bestellen? Ich kann Ihnen versichern, die meisten der anständigen Menschen dort und wird nicht verbreiten diese TS, geschweige denn Berater überall ...

Ich möchte lernen, wie man einen EA erstellt. Vielleicht ändert sich der Markt und ich muss mehr bezahlen, um zum Beispiel den Algorithmus ein wenig zu ändern?

Ich weiß nicht, ob ich es wirklich mit einem Eulenkonstruktor schaffen kann, aber ich würde lieber die grundlegenden Funktionen verstehen, wie z. B. einen Stopp an einem bestimmten Ort zu setzen oder einen Auftrag zu erteilen, an bestimmten Tagen zu handeln.

Ich weiß nicht, warum ich 1,2,3 usw. auch im Konstruktor machen soll und warum ich alles durch Pfeile in einer solchen Reihenfolge verbinden soll. Wer im Allgemeinen mql 4 studiert und keine Kurse wie Internetkrieger macht, die nichts zu erklären haben, warum es so passiert, in Worten, du wirst nichts Neues selbst machen und ihren Code kopieren müssen .... Ich meine, sie wissen, welche Order wofür verantwortlich ist, und sie haben nicht einfach auf zufällige ..... gezeigt. Nun, lassen Sie die Profis Pyramiding, Dynamic Lot, Smart Stop machen; meine Aufgabe ist eine andere - die erforderlichen Filter herunterzuladen und das Wesen der Trendbildung zu verstehen. Vielen Dank für Ihre Hilfe!

 
novikov433:

Ich möchte lernen, wie man einen EA erstellt. Vielleicht ändert sich der Markt und ich muss mehr bezahlen, um zum Beispiel den Algorithmus ein wenig zu ändern?

Was die Möglichkeit anbelangt, einen TS mit einem Eulen-Konstruktor zu erstellen, so sollte es realistisch sein, die grundlegenden Funktionen zu verstehen, wie z. B. die Festlegung eines Stopps an einem bestimmten Ort oder die Anordnung des Handels an bestimmten Tagen.

Es ist realistisch, TOR für ATC zu schreiben, und in der TOR angeben, dass alle Zeilen kommentiert werden würde - Sie werden ein wenig mehr bezahlen, aber sehen, wie und was funktioniert, und dann, allmählich werden Sie Änderungen in den Arbeitscode zu machen und beobachten Sie die Änderungen - und so wird Selbst-Training beginnen.
 
novikov433: ... wollen ... verstehen, wie man einen EA macht ... Ich möchte verstehen, wie man einen EA zu machen ... Ich möchte verstehen, wie man einen EA zu machen ... aber dieser EA sollte nicht wirklich zu verlieren, weil verlustbringende Aufträge auf Breakeven verschoben werden und ich brauche nur zu warten, für den Trend zu bewegen ... so bin ich bereits auf sie arbeiten ...
Lieber novikov433! Da Sie die symbolischen Merkmale des Handelsroboters kennen, müssen Sie beim Schreiben Ihres Handelsroboters vorsichtig sein, und Sie müssen beim Schreiben Ihres Handelsroboters vorsichtig sein! Sie können ein einfaches Beispiel verwenden. Ich gebe meiner Frau einen Auftrag (Auftrag): Kaufe einen Eimer Kartoffeln früh morgens auf dem Markt, und um 10 Uhr (Fundamentalanalyse) steigt der Preis - verkaufe. Aber manchmal kommt eine LKW-Ladung Kartoffeln um 10:30 Uhr an (Nachrichten). Und der Preis (in den Nachrichten) fällt sofort und hält bis zum Ende des Tages oder sogar die ganze Woche über an. Ich setze einen Stop-Loss - wenn der Preis um 10 Rubel sinkt, verkaufe ich so schnell wie möglich (zum Marktpreis). Wie man die Reihenfolge ändert, um Verluste zu vermeiden. Wenn diese Variante interessant ist - schreiben Sie Ihre E-Mail in eine Nachricht.
 
Hallo. Bitte helfen Sie mir bei der Behebung eines Fehlers beim Testen auf dem Testgerät. Während des Tests öffnet mein Expert Advisor bei allen Ticks den 1. Sellstop-Trade, die Bedingung wurde nicht erfüllt und er löscht ihn. Der 2. Verkaufsstopp wird geöffnet und geschlossen, obwohl die Bedingung nicht eingetreten ist. Dann erscheint im Protokoll ein Versuch, buy2 zu schließen, unbekanntes Ticket für orderclose-Funktion. Ich füge den Code ein, da ich bei der Arbeit bin und einige Ungenauigkeiten auftreten können. Die Auftragssperre ist üblich
Symb=Symbol();                               
   Total=0;                                     
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if (OrderSymbol()!=Symb)continue;      
         if (OrderType()>1) continue;
         if (OrderType<=1)                     
            {
             Total++;                               
             if (Total>1)                           
               {
                Alert("Несколько рыночных ордеров. Эксперт не работает.");
                return;                             
               }
             Ticket=OrderTicket();                  
             Tip   =OrderType();                    
             Price =OrderOpenPrice();               
             SL    =OrderStopLoss();                
             TP    =OrderTakeProfit();              
             Lot   =OrderLots();                    
            }
        }

Auch der abschließende Block scheint keine großen Fragen aufzuwerfen, da die Bedingungen nachweislich vereinfacht wurden:

while(true)                                  
     {
      if (Tip==0 && Cls_B==true)                
        {                                       
         Alert("Попытка закрыть Buy ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Bid,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              
           }
         return;                                
        }
 
      if (Tip==1 && Cls_S==true)                
        {                                       
         Alert("Попытка закрыть Sell ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Ask,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
     }

würde sehr geschätzt werden.