Das heißt, meinem Verständnis nach, dass ich bei einem FreezeLevel von 0 immer was verändern kann, dass der Fehler also hier nicht liegt. Aber nach Carl ist das wohl falsch, ich weiß es nicht. Ich weiß nur, dass der TrailingStop-EA auf das NettingKonto des gleichen Brokers funktioniert, auf dessen HedgingKonto es nicht geht; ich habe es umstellen lassen, weil ich gesehen habe, dass das von ActivTrades ein Netting ist, wo es funktionierte.
Das liegt an der programmierung, was für hedging geht geht auch für netting aber nicht umgekehrt.
der freezlevel liegt woanders, der hat damit nix zu tun.
such dir was mit einer ordentlichen programmierung
Nein, nicht verwirrt. SYMBOL_TRADE_STOPS_LEVEL ist der Mindestabstand von SL oder TP vom Marktpreis zum Zeitpunkt der Festlegung oder Änderung Und SYMBOL_TRADE_FREEZE_LEVEL verbietet die Änderung von SL- oder TP-Levels, wenn der Marktpreis zu diesem Zeitpunkt näher an ihnen liegt als SYMBOL_TRADE_FREEZE_LEVEL Es ist nur so, dass ich einen EA schreibe, dessen Strategie ursprünglich auf M1 empfohlen wurde und SYMBOL_TRADE_FREEZE_LEVEL kann verbieten, einen Teil einer Bestellung zu schließen
Alle Markets Produkte vor der Veröffentlichung bestehen eine obligatorische vorläufige Überprüfung, um eine Standarte Qualität zu haben. In diesem Artikel werden wir von den häufigsten Fehlern erzählen, die die Hersteller in den Handelsrobotern und den technischen Indikatoren machen. Auch werden wir zeigen, wie man sein Produkt vor der Sendung in Market selbständig überprüfen soll.
Um Möglichkeiten von Retail-Tradern zu erweitern, wurde das zweite System der Aufrechnung von Positionen — Hedging — auf der Plattform hinzugefügt. Nun kann man eine Vielzahl von Positionen pro Symbol haben, darunter auch gegenläufige. Dank Hedging kann man Handelstrategien mit dem sogenannten "Locking" umsetzen: wenn sich der Preis gegen den Trader entwickelt, kann der Trader eine Position in einer entgegengesetzten Richtung eröffnen.
Das liegt an der programmierung, was für hedging geht geht auch für netting aber nicht umgekehrt.
der freezlevel liegt woanders, der hat damit nix zu tun.
such dir was mit einer ordentlichen programmierung
Ich wage mich tatsächlich selbst an die Programmierung bzw. übernehme nur Code, den ich verstehe. Den Code für den TrailingStop fürs Hedging muss ich mich noch ansehen, ich werde leider nicht dafür bezahlt und geh' gerade in anderem Kram unter.
Ich bin mir sicher, dass man profitabel traden kann ohne perfekt im Coden zu sein bzw. ohne den perfekten Code, der macht es nicht aus.
Ich wage mich tatsächlich selbst an die Programmierung bzw. übernehme nur Code, den ich verstehe. Den Code für den TrailingStop fürs Hedging muss ich mich noch ansehen, ich werde leider nicht dafür bezahlt und geh' gerade in anderem Kram unter.
Ich bin mir sicher, dass man profitabel traden kann ohne perfekt im Coden zu sein bzw. ohne den perfekten Code, der macht es nicht aus.
//+------------------------------------------------------------------+//| ErrorDescription.mqh |//| Copyright 2010, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"2010, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| returns trade server return code description |//+------------------------------------------------------------------+string TradeServerReturnCodeDescription(int return_code)
{
//---switch(return_code)
{
caseTRADE_RETCODE_REQUOTE: return("Requote");
caseTRADE_RETCODE_REJECT: return("Request rejected");
caseTRADE_RETCODE_CANCEL: return("Request canceled by trader");
caseTRADE_RETCODE_PLACED: return("Order placed");
caseTRADE_RETCODE_DONE: return("Request is completed");
caseTRADE_RETCODE_DONE_PARTIAL: return("Request is partially completed");
caseTRADE_RETCODE_ERROR: return("Request processing error");
caseTRADE_RETCODE_TIMEOUT: return("Request canceled by timeout");
caseTRADE_RETCODE_INVALID: return("Invalid request");
caseTRADE_RETCODE_INVALID_VOLUME: return("Invalid volume in the request");
caseTRADE_RETCODE_INVALID_PRICE: return("Invalid price in the request");
caseTRADE_RETCODE_INVALID_STOPS: return("Invalid stops in the request");
caseTRADE_RETCODE_TRADE_DISABLED: return("Trade is disabled");
caseTRADE_RETCODE_MARKET_CLOSED: return("Market is closed");
caseTRADE_RETCODE_NO_MONEY: return("There is not enough money to fulfill the request");
caseTRADE_RETCODE_PRICE_CHANGED: return("Prices changed");
caseTRADE_RETCODE_PRICE_OFF: return("There are no quotes to process the request");
caseTRADE_RETCODE_INVALID_EXPIRATION: return("Invalid order expiration date of in the request");
caseTRADE_RETCODE_ORDER_CHANGED: return("Order state changed");
caseTRADE_RETCODE_TOO_MANY_REQUESTS: return("Too frequent requests");
caseTRADE_RETCODE_NO_CHANGES: return("No changes in request");
caseTRADE_RETCODE_SERVER_DISABLES_AT: return("Autotrading disabled by server");
caseTRADE_RETCODE_CLIENT_DISABLES_AT: return("Autotrading disabled by client terminal");
caseTRADE_RETCODE_LOCKED: return("Request locked for processing");
caseTRADE_RETCODE_FROZEN: return("Order or position frozen");
caseTRADE_RETCODE_INVALID_FILL: return("Invalid order filling type");
caseTRADE_RETCODE_CONNECTION: return("No connection with the trade server");
caseTRADE_RETCODE_ONLY_REAL: return("Operation is allowed only for live accounts");
caseTRADE_RETCODE_LIMIT_ORDERS: return("The number of pending orders has reached the limit");
caseTRADE_RETCODE_LIMIT_VOLUME: return("The volume of orders and positions for the symbol has reached the limit");
}
//---return("Invalid return code of the trade server");
}
//+------------------------------------------------------------------+//| returns runtime error code description |//+------------------------------------------------------------------+string ErrorDescription(int err_code)
{
//---switch(err_code)
{
caseERR_INTERNAL_ERROR: return("Unexpected internal error");
caseERR_WRONG_INTERNAL_PARAMETER: return("Wrong parameter in the inner call of the client terminal function");
caseERR_INVALID_PARAMETER: return("Wrong parameter when calling the system function");
caseERR_NOT_ENOUGH_MEMORY: return("Not enough memory to perform the system function");
caseERR_STRUCT_WITHOBJECTS_ORCLASS: return("The structure contains objects of strings and/or dynamic arrays and/or structure of such objects and/or classes");
caseERR_INVALID_ARRAY: return("Array of a wrong type, wrong size, or a damaged object of a dynamic array");
caseERR_ARRAY_RESIZE_ERROR: return("Not enough memory for the relocation of an array, or an attempt to change the size of a static array");
caseERR_STRING_RESIZE_ERROR: return("Not enough memory for the relocation of string");
caseERR_NOTINITIALIZED_STRING: return("Not initialized string");
caseERR_INVALID_DATETIME: return("Invalid date and/or time");
caseERR_ARRAY_BAD_SIZE: return("Requested array size exceeds 2 GB");
caseERR_INVALID_POINTER: return("Wrong pointer");
caseERR_INVALID_POINTER_TYPE: return("Wrong type of pointer");
caseERR_FUNCTION_NOT_ALLOWED: return("System function is not allowed to call");
caseERR_CHART_WRONG_ID: return("Wrong chart ID");
caseERR_CHART_NO_REPLY: return("Chart does not respond");
caseERR_CHART_NOT_FOUND: return("Chart not found");
caseERR_CHART_NO_EXPERT: return("No Expert Advisor in the chart that could handle the event");
caseERR_CHART_CANNOT_OPEN: return("Chart opening error");
caseERR_CHART_CANNOT_CHANGE: return("Failed to change chart symbol and period");
//case ERR_CHART_WRONG_TIMER_PARAMETER: return("Wrong parameter for timer");caseERR_CHART_CANNOT_CREATE_TIMER: return("Failed to create timer");
caseERR_CHART_WRONG_PROPERTY: return("Wrong chart property ID");
caseERR_CHART_SCREENSHOT_FAILED: return("Error creating screenshots");
caseERR_CHART_NAVIGATE_FAILED: return("Error navigating through chart");
caseERR_CHART_TEMPLATE_FAILED: return("Error applying template");
caseERR_CHART_WINDOW_NOT_FOUND: return("Subwindow containing the indicator was not found");
caseERR_OBJECT_ERROR: return("Error working with a graphical object");
caseERR_OBJECT_NOT_FOUND: return("Graphical object was not found");
caseERR_OBJECT_WRONG_PROPERTY: return("Wrong ID of a graphical object property");
caseERR_OBJECT_GETDATE_FAILED: return("Unable to get date corresponding to the value");
caseERR_OBJECT_GETVALUE_FAILED: return("Unable to get value corresponding to the date");
caseERR_MARKET_UNKNOWN_SYMBOL: return("Unknown symbol");
caseERR_MARKET_SELECT_ERROR: return("Symbol is not selected in MarketWatch");
caseERR_MARKET_WRONG_PROPERTY: return("Wrong identifier of a symbol property");
caseERR_MARKET_LASTTIME_UNKNOWN: return("Time of the last tick is not known (no ticks)");
caseERR_HISTORY_NOT_FOUND: return("Requested history not found");
caseERR_HISTORY_WRONG_PROPERTY: return("Wrong ID of the history property");
caseERR_GLOBALVARIABLE_NOT_FOUND: return("Global variable of the client terminal is not found");
caseERR_GLOBALVARIABLE_EXISTS: return("Global variable of the client terminal with the same name already exists");
caseERR_MAIL_SEND_FAILED: return("Email sending failed");
caseERR_PLAY_SOUND_FAILED: return("Sound playing failed");
caseERR_MQL5_WRONG_PROPERTY: return("Wrong identifier of the program property");
caseERR_TERMINAL_WRONG_PROPERTY: return("Wrong identifier of the terminal property");
caseERR_FTP_SEND_FAILED: return("File sending via ftp failed");
caseERR_BUFFERS_NO_MEMORY: return("Not enough memory for the distribution of indicator buffers");
caseERR_BUFFERS_WRONG_INDEX: return("Wrong indicator buffer index");
caseERR_CUSTOM_WRONG_PROPERTY: return("Wrong ID of the custom indicator property");
caseERR_ACCOUNT_WRONG_PROPERTY: return("Wrong account property ID");
caseERR_TRADE_WRONG_PROPERTY: return("Wrong trade property ID");
caseERR_TRADE_DISABLED: return("Trading by Expert Advisors prohibited");
caseERR_TRADE_POSITION_NOT_FOUND: return("Position not found");
caseERR_TRADE_ORDER_NOT_FOUND: return("Order not found");
caseERR_TRADE_DEAL_NOT_FOUND: return("Deal not found");
caseERR_TRADE_SEND_FAILED: return("Trade request sending failed");
caseERR_INDICATOR_UNKNOWN_SYMBOL: return("Unknown symbol");
caseERR_INDICATOR_CANNOT_CREATE: return("Indicator cannot be created");
caseERR_INDICATOR_NO_MEMORY: return("Not enough memory to add the indicator");
caseERR_INDICATOR_CANNOT_APPLY: return("The indicator cannot be applied to another indicator");
caseERR_INDICATOR_CANNOT_ADD: return("Error applying an indicator to chart");
caseERR_INDICATOR_DATA_NOT_FOUND: return("Requested data not found");
caseERR_INDICATOR_WRONG_INDEX: return("Wrong index of the requested indicator buffer");
caseERR_INDICATOR_WRONG_PARAMETERS: return("Wrong number of parameters when creating an indicator");
caseERR_INDICATOR_PARAMETERS_MISSING: return("No parameters when creating an indicator");
caseERR_INDICATOR_CUSTOM_NAME: return("The first parameter in the array must be the name of the custom indicator");
caseERR_INDICATOR_PARAMETER_TYPE: return("Invalid parameter type in the array when creating an indicator");
caseERR_BOOKS_CANNOT_ADD: return("Depth Of Market can not be added");
caseERR_BOOKS_CANNOT_DELETE: return("Depth Of Market can not be removed");
caseERR_BOOKS_CANNOT_GET: return("The data from Depth Of Market can not be obtained");
caseERR_BOOKS_CANNOT_SUBSCRIBE: return("Error in subscribing to receive new data from Depth Of Market");
caseERR_TOO_MANY_FILES: return("More than 64 files cannot be opened at the same time");
caseERR_WRONG_FILENAME: return("Invalid file name");
caseERR_TOO_LONG_FILENAME: return("Too long file name");
caseERR_CANNOT_OPEN_FILE: return("File opening error");
caseERR_FILE_CACHEBUFFER_ERROR: return("Not enough memory for cache to read");
caseERR_CANNOT_DELETE_FILE: return("File deleting error");
caseERR_INVALID_FILEHANDLE: return("A file with this handle was closed, or was not opening at all");
caseERR_WRONG_FILEHANDLE: return("Wrong file handle");
caseERR_FILE_NOTTOWRITE: return("The file must be opened for writing");
caseERR_FILE_NOTTOREAD: return("The file must be opened for reading");
caseERR_FILE_NOTBIN: return("The file must be opened as a binary one");
caseERR_FILE_NOTTXT: return("The file must be opened as a text");
caseERR_FILE_NOTTXTORCSV: return("The file must be opened as a text or CSV");
caseERR_FILE_NOTCSV: return("The file must be opened as CSV");
caseERR_FILE_READERROR: return("File reading error");
caseERR_FILE_BINSTRINGSIZE: return("String size must be specified, because the file is opened as binary");
caseERR_INCOMPATIBLE_FILE: return("A text file must be for string arrays, for other arrays - binary");
caseERR_FILE_IS_DIRECTORY: return("This is not a file, this is a directory");
caseERR_FILE_NOT_EXIST: return("File does not exist");
caseERR_FILE_CANNOT_REWRITE: return("File can not be rewritten");
caseERR_WRONG_DIRECTORYNAME: return("Wrong directory name");
caseERR_DIRECTORY_NOT_EXIST: return("Directory does not exist");
caseERR_FILE_ISNOT_DIRECTORY: return("This is a file, not a directory");
caseERR_CANNOT_DELETE_DIRECTORY: return("The directory cannot be removed");
caseERR_NO_STRING_DATE: return("No date in the string");
caseERR_WRONG_STRING_DATE: return("Wrong date in the string");
caseERR_WRONG_STRING_TIME: return("Wrong time in the string");
caseERR_STRING_TIME_ERROR: return("Error converting string to date");
caseERR_STRING_OUT_OF_MEMORY: return("Not enough memory for the string");
caseERR_STRING_SMALL_LEN: return("The string length is less than expected");
caseERR_STRING_TOO_BIGNUMBER: return("Too large number, more than ULONG_MAX");
caseERR_WRONG_FORMATSTRING: return("Invalid format string");
caseERR_TOO_MANY_FORMATTERS: return("Amount of format specifiers more than the parameters");
caseERR_TOO_MANY_PARAMETERS: return("Amount of parameters more than the format specifiers");
caseERR_WRONG_STRING_PARAMETER: return("Damaged parameter of string type");
caseERR_STRINGPOS_OUTOFRANGE: return("Position outside the string");
caseERR_STRING_ZEROADDED: return("0 added to the string end, a useless operation");
caseERR_STRING_UNKNOWNTYPE: return("ÍUnknown data type when converting to a string");
caseERR_WRONG_STRING_OBJECT: return("Damaged string object");
caseERR_INCOMPATIBLE_ARRAYS: return("Copying incompatible arrays. String array can be copied only to a string array, and a numeric array - in numeric array only");
caseERR_SMALL_ASSERIES_ARRAY: return("The receiving array is declared as AS_SERIES, and it is of insufficient size");
caseERR_SMALL_ARRAY: return("Too small array, the starting position is outside the array");
caseERR_ZEROSIZE_ARRAY: return("An array of zero length");
caseERR_NUMBER_ARRAYS_ONLY: return("Must be a numeric array");
caseERR_ONEDIM_ARRAYS_ONLY: return("Must be a one-dimensional array");
caseERR_SERIES_ARRAY: return("Timeseries cannot be used");
caseERR_DOUBLE_ARRAY_ONLY: return("Must be an array of type double");
caseERR_FLOAT_ARRAY_ONLY: return("Must be an array of type float");
caseERR_LONG_ARRAY_ONLY: return("Must be an array of type long");
caseERR_INT_ARRAY_ONLY: return("Must be an array of type int");
caseERR_SHORT_ARRAY_ONLY: return("Must be an array of type short");
caseERR_CHAR_ARRAY_ONLY: return("Must be an array of type char");
default: if(err_code>=ERR_USER_ERROR_FIRST && err_code<ERR_USER_ERROR_LAST)
return("User error "+string(err_code-ERR_USER_ERROR_FIRST));
}
//---return("Unknown error");
}
//+------------------------------------------------------------------+
Das heißt, meinem Verständnis nach, dass ich bei einem FreezeLevel von 0 immer was verändern kann, dass der Fehler also hier nicht liegt.
Aber nach Carl ist das wohl falsch, ich weiß es nicht.
Ich weiß nur, dass der TrailingStop-EA auf das NettingKonto des gleichen Brokers funktioniert, auf dessen HedgingKonto es nicht geht; ich habe es umstellen lassen, weil ich gesehen habe,
dass das von ActivTrades ein Netting ist, wo es funktionierte.
Das liegt an der programmierung, was für hedging geht geht auch für netting aber nicht umgekehrt.
der freezlevel liegt woanders, der hat damit nix zu tun.
such dir was mit einer ordentlichen programmierung
Mann sollte nicht denken, was etwas bedeuten soll nach eigenem Verständnis!
Man sollte nachlesen, was es faktisch bedeutet und wie es das Handeln - in unserem Fall - bedeutet.
Die Suche nach SYMBOL_TRADE_FREEZE_LEVEL ergab zB. dies:
https://www.mql5.com/de/articles/2555#modify_in_freeze_level_prohibited:
Bid-StopLoss >= SYMBOL_TRADE_FREEZE_LEVEL
StopLoss-Ask >= SYMBOL_TRADE_FREEZE_LEVEL
oder dies: https://www.mql5.com/de/forum/409880/page922#comment_36375343
Und SYMBOL_TRADE_FREEZE_LEVEL verbietet die Änderung von SL- oder TP-Levels, wenn der Marktpreis zu diesem Zeitpunkt näher an ihnen liegt als SYMBOL_TRADE_FREEZE_LEVEL
Es ist nur so, dass ich einen EA schreibe, dessen Strategie ursprünglich auf M1 empfohlen wurde und SYMBOL_TRADE_FREEZE_LEVEL kann verbieten, einen Teil einer Bestellung zu schließen
Noch Fragen?
Mann sollte nicht denken, was etwas bedeuten soll nach eigenem Verständnis!
Man sollte nachlesen, was es faktisch bedeutet und wie es das Handeln - in unserem Fall - bedeutet.
Die Suche nach SYMBOL_TRADE_FREEZE_LEVEL ergab zB. dies:
https://www.mql5.com/de/articles/2555#modify_in_freeze_level_prohibited:
Bid-StopLoss >= SYMBOL_TRADE_FREEZE_LEVEL
StopLoss-Ask >= SYMBOL_TRADE_FREEZE_LEVEL
oder dies: https://www.mql5.com/de/forum/409880/page922#comment_36375343
Noch Fragen?
ist ja genau was ich geschrieben habe, nachdem er von trailing stop redet kann es sich ja nur um Positions handeln.
und beim 22ten problem finden wir hier was es braucht für hedge bzw netting
https://www.mql5.com/de/articles/2299
oder hier
https://www.mql5.com/en/docs/trading/positionselect
Das liegt an der programmierung, was für hedging geht geht auch für netting aber nicht umgekehrt.
der freezlevel liegt woanders, der hat damit nix zu tun.
such dir was mit einer ordentlichen programmierung
Ich wage mich tatsächlich selbst an die Programmierung bzw. übernehme nur Code, den ich verstehe.
Den Code für den TrailingStop fürs Hedging muss ich mich noch ansehen, ich werde leider nicht dafür bezahlt und geh' gerade in anderem Kram unter.
Ich bin mir sicher, dass man profitabel traden kann ohne perfekt im Coden zu sein bzw. ohne den perfekten Code, der macht es nicht aus.
Aber danke Euch, wie immer.
Ich wage mich tatsächlich selbst an die Programmierung bzw. übernehme nur Code, den ich verstehe.
Den Code für den TrailingStop fürs Hedging muss ich mich noch ansehen, ich werde leider nicht dafür bezahlt und geh' gerade in anderem Kram unter.
Ich bin mir sicher, dass man profitabel traden kann ohne perfekt im Coden zu sein bzw. ohne den perfekten Code, der macht es nicht aus.
Aber danke Euch, wie immer.
Kann es sein, das:
#include <errordescription.mqh>einfach den returncode nicht kennt?
Kann es sein, das:
einfach den returncode nicht kennt?
Das macht Sinn:
Das macht Sinn:
😉
Und wenn du dann auf der MQL5 Doku unter Returncodes schaust, steht da einfach nur
Dein Ticket stimmt wohl nicht mehr, so einfach ist das
😉
Und wenn du dann auf der MQL5 Doku unter Returncodes schaust, steht da einfach nur
Dein Ticket stimmt wohl nicht mehr, so einfach ist das
Nein, hatte ich ganz oben geschrieben, die Position wurde nie geschlossen.
Nein, hatte ich ganz oben geschrieben, die Position wurde nie geschlossen.
Dann stimmt dein ticket/Id nicht.
Die Fehlermeldung ist ja eindeutig.
Dann stimmt dein ticket/Id nicht.
Die Fehlermeldung ist ja eindeutig.
das liegt vermutlich daran, dass der TS nur auf ein NettingKonto funktioniert?