[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 280
Ich kann den Befehl zum Neuzeichnen des benutzerdefinierten Indikators nicht finden. Wenn jemand etwas weiß, bitte ich um Mitteilung. Vielen Dank im Voraus =)
tesla-pip: Ich kann den Befehl zum Neuzeichnen des benutzerdefinierten Indikators nicht finden. Wenn jemand etwas weiß, bitte ich um Mitteilung. Vielen Dank im Voraus =)
Ich habe es bereits gefunden. Vielen Dank an alle =)
Und diese Ordnung der Dinge ist normal (das sind die Prinzipien des Terminals).
Wenn Sie möchten, dass Indikator B seine Anzeigen ändert, wenn sich die Parameter von Indikator A ändern, führen Sie einen Informationsaustausch zwischen den Indikatoren durch (z. B. über eine Datei, globale Variablen des Terminals oder den Arbeitsspeicher des Computers): Indikator A übergibt seine initialisierbaren Parameter während der Initialisierung, und Indikator B prüft in regelmäßigen Abständen mögliche Parameteränderungen von Indikator A. Wenn er Änderungen feststellt, sollte sich auch Indikator B mit neuen Parametern perinitialisieren (forced init()).
Vielen Dank für Ihre Antwort, aber ich kann es nicht verwenden, da ich nicht alles verstehe und nicht sehr gut programmieren kann. Könnten Sie bitte die notwendigen Änderungen an meinen Indikatorcodes vornehmen?
Einen guten Tag an alle. Ich habe ein Problem mit dem Indikator "CurrencyPowerMeter" und kann ihn nicht an eine andere Position im Terminalfenster verschieben. Wenn Sie helfen können, würde ich das sehr gerne tun.
Ich habe beschlossen, Ihnen eine Frage zu stellen, vielleicht können Sie sie mir beantworten. Ich schreibe einen Indikator, in dem Indikator verarbeite ich Ticks auf Ticks Zeitrahmen (die autonom öffnet,diese). Mein Puffer-Array verarbeitet nicht JEDEN Tick, sondern selektiv (z. B. alle 60 Sekunden, aber das ist nicht notwendig). Anstelle von
int counted_bars=IndicatorCounted();
Ich verstehe die folgende Konstruktion:
externint sec=60;//объявляем количество секундint i;//будет индексом текущей "свечи" (тика)int i_prev;//будет индексом предыдущей "свечи" (тика), отстоящего от теущего на sec секунд назадdouble MyBuffer[];//этот будет на чартеdouble MyTemp[];//этот только для подсчётовint init(){
IndicatorBuffers(2);
SetIndexBuffer(0,MyBuffer)
SetIndexBuffer(1,MyTemp)
SetIndexDrawBegin(0,14);
i=Bars-1;
while(Volume[i]-Volume[Bars-1]<sec) i--;//потому что в Volume[] на тиковом у нас время сервера точностью до секунды (а в Time[] - моделируемое для предоставления тиков на чарте)
i_prev=Bars-1;//отошли от первого исторического тика на чарте на заданное количество секунд, запомнили его, запомнили первый, уходим в start()return(0);
}
int start(){
double deltaHigh,deltaLow;
int counted_bars=IndicatorCounted();//честно говоря, не уверен, т.к. считаем мы не все "свечи" (тики)if(counted_bars>=i) i=Bars-counted_bars-1;//аналогичноwhile(i>=0){//цикл обработчика
deltaHigh=High[i]-High[i_prev];//к примеру
deltaLow=Low[i_prev]-Low[i];
//и дальше код обработчика (формируем предварительный массив MyTemp[]). В конце цикла:
i_prev=i;//запоминаем теперь текущий индекс как индекс предыдущего тикаwhile(Volume[i_prev]-Volume[i]<sec){//и уходим вперёд на заданное количество секунд
i--;
}
}
...
Nun die Frage. In der reinen M1-Version ist die nächste Sache Standard.
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;//принтовал, при первом обращении limit=Bars-2, при последующих limit=2for(i=0; i<=limit; i++){
MyBuffer[i]=iMAOnArray(MyTemp, 0, 14, 0, MODE_EMA, i);
Wodurch sollen Limit und counted_bars ersetzt werden? Ich verstehe das so,
int counted_bars=ArraySize(MyTemp)-1;//сразу после цикла while
(weil die Anzahl der Ticks in 60 Sekunden nicht konstant ist, d.h. einfach int counted_bars=IndicatorCounted()/_Anzahl_der_Ticks_in_60_Sekunden_ zu schreiben wird nicht funktionieren).
Oder liege ich mit allem falsch?
p.s. Auf eine mögliche Frage werde ich antworten: Ich weiß, dass auf Forex sec!=60 nicht anwendbar ist, und sec=60 ist bedeutungslos, aber ich handle auch nicht auf Forex.
MK07: Vielen Dank für Ihre Antwort, aber ich kann es nicht verwenden, da ich nicht alles verstehe und nicht gut programmieren kann. Könnten Sie bitte die notwendigen Änderungen an meinen Indikatorcodes vornehmen?
Entschuldigen Sie, haben Sie ein Auto? Wenn Sie eines haben, betrachten Sie es nicht als Luxus, sondern als Notwendigkeit, oder? Wenn nicht, werden Sie es nicht für den Rest Ihres Lebens so belassen, oder? Das ist das Alter, in dem man wissen muss, wie man ein Auto fährt. Ich bin nur ein Landwirt, aber ich tue, was ich tue. Für mich ist Programmieren nicht anders als Gartenarbeit, wie Schlosserarbeiten, die gleiche Arbeit mit meinen Händen (ich lebe auf dem Land). Eine Schubkarre, eine Schubkarre oder MQL4 sind für mich nur Werkzeuge. Vielleicht wird es von Stadtbewohnern anders wahrgenommen, ich weiß es nicht. Globale Variablen im Handbuch hier, Standard-Dateifunktionen hier, schneller diese, aber durch WinAPI. Ich wollte gestern schon antworten, habe es aber nicht getan.
#include <MASSIV.mqh> int start()
{
double Price=iOpen (Symbol (),0,0);
double SL=NormalizeDouble (Price+3000*Point, Digits);
double TP=NormalizeDouble (Price-100*Point, Digits);
double value = Bid ;//параметру value функции ArrayBsearch присваивается значение цены последнего тикаdouble ld_Delta = 0.0010;
int S = ArrayBsearch( mass, value, WHOLE_ARRAY, 0, MODE_ASCEND);//функция возвращает индекс значения цены макс. близкой к цене последнего тика int last_order_bar = 0;
int ot = OrdersTotal();
...............................(остальной код опустил,но он не изменился)
Ich kann den Befehl zum Neuzeichnen des benutzerdefinierten Indikators nicht finden. Wenn jemand etwas weiß, bitte ich um Mitteilung. Vielen Dank im Voraus =)
Ich habe es bereits gefunden. Vielen Dank an alle =)
Guten Tag.
Können Sie mir helfen, eine Formel zu finden?
Ich habe einen Nachfüllschritt SD=100;
Wenn der Kurs 25 beträgt, dann ist die Obergrenze DE=100
Wenn der Preis 102 beträgt, ist der Satz der Einheiten UD=200
bei einem Preis von 215 beträgt der Aufstockungssatz BP=300
der Preis wieder auf 135 gefallen ist, wird die Obergrenze bei UD=200 liegen
Und diese Ordnung der Dinge ist normal (das sind die Prinzipien des Terminals).
Wenn Sie möchten, dass Indikator B seine Anzeigen ändert, wenn sich die Parameter von Indikator A ändern, führen Sie einen Informationsaustausch zwischen den Indikatoren durch (z. B. über eine Datei, globale Variablen des Terminals oder den Arbeitsspeicher des Computers): Indikator A übergibt seine initialisierbaren Parameter während der Initialisierung, und Indikator B prüft in regelmäßigen Abständen mögliche Parameteränderungen von Indikator A. Wenn er Änderungen feststellt, sollte sich auch Indikator B mit neuen Parametern perinitialisieren (forced init()).
Der erste Code ist der Indikator A.
Zweiter Code-Indikator B.
Die letzte Frage wurde gelöst, die neue Frage lautet
Ich lasse den Füllstand bei jedem Takt neu berechnen.
Wie erinnere ich mich an den Pegel des letzten Taktes?
und verwenden Sie es, um einen Handel zu eröffnen
Vielen Dank für Ihre Antwort, aber ich kann es nicht verwenden, da ich nicht alles verstehe und nicht sehr gut programmieren kann.
Sie schlagen vor, dass ich für Sie tun soll, womit Sie "spielen". Tut mir leid, kein Interesse.
Und wenn Sie gerade programmieren lernen, ist das eine interessante Aufgabe für Sie.
int counted_bars=IndicatorCounted();Ich verstehe die folgende Konstruktion:
Nun die Frage. In der reinen M1-Version ist die nächste Sache Standard.
Wodurch sollen Limit und counted_bars ersetzt werden? Ich verstehe das so,
(weil die Anzahl der Ticks in 60 Sekunden nicht konstant ist, d.h. einfach int counted_bars=IndicatorCounted()/_Anzahl_der_Ticks_in_60_Sekunden_ zu schreiben wird nicht funktionieren).
Oder liege ich mit allem falsch?
p.s. Auf eine mögliche Frage werde ich antworten: Ich weiß, dass auf Forex sec!=60 nicht anwendbar ist, und sec=60 ist bedeutungslos, aber ich handle auch nicht auf Forex.
Vielen Dank für Ihre Antwort, aber ich kann es nicht verwenden, da ich nicht alles verstehe und nicht gut programmieren kann. Könnten Sie bitte die notwendigen Änderungen an meinen Indikatorcodes vornehmen?
Guten Tag zusammen!
Ich lerne die Verwendung von Arrays.
Ich habe ein Array, das ich mit Strings initialisiert habe, z.B. double mass [3567]={0.85374 , 0.85694 , 0.85974 , .... };
Und das Programm las das Array und führte es aus.
Jetzt habe ich das gleiche Array in einer Spalte initialisiert
double massi[3567]
{
Masse [ 0] = 0,85374;
Masse [ 1] = 0.85694;
Masse [ 2] = 0. 85974;
Masse [ 3] = 0.86174;
Masse [ 4] = 0,86474;
Masse [ 5] = 0,86494;
Masse [ 6] = 0,86504;
Masse [ 7] = 0,86524;
}
Der Compiler erzeugt keine Fehler, aber eine Warnung.
'{' - Ausdruck im globalen Bereich nicht erlaubt C:\Programmdateien\Alpari NZ MT4(2)\Experten\include\MASSIV.mqh (4, 2)
Das Array wird wie zuvor global deklariert (als es mit Strings initialisiert wurde und gut funktionierte).
Es gibt nur 2 Einträge im Protokoll.
2013.04.12 16:14:44 XXX Test gestartet
2013.04.12 16:14:36 XXX EURUSD,H1: erfolgreich geladen
FRAGE:WARUM LIEST DAS PROGRAMM EIN IN EINER SPALTE INITIALISIERTES ARRAY NICHT.
Ich danke Ihnen.