Ich schreibe weiter an meinem Handelssignalgenerator.
Der letzte Teil des Initialisierungscodes enthält Fehler (fett gedruckt)
InitMyCustomIndicator' - die Funktion muss einen Körper haben
InitClose" - Funktion muss einen Körper haben
//| включаемые файлы |//+------------------------------------------------------------------+
#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: Die Klassen sind neu für mich und ich verstehe sie nicht wirklich. Kann ich anhand eines Beispiels zeigen, wie man eine Definition erstellt?
protected:
//--- метод инициализации объектовbool InitMyCustomIndicator(CIndicators* indicators);
bool InitClose(CIndicators* indicators);
.
.
.
bool CSampleSignal::InitMyCustomIndicator(CIndicators* indicators)
{
//здесь надо вписать тело методаreturn(true);
}
bool CSampleSignal::InitClose(CIndicators* indicators)
{
//и здесь тожеreturn(true);
}
Wann wird Metatrader für Windows Phone 8 verfügbar sein?
Ich schreibe weiter an meinem Handelssignalgenerator.
Der letzte Teil des Initialisierungscodes enthält Fehler (fett gedruckt)
InitMyCustomIndicator' - die Funktion muss einen Körper haben
InitClose" - Funktion muss einen Körper haben
Ich schreibe weiter an meinem Handelssignalgenerator.
Der letzte Teil des Initialisierungscodes enthält Fehler (fett gedruckt)
InitMyCustomIndicator' - die Funktion muss einen Körper haben
InitClose" - Funktion muss einen Körper haben
Sie versuchen, Methoden zu verwenden, die zwar deklariert, aber nicht definiert sind.
Die Klassen sind neu für mich und ich verstehe sie nicht wirklich. Können Sie mir anhand eines Beispiels zeigen, wie man eine Definition erstellt?
Die Klassen sind neu für mich und ich verstehe sie nicht wirklich. Kann ich anhand eines Beispiels zeigen, wie man eine Definition erstellt?
Ich ändere also nur den letzten Teil des Codes, den ich fett gedruckt habe?
Und ich tue dies:
Ich muss also nur den letzten Teil des Codes ändern, den ich fett hervorgehoben habe?
Und ich tue Folgendes:
Wenn Ihr Klassencode Methoden enthält wie:
Dann müssen sie etwas überprüfen. Andernfalls ist ihre Existenz sinnlos.
Hallo!
Wie richte ich eine for-Schleife für Bar-Close-Preise ein, wenn ich nicht im Voraus weiß, wie viele Bars zu prüfen sind?
Ich muss eine Bedingung überprüfen, z.B. dass die Schlusskurse von i Bars rückwärts niedriger sind als die der anderen.