Voici le code de l'Expert Advisor qui utilise cet indicateur TrendToTrend_open.
code ci-dessous
Question - pourquoi mon conseiller expert définit-il cet indicateur avec un prix de clôture?
//--- входные параметрыinputint LongTrend=14; // Период LongTrendinputint ShortTrend=7; // Период ShortTrendinputint EA_Magic=0; // Magic Number советникаinputdouble Lot=0.02; // Количество лотовinputdouble STR= 0.14;
inputdouble TR= 0.1;
inputdouble TP= 0.55;
//--- глобальные переменныеint TrendToTrend;
int TrendToTrendOpen;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- достаточно ли количество баров для работыif(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
{
Alert("На графике меньше 60 баров, советник не будет работать!!");
return(-1);
}
TrendToTrend=iCustom(_Symbol,0,"TrendToTrend",LongTrend,ShortTrend);
TrendToTrendOpen=iCustom(_Symbol,0,"TrendToTrend_open",LongTrend,ShortTrend);
if(TrendToTrend<0||TrendToTrendOpen<0)
{
Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
return(-1);
}
return(0);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- освобождаем хэндлы индикаторовIndicatorRelease(TrendToTrend);
IndicatorRelease(TrendToTrendOpen);
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
staticdatetime Old_Time;
datetime New_Time[1];
bool IsNewBar=false;
// копируем время текущего бара в элемент New_Time[0]int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
if(copied>0) // ok, успешно скопировано
{
if(Old_Time!=New_Time[0]) // если старое время не равно
{
IsNewBar=true; // новый барif(MQL5InfoInteger(MQL5_DEBUGGING)) Print("Новый бар",New_Time[0],"старый бар",Old_Time);
Old_Time=New_Time[0]; // сохраняем время бара
}
}
else
{
Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
ResetLastError();
return;
}
//--- советник должен проверять условия совершения новой торговой операции только при новом бареif(IsNewBar==false)
{
return;
}
//--- Имеем ли мы достаточное количество баров на графике для работыint Mybars=Bars(_Symbol,_Period);
if(Mybars<60) // если общее количество баров меньше 60
{
Alert("На графике менее 60 баров, советник работать не будет!!");
return;
}
return;
}
Pouvez-vous m'indiquer la direction de la réponse à votre question ?
J'ai un EA avec deux stratégies qui ouvrent des trades sur des principes différents. Elle a pour résultat final une position commune.
Un peu plus tard, je dois comprendre comment chaque stratégie a contribué à la position. Alors, quelle stratégie (ou deux) a ouvert la position.
Comment dois-je m'y prendre ?
Merci !
Si votre EA a la possibilité de désactiver une des stratégies et que vous pouvez modifier le nombre magique dans les paramètres. Vous devez alors ajouter deux EA à votre compte et désactiver l'une des stratégies dans chacun d'entre eux et définir des nombres magiques différents pour les positions, puis utiliser les nombres magiques dans l'historique pour suivre celui qui donne le plus de profits ou de pertes.
Kino: Si l'EA a la possibilité de désactiver l'une des stratégies et que vous pouvez modifier le nombre magique dans les paramètres. Ensuite, mettez deux EA sur le compte et désactivez l'une des stratégies dans chacun d'eux et attribuez des nombres magiques différents pour les positions, puis retracez dans l'historique ce qui donne plus de plus ou moins par les nombres magiques.
Merci pour la réponse. J'ai créé des variables statiques qui changent leur valeur si la position de la stratégie est ouverte (à la fermeture et au stop loss, les valeurs changent également). En général, cela fonctionne bien, mais je comprends qu'après avoir redémarré l'EA, il perdra ses ordres.
Je ne comprends pas pourquoi la fonction renvoie 0 :
int BarsAmountPassed(datetime open_time)
{
datetime time_array[];
int n;
Print("inpupt time=",TimeToString(open_time));
CopyTime(_Symbol,_Period,open_time,TimeCurrent(),time_array);
n=ArraySize(time_array);
Print("number of elements in array=",n);
return(n);
}
En appelant comme ceci par exemple :
int bars;
bars=BarsAmountPassed(1365198000);
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
Je ne comprends pas pourquoi la fonction renvoie 0 :
En appelant comme ceci par exemple :
n écrit correctement, mais renvoie 0.
C'est étrange, si je change le type de la fonction en short ou double, elle renvoie la valeur calculée (qui s'avère être 4 dans cet exemple). Mais avec int 0.
Voici le code de l'Expert Advisor qui utilise cet indicateur TrendToTrend_open.
code ci-dessous
Question - pourquoi mon conseiller expert définit-il cet indicateur avec un prix de clôture?
Bonjour !
Veuillez m'indiquer où lire la réponse à ma question.
J'ai un EA avec deux stratégies qui ouvrent des trades sur des principes différents. Elle a pour résultat final une position commune.
Un peu plus tard, je dois comprendre comment chaque stratégie a contribué à la position. Alors, quelle stratégie (ou deux) a ouvert la position.
Comment dois-je m'y prendre ?
Merci !
Bonjour !
Pouvez-vous m'indiquer la direction de la réponse à votre question ?
J'ai un EA avec deux stratégies qui ouvrent des trades sur des principes différents. Elle a pour résultat final une position commune.
Un peu plus tard, je dois comprendre comment chaque stratégie a contribué à la position. Alors, quelle stratégie (ou deux) a ouvert la position.
Comment dois-je m'y prendre ?
Merci !
Si l'EA a la possibilité de désactiver l'une des stratégies et que vous pouvez modifier le nombre magique dans les paramètres. Ensuite, mettez deux EA sur le compte et désactivez l'une des stratégies dans chacun d'eux et attribuez des nombres magiques différents pour les positions, puis retracez dans l'historique ce qui donne plus de plus ou moins par les nombres magiques.
Merci pour la réponse. J'ai créé des variables statiques qui changent leur valeur si la position de la stratégie est ouverte (à la fermeture et au stop loss, les valeurs changent également). En général, cela fonctionne bien, mais je comprends qu'après avoir redémarré l'EA, il perdra ses ordres.
Pourquoi l'argent ne fait-il pas tic-tac ?
Merci, mon pote... Je vais garder ça en tête.
J'ai des ordinateurs à la cave, ...., je creuse les pots... faisons quelque chose.
Je ne comprends pas pourquoi la fonction renvoie 0 :
En appelant comme ceci par exemple :
n écrit correctement, mais renvoie 0.Je ne comprends pas pourquoi la fonction renvoie 0 :
En appelant comme ceci par exemple :
n écrit correctement, mais renvoie 0.