CyberiaTrader..ein erstaunlicher EA! - Seite 16

 

Erklärung aktualisiert.

Das Kapital wurde in einer Woche fast verdoppelt.

v1.60

Ich werde die Losgröße ab jetzt auf 2 ändern.

Dateien:
statement_2.htm  1653 kb
 

ATR_normalized-Bildschirm

Igor Ich habe vergessen, den Bildschirm von ATR_normalized an die obige Antwort anzuhängen. Hier ist er.

Dateien:
atr_norm.gif  50 kb
 
igorad:
Hallo,

Ich habe versucht, eine normalisierte ATR zu erstellen, aber ich denke, das ist nicht so einfach.

Sie können also versuchen, mit den Eingaben zu spielen.

Igor

PS. Sorry, aber der Fehler war im Code. Behoben.

Igor, vielen Dank für die normalisierte ATR. Es sieht gut aus, mit der Ausnahme, dass es nie unter 30 geht (Skala 0-100). Wenn Sie sich den beigefügten Bildschirm ansehen, werden Sie sehen, dass die iATR auf 0 geht, während die ATR_normalized bei 35 bleibt. In allen Fällen, in denen die iATR auch nur kurzzeitig Null erreicht, bleibt ATR_normalized über 30. Können Sie das bitte beheben? Wäre es nicht auch einfacher, die nativen iATR und iMA zu verwenden? Vielleicht wäre das einfacher und ich kann den Code in CT einfach als Filter verwenden.

 

Hi,

probier mal das hier. Muss OK sein.

Dateien:
 
igorad:
Hallo, versuchen Sie dies. Das muss OK sein.

Ok, ich werde es versuchen. Außerdem konnte ich diese Aufgabe sehr einfach lösen:

double normATR=0;

double maxATR=iATR(Symbol(),Zeitraum(),14,0);

int i;

for(i=1;i<14;i++)

{

if(iATR(Symbol(),Periode(),14,i)>maxATR)

{

maxATR=iATR(Symbol(),Periode(),14,i);

}

}

normATR=(iATR(Symbol(),Periode(),14,0)/maxATR)*100;

Dies scheint auch gut zu funktionieren. Vielen Dank für Ihre Hilfe!!

 
igorad:
Ich teste gerade die letzte Version und habe einige Bugs gefunden, also bitte auf Updates warten.

Igor, können Sie Ihre Version mit den Korrekturen für den PIP-Timer veröffentlichen? In der jetzigen Form funktioniert er nicht richtig. Er startet den PIP-Counter beim Einstieg und verlässt ihn nach Ablauf der Zeit, unabhängig vom erzielten Gewinn. Bitte testen Sie auf Ticks statt auf Sekunden, da die zweite Zählung asynchron mit den eintreffenden Ticks erfolgt. Ich danke Ihnen für Ihren Beitrag.

Hier sind noch einmal die Spezifikationen und auch der Code, den ich bis jetzt habe, so wie Sie ihn ursprünglich geschrieben haben, mit ein paar Modifikationen:

1. Wenn EnablePIPTimer=true;

2. Wenn MinPIPProfit >=X aktiviere TakePIPCountdown (SET auf Input TakePipTimer). Dieser beginnt, in Ticks auf 0 herunterzuzählen.

3. TakePIPCountDown zählt abwärts: 60, 59, 58..Ticks usw.

4. Deklarieren Sie die globale Variable double BestPIPProfit=0; sie enthält den besten PIP-Gewinn, den die Position bisher erzielt hat.

5. Setzen Sie BestPIPProfit=MinPIPProfit zu Beginn;

6. BestPIPProfit=aktueller PIP-Gewinn ermitteln

7. Wenn BestPIPProfit > MinPIPProfit, machen Sie MinPIPProfit = BestPIPProfit (dies wird der minimale PIP-Gewinn sein, der von nun an für diese offene Position aktualisiert wird).

8. Wenn die obige Bedingung #7 eintritt, setzen Sie TakePIPCountDown auf den Anfangswert zurück (TakePipTimer) und aktivieren Sie ihn für die Zählung. Er zählt wieder 60, 59, 58 Ticks usw. bis 0 mit dem neuen MinPIPProfit.

9. Sobald der TakePIPCountDown 0 erreicht, schließen Sie die offene Order sofort.

10. Wenn der aktuelle PIP-Gewinn unter MinPIPProfit fällt, stoppen Sie TakePIPCountDown (und setzen Sie den TakePipTimer auf den ursprünglichen Wert zurück), bis der aktuelle Gewinn wieder >= MinPIPProfit (der höchste erreichte Floor) während dieses Laufs ist

CODE:

int CheckTakeProfitTimer()

{

double _point = MarketInfo(OrderSymbol(),MODE_POINT);

double PipProfit = 0;

if (EnablePipTimer==true)

{

for (int cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

int mode=OrderType();

if ( OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

if (mode==OP_BUY)

PipProfit = MathRound((Bid - OrderOpenPrice())/_point); // Berechne Open Profit/Loss für BUY

sonst

wenn (Modus==OP_SELL)

PipProfit = MathRound((OrderOpenPrice()-Ask)/_point); // Berechne offenen Gewinn/Verlust für SELL

MaxPipProfit = MathMax(PipProfit,MaxPipProfit); // Ermittelt den größten Gewinn, entweder den aktuellen oder den maximalen während des Handels

if (MaxPipProfit >= BestPipProfit) // Prüfen, ob Floor PIP Profit erreicht wurde

{

if (!StartCount1 || ( StartCount1 && BestPipProfit > MinPipProfit)) // keine Zählung im Gange und Mindest-PIP-Gewinn erreicht

{

BestPipProfit=MaxPipProfit; // zurückgesetzt auf den aktuellen maximalen Gewinn, der bisher erreicht wurde

TimerStart1 = CurTime()/1000; // aktuelle Zeit einfrieren

TakePipCountDown = TakePipTimer; // Zähler auf eingestellten Wert initialisieren

StartCount1=true; // Startet den Zähler

}

sonst

if (TimerType == 0) // Zählung läuft..entweder Sekunden oder Tick zählen

{

TakePipCountDown = TakePipTimer - (CurTime()/1000 - TimerStart1); // gewählte Option ist Sekundenzählung

}

sonst

{

TakePipCountDown--; // Die gewählte Option ist die Tick-Zählung

}

} // wenn (MaxPipProfit..

}// if (Order...

} // für

} // in EnablePipTimer

 

Kein Handel in CT 1.85 behoben

Sorry, Leute...es gab einen Fehler in 1.85, der CT 1.85 daran hinderte, nach den schlechten Handelszeiten zu handeln. Ich habe das Problem vorerst behoben, bis die neue Version herauskommt, und ich habe sie 1.85f (behoben) genannt. Bitte verwenden Sie diese Version mit den ursprünglich geposteten 1.85-Voreinstellungen. Diese Version ist identisch mit der Version 1.85 und enthält nur die Korrektur für den fehlenden Handel. Wir hätten dies früher erkennen müssen.

Dateien:
 
fxspeedster:
Tut mir leid, Leute... es gab einen Fehler in 1.85, der CT 1.85 daran hinderte, nach den schlechten Handelszeiten zu handeln. Ich habe ihn vorerst behoben, bis die neue Version herauskommt, und ich habe sie 1.85f (behoben) genannt. Bitte verwenden Sie diese Version mit den ursprünglich geposteten 1.85-Voreinstellungen. Diese Version ist identisch mit der Version 1.85 und enthält nur die Korrektur für den fehlenden Handel. Wir hätten dies früher erkennen müssen.

Ich konnte mir nicht erklären, wie alle anderen so fabelhafte Ergebnisse erzielen konnten, aber ich bekam kaum Aufträge!

 

Hallo!

ich habe einen eigenen PipTimerExpert entwickelt. Dieser Expert kann den Handel nach der von fxspeedster beschriebenen Technik verwalten. Diese Version enthält Zähler für Sekunden und Ticks. Sie können es für CyberiaTrader verwenden.

Dateien:
 
igorad:
Hallo, ich habe einen separaten PipTimerExpert entwickelt. Dieser Experte kann den Handel nach der von fxspeedster beschriebenen Technik verwalten. Diese Version enthält Zähler für Sekunden und Ticks. Sie können es für CyberiaTrader verwenden.

Igor, ich danke Ihnen für Ihre großartige Arbeit. Ich werde diesen Code einbinden und ihn testen. Du bist der Beste!