Ich habe ein Skript erstellt, das die Größe des Stop-Loss auf 200 Pips ändert, aber es gibt einen Fehler, anstatt den Stop zu verschieben
//+------------------------------------------------------------------+//| traling.mq5 |//| Copyright 2011, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2011, MetaQuotes Software Corp."#property link "http://www.mql5.com"#property version "1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+double BuyStoploss=200;
double SellStoploss=200;
double sl,tp;
voidOnStart()
{
//---MqlTradeRequest m_request;
MqlTradeResult m_result;
if(PositionSelect(_Symbol))
{
//--- если позиция buyif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
//--- получаем значение стоплосс для позиции buy
sl=BuyStoploss;
//--- определяем допустимый уровень установки стоплосс для позиции buydouble minimal=SymbolInfoDouble(_Symbol,SYMBOL_BID)-_Point*SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
//--- нормализация значения
sl=NormalizeDouble(sl,_Digits);
//--- нормализация значения
minimal=NormalizeDouble(minimal,_Digits);
//--- если на полученный от индикатора уровень невозможно установить стоплосс, // он будет установлен на ближайший возможный уровень
sl=MathMin(sl,minimal);
//--- значение стоплосс позицииdouble possl=PositionGetDouble(POSITION_SL);
//--- нормализация значения
possl=NormalizeDouble(possl,_Digits);
//--- если новое значение стоплосс выше, чем текущее значение стоплосс, // будет выполнена попытка переместить стоплосс на новый уровеньif(sl>possl|| possl==0)
{
//--- заполнение структуры запроса
m_request.sl=sl;
//--- заполнение структуры запроса
m_request.tp=PositionGetDouble(POSITION_TP);
//--- запросOrderSend(m_request,m_result);
//--- проверка результата выполнения запросаif(m_result.retcode!=TRADE_RETCODE_DONE)
{
//--- вывод в журнал сообщения об ошибке printf("Не удалось переместить стоплосс позиции %s, ошибка: %I64u",_Symbol,m_result.retcode);
//--- не удалось переместить стоплосс, завершаем выполнение//return(false);
}
}
}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
sl=SellStoploss;
//--- прибавляется спред, поскольку sell закрывается по цене Ask
sl+=(SymbolInfoDouble(_Symbol,SYMBOL_ASK)-SymbolInfoDouble(_Symbol,SYMBOL_BID));
double minimal=SymbolInfoDouble(_Symbol,SYMBOL_ASK)+_Point*SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
sl=NormalizeDouble(sl,_Digits);
minimal=NormalizeDouble(minimal,_Digits);
sl=MathMax(sl,minimal);
double possl=PositionGetDouble(POSITION_SL);
possl=NormalizeDouble(possl,_Digits);
if(sl<possl || possl==0)
{
m_request.sl=sl;
m_request.tp=PositionGetDouble(POSITION_TP);
OrderSend(m_request,m_result);
if(m_result.retcode!=TRADE_RETCODE_DONE)
{
printf("Не удалось переместить стоплосс позиции %s, ошибка: %I64u",_Symbol,m_result.retcode);
//return(false);
}
}
}
}
}
//+------------------------------------------------------------------+
Hallo zusammen. Können Sie mir bitte sagen, ob es einen Expert Advisor für dieses System gibt?
Ich glaube, das nennt man "dem Trend folgen".
- Eine Long-Position wird eröffnet, wenn der Schlusskurs höher ist als der Höchstkurs der letzten 20 Bars;
- eine Long-Position schließen, wenn der Schlusskurs unter dem Mindestkurs der letzten 10 Bars liegt;
- eine Short-Position schließen, wenn der Schlusskurs unter dem Mindestkurs der letzten 20 Bars liegt; eine Short-Position schließen, wenn der Schlusskurs unter dem Mindestkurs der letzten 10 Bars liegt
- eine Short-Position schließen, wenn der Schlusskurs über dem letzten 10er-Balken liegt; eine Short-Position schließen, wenn der Schlusskurs über dem letzten 10er-Balken liegt.
Oder vielleicht können nette Leute Ihnen beim Schreiben helfen?
Ich habe eine Frage, für die ich keinen separaten Thread erstellen möchte, weil ich hoffe, dass der Autor nicht beleidigt ist und die Frage nicht verloren geht.
Die Frage bezieht sich auf die Handelssignalmodule - https://www.mql5.com/ru/docs/standardlibrary/expertclasses/csignal und nehmen wir zum Beispiel die Beschreibung der MACD-Signale"Divergence - the first analysed oscillator trough is shallower than the previous one and the corresponding price trough is deeper than the previous one" - es ist interessant, sich den Code anzuschauen, wie dieses Signal gesucht wird. Wir öffnen SignalMACD.mqh, aber es gibt stattdessen IS_PATTERN_USAGE(0) -Bedingungen und so weiter.
Wie kann ich den Code für die Suche nach der Divergenz selbst sehen? Das heißt, wie vergleicht er eine Kerze mit einem anderen Indikator auf einem Balken zu einem anderen, wo ist dieser Code?
Ich habe eine Frage, und ich hoffe, dass der Autor nicht beleidigt ist und die Frage nicht verloren geht.
Die Frage bezieht sich auf die Handelssignalmodule - https://www.mql5.com/ru/docs/standardlibrary/expertclasses/csignal und nehmen wir zum Beispiel die Beschreibung der MACD-Signale"Divergence - the first analysed oscillator trough is shallower than the previous one and the corresponding price trough is deeper than the previous one" - es ist interessant, sich den Code anzuschauen, wie dieses Signal gesucht wird. Wir öffnen SignalMACD.mqh, aber es gibt stattdessen IS_PATTERN_USAGE(0) -Bedingungen und so weiter.
Wie kann ich den Code für die Suche nach der Divergenz selbst sehen? Das heißt, wie sieht der Vergleich einer Kerze mit einem anderen Indikator auf einem Balken auf dem anderen aus, wo ist dieser Code?
Sie können den Code im Quellcode einsehen. Für die Suche nach der Divergenz gibt es zwei Methoden:
1. Die Methode bool CSignalMACD::ExtState(int ind) - sie bereitet Daten für die Suche vor;
2. Die Methode bool CSignalMACD::CompareMaps(int map,int count,bool minimax,int start) sucht nach einem Marktmodell mit den angegebenen Parametern.
Wenn es hilft, hier sind Kommentare zu den Methoden auf Russisch:
Für die Methode bool CSignalMACD::ExtState(int ind)
//--- результатом работы этого метода является битовая карта экстремумов//--- фактически, битовая карта экстремумов представляет собой "массив" 4-битовых полей//--- каждый "элемент массива" однозначно описывает соотношение//--- текущих экстремумов осцилятора и цены с предыдущими//--- назначение битов элемента анализируемой битовой карты//--- бит 3 - не используется (всегда 0)//--- бит 2 - имеет значение 1 если текущий экстремум осцилятора "экстремальней" предыдущего//--- (более высокий пик или более глубокая впадина), иначе 0//--- бит 1 - не используется (всегда 0)//--- бит 0 - имеет значение 1 если текущий экстремум цены "экстремальней" предыдущего//--- (более высокий пик или более глубокая впадина), иначе 0//--- кроме того, формируются://--- массив значений экстремумов осцилятора,//--- массив значений экстремумов цены и//--- массив "расстояний" между экстремумами осцилятора (в барах)//--- следует отметить, что при использовании результатов расширенной проверки состояния,//--- нужно учитывать, какой экстремум осцилятора (пик или впадина)//--- является "точкой отсчёта" (т.е. был обнаружен при анализе первым)//--- если первым был обнаружен пик, то чётные элементы всех массивов//--- будут содержать данные о пиках, нечётный данные о впадинах//--- если первой была обнаружена впадина, соответственно, наоборот
Für die Methode bool CSignalMACD::CompareMaps(int map,int count,bool minimax,int start)
//--- битовая карта образца представляет собой "массив" 4-битовых полей//--- каждый "элемент массива" однозначно описывает искомое соотношение//--- текущих экстремумов осцилятора и цены с предыдущими//--- назначение битов элемента образца битовой карты//--- бит 3 - имеет значение 1 если нам неважно соотношение экстремумов осцилятора//--- имеет значение 0 если мы хотим "найти" соотношение экстремумов осцилятора определённое значением бита 2//--- бит 2 - имеет значение 1 если мы хотим "найти" ситуацию когда текущий экстремум осцилятора "экстремальней" предыдущего//--- (текущий пик более высокий или текущая впадина более глубокая)//--- имеет значение 0 если мы хотим "найти" ситуацию когда текущий экстремум осцилятора менее "экстремальный" чем предыдущий//--- (текущий пик менее высокий или текущая впадина менее глубокая)//--- бит 1 - имеет значение 1 если нам неважно соотношение экстремумов цены//--- имеет значение 0 если мы хотим "найти" соотношение экстремумов цены определённое значением бита 0//--- бит 0 - имеет значение 1 если мы хотим "найти" ситуацию когда текущий экстремум цены "экстремальней" предыдущего//--- (текущий пик более высокий или текущая впадина более глубокая)//--- имеет значение 0 если мы хотим "найти" ситуацию когда текущий экстремум цены менее "экстремальный" чем предыдущий//--- (текущий пик менее высокий или текущая впадина менее глубокая)
Ich habe ein Skript erstellt, das die Größe des Stop-Loss auf 200 Pips ändert, aber es gibt einen Fehler, anstatt den Stop zu verschieben
Ich habe ein Skript erstellt, das die Größe des Stop-Loss auf 200 Pips ändert, aber es gibt einen Fehler, anstatt den Stop zu verschieben
Hier. Vereinfacht und eine Meldung hinzugefügt, was SL und TP das Skript zu tun versucht. Die Stops sind bereits in den Preisen enthalten
Aber es passiert nichts.
Ich glaube, das nennt man "dem Trend folgen".
- Eine Long-Position wird eröffnet, wenn der Schlusskurs höher ist als der Höchstkurs der letzten 20 Bars;
- eine Long-Position schließen, wenn der Schlusskurs unter dem Mindestkurs der letzten 10 Bars liegt;
- eine Short-Position schließen, wenn der Schlusskurs unter dem Mindestkurs der letzten 20 Bars liegt; eine Short-Position schließen, wenn der Schlusskurs unter dem Mindestkurs der letzten 10 Bars liegt
- eine Short-Position schließen, wenn der Schlusskurs über dem letzten 10er-Balken liegt; eine Short-Position schließen, wenn der Schlusskurs über dem letzten 10er-Balken liegt.
Oder vielleicht können nette Leute Ihnen beim Schreiben helfen?
Um Haltestellen zu ändern, müssen Sie bestimmte Felder in die Abfrage aufnehmen:
Hier sollte Ihre Haltestelle nach einer solchen Aufforderung geändert werden.
Ich habe eine Frage, für die ich keinen separaten Thread erstellen möchte, weil ich hoffe, dass der Autor nicht beleidigt ist und die Frage nicht verloren geht.
Die Frage bezieht sich auf die Handelssignalmodule - https://www.mql5.com/ru/docs/standardlibrary/expertclasses/csignal und nehmen wir zum Beispiel die Beschreibung der MACD-Signale"Divergence - the first analysed oscillator trough is shallower than the previous one and the corresponding price trough is deeper than the previous one" - es ist interessant, sich den Code anzuschauen, wie dieses Signal gesucht wird. Wir öffnen SignalMACD.mqh, aber es gibt stattdessen IS_PATTERN_USAGE(0) -Bedingungen und so weiter.
Wie kann ich den Code für die Suche nach der Divergenz selbst sehen? Das heißt, wie vergleicht er eine Kerze mit einem anderen Indikator auf einem Balken zu einem anderen, wo ist dieser Code?
Einige DCs in echten Konten weisen den Symbolnamen alle möglichen Präfixe wie "." oder "FXF" zu.
Wie kann ich diese Präfixe verwenden?
Ich habe es so gemacht:
#define DEF_SPEC "FXF"
string SymbolsTrade[] = {"AUDCAD "DEF_SPEC ... -funktioniert nicht
string SymbolsTrade[] = {"AUDCAD "+DEF_SPEC ... -auch das funktioniert so nicht
als Ergebnis erhalte ich nur FXF anstelle von AUDCADFXF.
Können Sie mir sagen, wie man das macht?
Ich habe eine Frage, und ich hoffe, dass der Autor nicht beleidigt ist und die Frage nicht verloren geht.
Die Frage bezieht sich auf die Handelssignalmodule - https://www.mql5.com/ru/docs/standardlibrary/expertclasses/csignal und nehmen wir zum Beispiel die Beschreibung der MACD-Signale"Divergence - the first analysed oscillator trough is shallower than the previous one and the corresponding price trough is deeper than the previous one" - es ist interessant, sich den Code anzuschauen, wie dieses Signal gesucht wird. Wir öffnen SignalMACD.mqh, aber es gibt stattdessen IS_PATTERN_USAGE(0) -Bedingungen und so weiter.
Wie kann ich den Code für die Suche nach der Divergenz selbst sehen? Das heißt, wie sieht der Vergleich einer Kerze mit einem anderen Indikator auf einem Balken auf dem anderen aus, wo ist dieser Code?
Sie können den Code im Quellcode einsehen. Für die Suche nach der Divergenz gibt es zwei Methoden:
1. Die Methode bool CSignalMACD::ExtState(int ind) - sie bereitet Daten für die Suche vor;
2. Die Methode bool CSignalMACD::CompareMaps(int map,int count,bool minimax,int start) sucht nach einem Marktmodell mit den angegebenen Parametern.
Wenn es hilft, hier sind Kommentare zu den Methoden auf Russisch:
Für die Methode bool CSignalMACD::ExtState(int ind)
Für die Methode bool CSignalMACD::CompareMaps(int map,int count,bool minimax,int start)