Bonjour, quelle est la différence entre les deux expressions, et laquelle est la meilleure à utiliser pour limiter le temps de fonctionnement de l'EA ?
Je continue à écrire mon générateur de signaux de trading.
Il y a des erreurs dans la dernière partie du code d'initialisation (en gras)
InitMyCustomIndicator' - La fonction doit avoir un corps.
InitClose" - La fonction doit avoir un corps.
//| включаемые файлы |//+------------------------------------------------------------------+
#property tester_indicator "Blau_Ergodic.ex5"
#include <Expert\ExpertSignal.mqh>
//+------------------------------------------------------------------+//| Класс CSampleSignal. |//| Назначение: Класс генератора торговых сигналов. |//| Является производным от класса CExpertSignal. |//+------------------------------------------------------------------+class CSampleSignal : public CExpertSignal
{
protected:
CiCustom m_TSI; // объект для доступа к значениям TSI
CiClose m_close; // объект для доступа к ценам закрытия баров//--- настраиваемые параметрыint q; // q - период, по которому вычисляется моментумint r; // r - период 1-й EMA, применительно к моментумуint s; // s - период 2-й EMA, применительно к результату первого сглаживанияint u; // u - период 3-й EMA, применительно к результату второго сглаживанияint ul; // ul - (сигнальная линия) период EMA, применительно к эргодикеdouble m_stop_loss; // уровень установки ордера "stop loss" относительно цены открытияdouble m_take_profit; // уровень установки ордера "take profit" относительно цены открытияpublic:
CSampleSignal();
//--- методы установки параметров настройкиvirtualint ShortCondition(); // проверка условия открытия селлаvirtualint LongCondition(); // проверка условия открытия баяvoid Q(intvalue) { q=value; }
void R(intvalue) { r=value; }
void S(intvalue) { s=value; }
void U(intvalue) { u=value; }
void UL(intvalue) { ul=value; }
void StopLoss(doublevalue) { m_stop_loss=value; }
void TakeProfit(doublevalue) { m_take_profit=value; }
//--- метод проверки параметров настройкиvirtualbool ValidationSettings();
virtualbool InitIndicators(CIndicators* indicators);
protected:
//--- метод инициализации объектовbool InitMyCustomIndicator(CIndicators* indicators);
bool InitClose(CIndicators* indicators);
//--- методы доступа к данным объектовdouble Main(int index) { return(m_TSI.GetData(0,index)); }
double Signal(int index) { return(m_TSI.GetData(1,index)); }
double Close(int index) { return(m_close.GetData(index)); }
};
//+------------------------------------------------------------------+//| Конструктор CSampleSignal. |//| INPUT: нет. |//| OUTPUT: нет. |//| REMARK: нет. |//+------------------------------------------------------------------+void CSampleSignal::CSampleSignal()
{
q=2;
r=7;
s=5;
u=3;
ul=5;
}
//+------------------------------------------------------------------+//| Проверка параметров настройки. |//| INPUT: нет. |//| OUTPUT: true-если настройки правильные, иначе false. |//| REMARK: нет. |//+------------------------------------------------------------------+bool CSampleSignal::ValidationSettings()
{
//--- проверка параметровif(q<=0||r<=0||s<=0||u<=0||ul<=0)
{
printf(__FUNCTION__+": период должен быть больше нуля");
return(false);
}
//--- успешное завершениеreturn(true);
}
//+------------------------------------------------------------------+//| Инициализация индикаторов и таймсерий. |//| INPUT: indicators - указатель на объект-коллекцию |//| индикаторов и таймсерий. |//| OUTPUT: true-в случае успешного завершения, иначе false. |//| REMARK: нет. |//+------------------------------------------------------------------+bool CSampleSignal::InitIndicators(CIndicators* indicators)
{
//--- проверка указателяif(indicators==NULL) return(false);
//--- инициализация скользящей среднейif(!InitMyCustomIndicator(indicators)) return(false);
//--- инициализация таймсерии цен закрытияif(!InitClose(indicators)) return(false);
//--- успешное завершениеreturn(true);
}
forexman77: Les cours sont nouveaux pour moi et je ne les comprends pas vraiment. Puis-je utiliser un exemple pour montrer comment faire une définition.
protected:
//--- метод инициализации объектовbool InitMyCustomIndicator(CIndicators* indicators);
bool InitClose(CIndicators* indicators);
.
.
.
bool CSampleSignal::InitMyCustomIndicator(CIndicators* indicators)
{
//здесь надо вписать тело методаreturn(true);
}
bool CSampleSignal::InitClose(CIndicators* indicators)
{
//и здесь тожеreturn(true);
}
Quand metatrader sortira-t-il sur Windows Phone 8 ?
Je continue à écrire mon générateur de signaux de trading.
Il y a des erreurs dans la dernière partie du code d'initialisation (en gras)
InitMyCustomIndicator' - La fonction doit avoir un corps.
InitClose" - La fonction doit avoir un corps.
Je continue à écrire mon générateur de signaux de trading.
Il y a des erreurs dans la dernière partie du code d'initialisation (en gras)
InitMyCustomIndicator' - La fonction doit avoir un corps.
InitClose" - La fonction doit avoir un corps.
Vous essayez d'utiliser des méthodes qui sont déclarées mais non définies.
Les cours sont nouveaux pour moi et je ne les comprends pas vraiment. Pouvez-vous me montrer comment faire une définition avec un exemple.
Les cours sont nouveaux pour moi et je ne les comprends pas vraiment. Puis-je utiliser un exemple pour montrer comment faire une définition.
Donc je ne change que la dernière partie du code que j'ai mis en gras ?
Et je fais ça :
Donc, je ne change que la dernière partie du code que j'ai mis en gras ?
Et je fais ce qui suit :
Si votre code de classe a des méthodes telles que :
Alors ils doivent vérifier quelque chose. Sinon, leur existence n'a pas de raison d'être.
Bonjour !
Comment puis-je configurer une boucle for sur les prix de clôture des barres si je ne sais pas à l'avance combien de barres je dois vérifier ?
J'ai besoin de vérifier une condition, par exemple que les prix de clôture de i barres en arrière, sont inférieurs les uns aux autres.