Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 97
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Guten Tag, meine Herren!)
Versuch, Daten für das Training eines neuronalen Netzes vorzubereiten. Die Aufgabe lautet.
Sie haben eine Matrix, in der zum Beispiel jede Zeile (Zeitmoment - Balken) ein Eingangsvektor ist, und Spalten zum Beispiel 10000. Was ist zu tun, wenn es dynamische Daten gibt (Anzahl der Zeilen1, Zeilen2) und sich die Anzahl zu verschiedenen Zeitpunkten ändert?
Zum Beispiel wird eine Matrix in ein Netz geladen, jede Zeile ist ein Lernvektor, aber für jede Zeile gibt es n Zeilen, die sich dynamisch mit der Zeit verändern.
Ein möglicher Lösungsansatz besteht darin, der Matrix zusätzliche Spalten hinzuzufügen, die der Anzahl der Spalten in der dynamischen Zeile entsprechen; es stellt sich heraus, dass jeder Vektor Spalten aus der denamischen Matrix hat, aber so, als ob er aus einer Zeile bestünde.
zum Beispiel
1. Vektor
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "Zeile1 dynamisch" 1 1 1 1 1
ssssssssssssssssssssssssssssssss "Linie2 dynamisch" 1 1 1 1 1
Lösung
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "Linie1 dynamisch" 2 2 2 2 2
Guten Tag, meine Herren!)
Versuch, Daten für das Training eines neuronalen Netzes vorzubereiten. Die Aufgabe lautet.
Sie haben eine Matrix, in der zum Beispiel jede Zeile (Zeitmoment - Balken) ein Eingangsvektor ist, und Spalten zum Beispiel 10000. Was ist zu tun, wenn es dynamische Daten gibt (Anzahl der Zeilen1, Zeilen2) und sich die Anzahl zu verschiedenen Zeitpunkten ändert?
Zum Beispiel wird eine Matrix in ein Netz geladen, jede Zeile ist ein Lernvektor, aber für jede Zeile gibt es n Zeilen, die sich dynamisch mit der Zeit verändern.
Ein möglicher Lösungsansatz besteht darin, der Matrix zusätzliche Spalten hinzuzufügen, die der Anzahl der Spalten in der dynamischen Zeile entsprechen; es stellt sich heraus, dass jeder Vektor Spalten aus der denamischen Matrix hat, aber so, als ob er aus einer Zeile bestünde.
zum Beispiel
1. Vektor
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "Zeile1 dynamisch" 1 1 1 1 1
ssssssssssssssssssssssssssssssss "Linie2 dynamisch" 1 1 1 1
Lösung
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "Linie1 dynamisch" 2 2 2 2 2
https://www.mql5.com/ru/articles/159
Das ist also MQL5, so wie ich es verstehe. Oder ist sie identisch?
Guten Tag. Ich habe einen EA erstellt, der gut funktioniert, aber wenn ich das Terminal ausschalte, während der EA läuft, und das Terminal wieder einschalte, beginnt der EA wieder von vorne zu zählen. Also, ich habe eine Frage. Was muss ich im EA vorschreiben, damit er die Input-Parameter zurücksetzt, wenn er startet?
Guten Tag. Ich habe einen EA erstellt, der gut funktioniert, aber wenn ich das Terminal ausschalte, während der EA läuft, und das Terminal wieder einschalte, beginnt der EA wieder von vorne zu zählen. Ich habe also eine Frage. Was muss ich in meinem EA schreiben, so dass es die Input-Parameter zurücksetzen würde, wenn ich es starte?
Grüße. Können Sie mir sagen, was los ist?
Der EA platziert Aufträge mit Stops über und unter dem Preis. Wenn einer der beiden auslöst, wird der Stopp angepasst, wenn sich der Kurs mehr als der eingestellte Wert vom Stopp entfernt, wenn sich der Kurs auf den Stopp zubewegt, erfolgt keine Änderung.
Zuerst habe ich nur Kaufauftrag geschrieben und es hat wie erwartet funktioniert. Wenn ich ein Spiegelbild für den Verkauf hinzufüge, werden die Stopps um den eingestellten Wert korrigiert, egal wie sich der Preis bewegt.
Im Allgemeinen, wenn separat, oder zu kaufen oder zu verkaufen - alles funktioniert, wie es sollte, aber beide Teile zusammen - es ist ein Fehler.
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double Lot = 0.01;
extern int StopLoss = 50;
extern int Slippage = 5;
extern int Delta = 60;
extern int Delta2 = 170;
extern int Magic = 321;
int ticket;
double price, sl, sl2;
datetime counted_bar = 0;
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
StopLoss *= 10;
Delta *= 10;
Delta2 *= 10;
}
return(INIT_SUCCEEDED);
}
void OnTick() {
////// ПРОДАЖА ///////////////////////////////////////////////////////
if (SellLimitCount()==0 && SellCount()==0)
{
price = NormalizeDouble(Bid - Delta*Point, Digits);
sl = NormalizeDouble(price + StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red);
}
if (SellCount()!=0)
{
if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Bid + StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok");
else Print ("ERROR_Sell_Order_Modify");
}
}
if (SellLimitCount()!=0)
{
if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Odrer_Delete");
}
}
/////////////////////////////////////////////////////////////////////////////////
/////// ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()==0 && BuyCount()==0)
{
price = NormalizeDouble(Ask + Delta*Point, Digits);
sl = NormalizeDouble(price - StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue);
}
if (BuyCount()!=0)
{
if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Ask - StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok");
else Print ("ERROR_Buy_Order_Modify");
}
}
if (BuyLimitCount()!=0)
{
if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Orde_Delete");
}
}
///////////////////////////////////////////////////////////////////////////////
}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUYSTOP)
count++;}}}return(count);}
int BuyCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUY)
count++;}}}return(count);}
int SellLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELLSTOP)
count++;}}}return(count);}
int SellCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELL)
count++;}}}return(count);}
Grüße. Können Sie mir sagen, was los ist?
Der EA platziert Aufträge mit Stopps über und unter dem Preis. Wenn einer der beiden auslöst, wird der Stopp angepasst, wenn sich der Kurs mehr als der eingestellte Wert vom Stopp entfernt, wenn sich der Kurs auf den Stopp zubewegt, erfolgt keine Änderung.
Zuerst habe ich nur Kaufauftrag geschrieben und es hat wie erwartet funktioniert. Wenn ich ein Spiegelbild für den Verkauf hinzufüge, werden die Stopps um den eingestellten Wert korrigiert, egal wie sich der Preis bewegt.
Im Allgemeinen, wenn separat, oder zu kaufen oder zu verkaufen, alles funktioniert, wie es sein sollte, aber beide Teile zusammen - es gibt einen Fehler.
Der gesamte Code, den Sie uns gezeigt haben, ist ein Fehler, nicht wahr? Zumindest ist die OnTick-Funktion fast ausschließlich ein Fehler...
Ein Fehler, meinen Sie den gesamten angezeigten Code?