Ich arbeite an der Feinabstimmung des CrossArbitr-Indikators. Hilf mir zu verstehen. Ich brauche den Wert von b(Total) summiert s für eine Minute (0 bar) und mit den anderen Indikatoren auf dem Chart angezeigt, nach einer Minute die Summe s wurde festgelegt, s1=s, beginnen, wieder zu bilden. Der Indikator s1 one muss ebenfalls auf dem Chart angezeigt werden. Hier ist der Code des Indikators.
//+------------------------------------------------------------------+//| CrossArbitr.mq4 |//| Scriptong |//| |//+------------------------------------------------------------------+#property copyright"Scriptong"#property link""#property indicator_chart_window//---- input parametersexternbool ShowBid=false;
externbool ShowAsk=false;
externcolor BidColor = Lime;
externcolor AskColor = Yellow;
externint AlarmIfPointDifference = 10;
externstring AlarmFile = "wait.wav";
bool Activate = False;
string FP, SP;
double Tick;
int WayForCross;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicatorsstring S = Symbol();
if(StringFind(S, "USD", 0) != -1)
{
Comment("Индикатор работает только с кроссовыми парами (GBPJPY, EURJPY, EURGBP и т. д)!");
return(0);
}
if(StringLen(S) != 6)
{
Comment("Индикатор работает только с валютными парами, у которых название состоит из шести символов!");
return(0);
}
// Поиск первой валютной пары кросса
FP = StringSubstr(S, 0, 3)+"USD";
MarketInfo(FP, MODE_BID);
if(GetLastError() > 0)
{
FP = "USD"+StringSubstr(S, 0, 3);
MarketInfo(FP, MODE_BID);
if(GetLastError() > 0)
{
Comment("Невозможно найти инструмент ", FP, " или ", StringSubstr(S, 0, 3)+"USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор.");
return(0);
}
}
// -------------------------------------- // "Создание" второй валютной пары кросса
SP = "USD"+StringSubstr(S, 3, 3);
MarketInfo(SP, MODE_BID);
if(GetLastError() > 0)
{
SP = StringSubstr(S, 3, 3)+"USD";
MarketInfo(SP, MODE_BID);
if(GetLastError() > 0)
{
Comment("Невозможно найти инструмент ", SP, " или ", StringSubstr(S, 3, 3)+"USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор.");
return(0);
}
}
// -------------------------------------- // Определение пути синтеза кроссаif (StringFind(FP, "USD") == 3 && StringFind(SP, "USD") == 0)
WayForCross = 1;
if (StringFind(FP, "USD") == 0 && StringFind(SP, "USD") == 0)
WayForCross = 2;
if (StringFind(FP, "USD") == 3 && StringFind(SP, "USD") == 3)
WayForCross = 3;
if (StringFind(FP, "USD") == 0 && StringFind(SP, "USD") == 3)
WayForCross = 4;
// -------------------------------
Tick = MarketInfo(Symbol(), MODE_TICKSIZE);
Activate = True;
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----Comment("");
if(ObjectFind("CrossBid") == 0)
ObjectDelete("CrossBid");
if(ObjectFind("CrossAsk") == 0)
ObjectDelete("CrossAsk");
//----return(0);
}
//+------------------------------------------------------------------+//| Приведение значений к точности одного тика |//+------------------------------------------------------------------+double ND(double A)
{
return(NormalizeDouble(A, Digits));
}
//+------------------------------------------------------------------+//| Расчет значения синтетического бида |//+------------------------------------------------------------------+double CalcBidWayForCross()
{
switch (WayForCross)
{
case1: return(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_BID)));
case2: return(ND(MarketInfo(SP, MODE_BID)/MarketInfo(FP, MODE_ASK)));
case3: return(ND(MarketInfo(FP, MODE_BID)/MarketInfo(SP, MODE_ASK)));
case4: return(1/(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_BID))));
}
}
//+------------------------------------------------------------------+//| Расчет значения синтетического аска |//+------------------------------------------------------------------+double CalcAskWayForCross()
{
switch (WayForCross)
{
case1: return(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_ASK)));
case2: return(ND(MarketInfo(SP, MODE_ASK)/MarketInfo(FP, MODE_BID)));
case3: return(ND(MarketInfo(FP, MODE_ASK)/MarketInfo(SP, MODE_BID)));
case4: return(1/(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_ASK))));
}
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars=IndicatorCounted();
//----if(!Activate)
return(0);
// Расчет синтетических Bid и Askdouble CalcBid = CalcBidWayForCross();
RefreshRates();
double CalcAsk = CalcAskWayForCross();
double n,m,b,s,s1;
int t = Seconds();
// -------------------------------// Рисуем уровень синтетического Bidif (ShowBid)
{
if(ObjectFind("CrossBid") == -1)
{
ObjectCreate("CrossBid", OBJ_HLINE, 0, 0, CalcBid);
ObjectSet("CrossBid", OBJPROP_COLOR, BidColor);
ObjectSet("CrossBid", OBJPROP_STYLE, STYLE_DOT);
}
elseif(!ObjectMove("CrossBid", 0, 1, CalcBid))
Print("Ошибка перемещения №", GetLastError());
}
// ---------------------------------- // Рисуем уровень синтетического Askif(ShowAsk)
{
if(ObjectFind("CrossAsk") == -1)
{
ObjectCreate("CrossAsk", OBJ_HLINE, 0, 0, CalcAsk);
ObjectSet("CrossAsk", OBJPROP_COLOR, AskColor);
ObjectSet("CrossAsk", OBJPROP_STYLE, STYLE_DOT);
}
elseObjectMove("CrossAsk", 0, 1, CalcAsk);
if(t > 0)
{s=b; b++;}
else s1=s;
}
// ---------------------------------- Comment("Реальный BID = ", DoubleToStr(Bid, Digits), ", реальный ASK = ", DoubleToStr(Ask, Digits),
"\nСинтетик BID = ", DoubleToStr(CalcBid, Digits), ", синтетик ASK = ", DoubleToStr(CalcAsk, Digits),
"\nРазница BID Синтетика и Реального =", n=(Bid-CalcBid),
"\, Разница ASK Синтетика и Реального =", m=(CalcAsk-Ask),
"\nИтог =", b=(CalcAsk-Ask) - (Bid-CalcBid),
"\nПрошлый бар =", s1, ", Текущий бар =", s
);
// Выдаем звуковой сигнал о превышении минимальной разностиif(ND(MathAbs(CalcBid-Bid)) >= ND(AlarmIfPointDifference*Point))
PlaySound(AlarmFile);
// -------------------------------------------------------- //----return(0);
}
//+------------------------------------------------------------------+
Außerdem versuche ich, einen Exp-Monitoring-Spread Expert Advisor auf einem Diagramm zu installieren - er ist nicht installiert. MT4 schreibt in das Protokoll, dass es sich nicht um einen Expert Advisor handelt und nicht installiert werden kann. Es wurden keine Fehler im Compiler festgestellt. Es wird als Skript ausgeführt, aber die Offline-Tabelle funktioniert nicht. Was kann getan werden? Der Code ist nur für den Fall beigefügt.
ganri: Ist es möglich, einen EA zu reparieren, bei dem man die normalen offenen Trades durch einen Trailing-Stop ersetzen möchte?
Wenn der Expert Advisor mit dem MQL-Assistenten erstellt wurde, ist es einfach - bei der Erstellung eines EA müssen Sie angeben, dass ein Trailing-Stop benötigt wird, und auswählen, worauf der Trailing-Stop basieren soll.
barabashkakvn: Wenn der Expert Advisor mit dem MQL-Assistenten erstellt wurde, ist es einfach - bei der Erstellung eines EA müssen Sie angeben, dass ein Trailing-Stop benötigt wird, und auswählen, worauf der Trailing-Stop basieren soll.
Ist es möglich, Charts für die technische Analyse herunterladen, - Indizes S & P 500 Futures Chart, TA 25 Chart, und S & P 500 Chart, wenn es möglich ist, kann Ihnen sagen, wie es zu tun, vielleicht gibt es eine Erklärung, wie zum Download! Ich danke Ihnen im Voraus.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
oder?
Sie zeigt Fehler. Hat alles gut funktionieren?
kann "C:\Programmdateien\Alpari Limited MT5 Demo 1\MQL5\include\Expert\Signal\MySignals\ACH_HM_RSI" nicht öffnen.Include-Datei expert_ah_hm_rsi.mq5 14 11
Sie zeigt Fehler. Hat alles gut funktionieren?
kann "C:\Programmdateien\Alpari Limited MT5 Demo 1\MQL5\include\Expert\Signal\MySignals\ACH_HM_RSI" nicht öffnen.Include-Datei expert_ah_hm_rsi.mq5 14 11
Das tue ich.
legt die Dateien in den angegebenen Ordnern ab.
Das bin ich.
legt die Dateien in den angegebenen Ordnern ab.
Danke, es klappt! :)
Hallo zusammen!
Ich arbeite an der Feinabstimmung des CrossArbitr-Indikators. Hilf mir zu verstehen. Ich brauche den Wert von b(Total) summiert s für eine Minute (0 bar) und mit den anderen Indikatoren auf dem Chart angezeigt, nach einer Minute die Summe s wurde festgelegt, s1=s, beginnen, wieder zu bilden. Der Indikator s1 one muss ebenfalls auf dem Chart angezeigt werden. Hier ist der Code des Indikators.
Außerdem versuche ich, einen Exp-Monitoring-Spread Expert Advisor auf einem Diagramm zu installieren - er ist nicht installiert. MT4 schreibt in das Protokoll, dass es sich nicht um einen Expert Advisor handelt und nicht installiert werden kann. Es wurden keine Fehler im Compiler festgestellt. Es wird als Skript ausgeführt, aber die Offline-Tabelle funktioniert nicht. Was kann getan werden? Der Code ist nur für den Fall beigefügt.
Ist es möglich, einen EA zu reparieren, bei dem man die normalen offenen Trades durch einen Trailing-Stop ersetzen möchte?
Wenn der Expert Advisor mit dem MQL-Assistenten erstellt wurde, ist es einfach - bei der Erstellung eines EA müssen Sie angeben, dass ein Trailing-Stop benötigt wird, und auswählen, worauf der Trailing-Stop basieren soll.
Ich danke Ihnen im Voraus.