Hilfe bei der Codierung - Seite 100

 
dasssi:
mladen

zuerst hoffe ich, dass du mir nicht mehr böse bist..

zweitens habe ich einen Fehler beim Versuch, den EA zu laden

dasssi

Versuchen Sie, den EA umzubenennen (wegen des französischen Buchstabens im Namen könnte er ein Problem verursachen - kein anderes Problem kann die Ursache dafür sein, da es sich um einen sehr einfachen EA handelt)

 

danke, es funktioniert jetzt/

sieht auf dem Strategietester nicht gut aus

 
dasssi:
Danke, es funktioniert jetzt/ sieht auf dem Strategietester nicht gut aus

Es ist nur ein Beispiel, wie ein Indikator von einem EA aufgerufen werden sollte, wenn es um Signale geht. Weit davon entfernt, ein kompletter EA zu sein (sehen Sie sich die neuen EAs im Elite- und Advanced-Bereich an und vergleichen Sie den Code - Sie werden sehen, was ich meine). Es war also nur eine Hilfe für After-rage, um sein Programmierproblem zu lösen

 

Vielen Dank dafür! Es funktioniert gut für die Eingabe von Positionen. Ich weiß nicht, warum mein EA nicht funktioniert, aber das ist egal. So versuche ich, Code hinzufügen, um Aufträge zu schließen, aber es funktioniert nicht zu. Seltsam, weil ich nahm wie Struktur-Code für die Eingabe von Positionen und ich nur das Volumen der Menge verdoppeln. Können Sie einen Blick haben?

Dateien:
 
After-rage:
Vielen Dank dafür! Es funktioniert gut für Enter-Positionen. Ich weiß nicht, warum mein EA nicht funktioniert hat, aber das macht nichts. Also habe ich versucht, Code zum Schließen von Aufträgen hinzuzufügen, aber auch das funktioniert nicht. Seltsam, weil ich nahm wie Struktur-Code für die Eingabe von Positionen und ich nur das Volumen der Menge verdoppeln. Können Sie einen Blick haben?

Nach-Wut

Eine Möglichkeit, das zu tun (eine geöffnete Order zu schließen, wenn sich das Signal ändert), ist jetzt im Code

Dateien:
 

Ich danke Ihnen vielmals! Es funktioniert sehr gut. Ich werde daran arbeiten und sehen, warum ich falsch war.

 

Weiß jemand, ob es möglich ist, eine Indikator-Einstellung auf Ausführungszeit über Code zu ändern? zum Beispiel möchte ich einen CCI haben, wo der Zeitraum gleich der ATR ist, so dass, wenn die ATR ändern die CCI-Periode ändern sowie... wie init der Indikator bei jedem neuen bar. Das Problem ist, dass ich nicht weiß, wie ich den Indikator per Code neu starten kann. Ich habe versucht, init() aufzurufen, wenn der neue Balken geöffnet ist und die Periode sich korrekt ändert, aber der Indikator lässt sich nicht aktualisieren... der Wert des letzten Balkens ist korrekt, aber ich möchte, dass der gesamte Indikator mit den neuen Einstellungen neu gezeichnet wird... ich hoffe, ich war deutlich... Danke

 
AtApi:
Weiß jemand, ob es möglich ist, eine Indikatoreinstellung zur Ausführungszeit per Code zu ändern? ich möchte z.B. einen CCI haben, dessen Periode gleich der ATR ist, so dass, wenn sich die ATR ändert, sich auch die CCI-Periode ändert... so wie der Indikator bei jedem neuen Bar neu gestartet wird. Das Problem ist, dass ich nicht weiß, wie ich den Indikator per Code neu starten kann. Ich habe versucht, init() aufzurufen, wenn der neue Balken geöffnet ist und die Periode sich korrekt ändert, aber der Indikator lässt sich nicht aktualisieren... der Wert des letzten Balkens ist korrekt, aber ich möchte, dass der gesamte Indikator mit den neuen Einstellungen neu gezeichnet wird... ich hoffe, ich war deutlich... Danke

Wenn Sie die gesamten Indi-Werte neu malen wollen, setzen Sie einfach die Anzahl der Hauptschleife am Anfang auf Bars-1 und berechnen Sie die Werte mit neuen Einstellungen.

 

Vielen Dank mladen für deine schnelle Antwort...

bitte sehen Sie sich dieses Beispiel an:

extern int IndicatorPeriod = 10;

extern int AtrPeriod= 10;

extern bool DynamicPeriod = TRUE;

int init()

{

if (DynamicPeriod)

{

double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);

IndicatorPeriod = atr;

}

}

int start()

{

datetime lastBarOpenTime;

datetime thisBarOpenTime = Time[0];

if (DynamicPeriod)

{

if(thisBarOpenTime != lastBarOpenTime)

{

lastBarOpenTime = thisBarOpenTime;

init();

}

}

int i,counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

// is this what you are talking about?

int limit=MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--) //MAIN LOOP

{

wherever calculation

}

}

 
AtApi:
Vielen Dank mladen für deine schnelle Antwort...

sehen Sie sich bitte dieses Beispiel an:

extern int IndicatorPeriod = 10;

extern int AtrPeriod= 10;

extern bool DynamicPeriod = TRUE;

int init()

{

if (DynamicPeriod)

{

double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);

IndicatorPeriod = atr;

}

}

int start()

{

datetime lastBarOpenTime;

datetime thisBarOpenTime = Time[0];

if (DynamicPeriod)

{

if(thisBarOpenTime != lastBarOpenTime)

{

lastBarOpenTime = thisBarOpenTime;

init();

}

}

int i,counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

// is this what you are talking about?

int limit=MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--) //MAIN LOOP

{

wherever calculation

}

}

AtApi

Wenn Sie Werte im Puffer speichern wollen (einen Wert pro exaktem Zeitpunkt für diesen Balken), dann ja, das ist der richtige Weg. Aber wenn Sie wollen, dass alle Balken "neu gemalt" werden, dann setzen Sie die Linit immer gleich aufBars-1

Grund der Beschwerde: