J'affine l'indicateur CrossArbitr. Aidez-moi à comprendre. J'ai besoin de la valeur de b(Total) additionnée s pour une minute (0 barre) et affichée avec les autres indicateurs sur le graphique, après une minute la somme s a été fixée, s1=s, recommence à se former. L'indicateur s1 one doit également être affiché sur le graphique. Voici le code de l'indicateur.
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
De plus, j'essaie d'installer un conseiller expert Exp-Monitoring-Spread sur un graphique - il n'est pas installé. MT4 écrit dans le journal que ce n'est pas un conseiller expert et qu'il ne peut pas être installé. Aucune erreur dans le compilateur n'a été détectée. Il fonctionne comme un script, mais le graphique hors ligne ne fonctionne pas. Que peut-on faire ? Le code est joint en annexe, au cas où.
ganri: Est-il possible de fixer un EA où l'on veut remplacer les trades ouverts normaux par un trailing stop ?
Si le conseiller expert a été généré à l'aide de l'assistant MQL, alors c'est facile - lors de la création d'un EA, vous devez spécifier qu'un stop suiveur est nécessaire et choisir sur quoi le stop suiveur sera basé.
barabashkakvn: Si l'Expert Advisor a été généré à l'aide de l'Assistant MQL, c'est facile - lors de la création d'un EA, vous devez spécifier qu'un stop suiveur est nécessaire et choisir sur quoi le stop suiveur sera basé.
Est-il possible de télécharger des graphiques pour l'analyse technique, - indices S & P 500 Futures Chart, TA 25 Chart, et S & P 500 Chart si c'est possible peut vous dire comment le faire, peut-être qu'il y a une explication de comment télécharger ! Je vous remercie d'avance.
n'est-ce pas ?
Il montre erreur. J'ai tout fait fonctionnent bien?
inclure le fichier expert_ah_hm_rsi.mq5 14 11
Il montre erreur. J'ai tout fait fonctionnent bien?
inclure le fichier expert_ah_hm_rsi.mq5 14 11
Je le fais.
place les fichiers dans les dossiers spécifiés.
Je le suis.
place les fichiers dans les dossiers spécifiés.
Merci, ça marche ! :)
Bonjour à tous !
J'affine l'indicateur CrossArbitr. Aidez-moi à comprendre. J'ai besoin de la valeur de b(Total) additionnée s pour une minute (0 barre) et affichée avec les autres indicateurs sur le graphique, après une minute la somme s a été fixée, s1=s, recommence à se former. L'indicateur s1 one doit également être affiché sur le graphique. Voici le code de l'indicateur.
De plus, j'essaie d'installer un conseiller expert Exp-Monitoring-Spread sur un graphique - il n'est pas installé. MT4 écrit dans le journal que ce n'est pas un conseiller expert et qu'il ne peut pas être installé. Aucune erreur dans le compilateur n'a été détectée. Il fonctionne comme un script, mais le graphique hors ligne ne fonctionne pas. Que peut-on faire ? Le code est joint en annexe, au cas où.
Est-il possible de fixer un EA où l'on veut remplacer les trades ouverts normaux par un trailing stop ?
Si l'Expert Advisor a été généré à l'aide de l'Assistant MQL, c'est facile - lors de la création d'un EA, vous devez spécifier qu'un stop suiveur est nécessaire et choisir sur quoi le stop suiveur sera basé.
Je vous remercie d'avance.