Gogetter EA - Seite 2

 
Maji:
Ehrlich gesagt bin ich mir nicht sicher, ob ich Ihnen da helfen kann. Erstens, weil ich dafür Zeit aufwenden muss, und die ist bei mir im Moment knapp. Zweitens, weil ich bis jetzt die "Indikatoren" alle Zeichnungen machen lasse und noch nie EAs dafür verwendet habe. Es ist möglich, und ich denke, die Theorie ist die gleiche.

Ich glaube, Codersguru hat ein Kapitel über das Zeichnen von Linien, Pfeilen usw. geschrieben. Versuchen Sie, es nachzulesen

Nochmals, Kopieren und Einfügen erfordert immer noch, dass Sie verstehen, was Sie tun. Es geht nichts über Selbsthilfe und Sie beweisen diesen Punkt sehr gut. Machen Sie weiter mit Ihrer harten Arbeit.

Ok, du hast mich erwischt, ich werde etwas Anerkennung für harte Arbeit akzeptieren. TGIF!! Ich habe mich wie ein Besessener damit befasst. Ich verdiene eine Pause.

Die Sache mit dem Zeichnen mit Indikatoren ... Es ist mir eigentlich egal, WIE es erreicht wird (bis zu einem gewissen Punkt), nur dass es erreicht wird ... Wenn ein Indikator gemacht werden kann, der Pfeile auf dem Chart für Eröffnungen und Schließungen setzt, nehme ich an, dass das auch funktionieren würde ... Ich finde, dass mein Live-Konto alles im Tester ganz von selbst zeichnet, ohne dass ich ihm sage, etwas zu tun ... mein Demo-Konto auf der anderen Seite ... hat Probleme

Ich mache mir mehr Sorgen um das Timing bei mehreren Trades... verbessert sich das, wenn ich den "Tick-Modus" verwende? Ich habe mir das im Vorwärtstest angesehen, und es macht einen Handel pro Bar, was dazu führen kann, dass die Trades NACH dem Signal ein ganzes Stück auseinander liegen. Wenn ich auf ein Signal hin 5 Positionen eröffne, möchte ich, dass diese auf das Signal hin gehandelt werden und nicht über eine halbe Stunde nach dem Signal verteilt sind...(rolleyes)

 

Build 1.01 -Lang

Dies hat ein Signal, das ich ein wenig überarbeitet habe und das funktioniert. Es gibt jetzt einige Unterschiede mit dem gogetshorts mit den gleitenden Durchschnitten verwendet und einige der Signal-Logik ... Ich zog das Signal aus dem ursprünglichen gogetter, die auf Longs arbeitete und spielte mit ihm ein wenig mehr.

Dies mag die GPB/USD 5mTF am besten. Es ist ziemlich viel Abstürze auf den anderen Zeitrahmen.

genießen, bitte posten Sie Ihre Ergebnisse/Probleme etc.

Dateien:
 
eric79:
Hallo. Herzlichen Glückwunsch zu der schön aussehenden Kurve. Ich denke, eine Sache, die verbessert werden könnte, ist die Modellierungsqualität des Tests. 90% wären besser.

Bei den GGs 2.11 komme ich dem sehr nahe.

Ich bin es nicht gewohnt, die Versions- und Build-Nummern zu verwenden... da dies mein erstes Projekt ist... Das wurde von Graham aus dem Factoid-Forum hinzugefügt... es ist eine weitere Sache, die man im Auge behalten muss....diese sollten jetzt die aktuellen Build- und Versionsnummern im Diagrammfenster haben... dieselbe Logik und derselbe Code, nur eine bessere Kosmetik.

Ich lasse sie beide in der Demo vorwärts testen, während wir an Verbesserungen arbeiten.

Dateien:
 

Ich würde gerne noch zusätzliche Einstiegssignale und Parameter innerhalb dieser...

 

Ich finde es wirklich seltsam, wenn etwas an einem Tag funktioniert und am nächsten nicht, und ich habe keine Änderungen vorgenommen, die ich sehen kann...

Mein EA im Strategietester reagiert jetzt NICHT mehr, wenn ich die "maxopentrade"-Einstellung ändere... er verwendet zwei Trades, egal was ich sage, wenn ich ihm "0" sage, verwendet er immer noch zwei Trades... er hat früher gut funktioniert, sogar heute, und jetzt hat er plötzlich beschlossen, dass er immer zwei offene Trades zulässt, egal was ich ihm sage....

Letzte Woche, als ich ihm sagte, es solle 5 Trades auf einmal zulassen, ließ es 5 Trades auf einmal zu, und als ich ihm sagte, es solle 1 Trade auf einmal zulassen, ließ es einen Trade auf einmal zu.... Ich habe gesehen, wie es funktioniert hat!

Jetzt kann ich es nicht mehr zum Laufen bringen. Was ist los?

Ich dachte, ich hätte vielleicht eine Klammer oder etwas in der if MaxOpenTrade-Zeile verloren...

TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0); [/PHP]

so I changed it to this...

[PHP] TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade){

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

keine Verbesserung, das MaxOpenTrade-Kontrollelement wird immer noch ignoriert.

Ok, es hilft, wenn ich mir merke, welches der beiden Signale ich ändere....lol, wenn ich nur Signal Nr. 2 verwende und die Einstellung für Signal Nr. 1 ändere, macht das Sinn, oder?

Ja, ich verliere meinen Verstand.

 
for (int o = 0; o <= MaxOpenTrade; o ++)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

return(0);

Was dies nicht tut, ist die Änderung der Aufträge zur gleichen Zeit... Ich schätze, ich muss etwas Ähnliches mit der Funktion zum Ändern von Aufträgen tun, damit sie alle zur gleichen Zeit geändert werden...

 

Ich bin mir nicht sicher, aber ich glaube nicht, dass dies der richtige Weg ist, um das zu tun, was Sie tun wollen.

Verwenden Sie die folgende Funktion:

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

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

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

Rufen Sie sie in Ihrem Programm wie folgt auf

if CountTrades<MaxTrades then....

Geben Sie auch die Gewohnheit auf, in einer "for"-Schleife hochzuzählen, und verwenden Sie einen Countdown-Stil. Dies ist nützlich, wenn Sie versuchen, Geschäfte abzuschließen, und führt im Allgemeinen zu einem konsistenteren Programmierstil.

Viel Glück!

 

ok ich habe das getan, ich aktualisiert alles in der GGlongs Ea mit der CountTrades() auch die vorherige CloseAll() Sache, die Sie früher getan haben, die mit der OrdersTotal()...So ALLES in diesem bestimmten Build ist jetzt abwärts zählen statt aufwärts zählen ich diese Funktion viel aufrufen.

EA scheint jetzt zu funktionieren ok, um mehrere Aufträge zur gleichen Zeit zu öffnen und zu s / l sie oder t / p sie zur gleichen Zeit...

Ändern sie auf der anderen Seite....das ist unberechenbar und nicht ändern sie alle zur gleichen Zeit...

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

[/PHP]

something about this doesn't work right...however when I do this although it becomes crazy it ends up being more profitable...

this is the code for the 'altered' version that corresponds to the test reports below...when it's like this basically it doesn't modify anything at all....

//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

this is the code that corresponds to the 'unaltered' reports below... This modifys but not as I imagine it should doing them all at the same time....

[PHP]//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

//for (int t = 0; t < MaxOpenTrade; t ++)

//if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

//return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

Auch wenn mir die Art und Weise der Modifizierung laut Bericht nicht gefällt, so ist sie doch sehr viel profitabler....

Vielleicht ist es am Ende besser, es so zu belassen, aber ich möchte wissen, wie ich sie alle gleichzeitig ändern kann, wie es bei den Eröffnungen und Schließungen der Fall ist.

 

Jetzt jetzt jetzt... Sie haben so weit kommen... so denken Sie hart... Sie haben die counttrades Code, also warum nicht ändern Sie es, um die Bestellung ändern Zeug... so etwas wie dieses...

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

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

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Sie haben die Grundlagen gelegt, und jetzt ist es an Ihnen, den Rest herauszufinden.

Viel Glück!

 
Maji:
Jetzt jetzt jetzt... Sie haben so weit kommen... so denken hart... Sie haben die counttrades Code, also warum nicht ändern Sie es, um die Bestellung ändern Zeug... so etwas wie dieses...

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

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

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Sie haben die Grundlagen gelernt, und jetzt müssen Sie den Rest herausfinden.

Viel Glück!

Das funktioniert...siehe Anhang...

Die .htm-Datei war zu groß, um sie hochzuladen... es genügt zu sagen, dass sie jeden Auftrag modifiziert, der zur gleichen Zeit abwärts zählt....es ist sogar einigermaßen profitabel nicht schlecht für dieses verflixte Signal.

Dateien:
Grund der Beschwerde: