Bitte informieren Sie mich über die Verbreitung - Seite 3

 
EA starts 
---> Does nothing till there is 0 or 1 order 
----> Makes a 'call open sound' when 2nd order gets triggered 
----> Closes both orders at X amount of pure profit [after considering spread] and makes a 'call close sound' ]

of course, call open and call close sound files can be any small wave files.. easily available on mt4 itself. .. 
I think these things can be achieved in the above EA that I had posted by changing a few things !
Wow ... was Sie wollen, ist im Grunde ziemlich einfach zu codieren.
 
deysmacro:
Wow .. was Sie wollen ist im Grunde ziemlich einfach zu codieren.


Können Sie mich dazu führen? Ich habe bereits diese von Web

//+------------------------------------------------------------------+
//|                    CloseTrades_After_Account_Profit_Reached.mq4  |
//|                                     Copyright © 2007, Tradinator |
//|                                          tradinator.fx@gmail.com |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Tradinator"
#property link      "tradinator.fx@gmail.com"


                                       
extern double My_Money_Profit_Target=100;     //The amount of money profit at which you want to close ALL open trades.
extern string Profit_Target= "Enter above To Close all OPEN trades when amount of profit is Reached in Account and not per OPEN trade! ";
                                          
int Slippage=5;
int i;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start()
{
if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
          {
          //Close opened long positions
          case OP_BUY  : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
                         break;
               
          //Close opened short positions
          case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);
                          
          }
          
       if(result == false)
          {
            Sleep(0);
          }  
       }
      Print ("Account Profit Reached. All Open Trades Have Been Closed");
      return(0);
   }  
   
   Comment("Balance: ",AccountBalance(),", Account Equity: ",AccountEquity(),", Account Profit: ",AccountProfit(),
           "\nMy Account Profit Target: ",My_Money_Profit_Target);
   
  return(0);
}

Nun, ich habe es sehr deutlich gemacht, dass ich kein Coder bin, aber ich denke, ich brauche einige Zeile unter "int start()", die Anzahl der AUSGEFÜHRTEN [nicht schwebenden] Aufträge zählt und geht dann auf den nächsten Code nur, wenn sie 2 sind und führt den Rest des Codes. if (AccountProfit()>= My_Money_Profit_Target)... etc

richtig? Wie kann man eine solche Zeile in MQL sagen?

int start()
{
 {
   if (Ordertotal()<=1)  ------>   See , something here which says only execute lower code if total executed orders are two else dont go to lower code.. I know that syntax is totally busted, trying to push the concept                                                                                                             
                                   as a weak non coder mind ;( .. so till total open orders are less than or equal to 1 means not 2, the code below that line wont come into play !         

      if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
 
thrdel:

Ja deVries,

alles scheitert und ich sollte das nicht tun, wenn du das sagst, aber da ich in deiner Antwort wirklich keine große Hilfe sehe .....

Du verstehst schon, dass der Code kein kommerzieller EA ist, der an einen pingeligen Kunden verkauft werden soll, oder? Wir versuchen, eine Lösung zu finden, und wenn du nicht helfen willst, solltest du es wenigstens lassen.

Meinen Sie wirklich, dass wenn ich den Zeitrahmen mehrmals ändere..... was? Der Slippage wird 3000000 sein? In meinem MT4 anscheinend nicht. Und wenn Sie mir nicht glauben, machen Sie selbst einen Test.

Mein Test besagt, dass der EA beim Wechsel des Zeitrahmens einen Deinit-/Init-Zyklus durchläuft, und da der erwähnte Code im OnInit enthalten ist, liegt der Slippage jedes Mal genau bei 30 Punkten.

Wie jeder sehen kann, ändern Zeitrahmen wird nicht bringen die Slippage auf eine Million, wenn das ist, was Sie vorschlagen.

Und nein, es ist kein gefälschtes Bild, es ist echt, Sie können die Zeit des Wechsels jedes Zeitrahmens überprüfen.

Hoffentlich hilft es.


Das funktioniert nicht .....

für viele Trades ist prc nicht der richtige Preis

Was haben Sie dazu zu sagen...

Lesen Sie Double Calls zu OnInit() und OnDeinit()

es gibt Probleme mit neuen Versionen

(Das doppelte OnInit()-Problem scheint in Build 628 behoben zu sein, aber ich habe diese Version noch nicht)

 
deVries:

dies scheitert .....

für viele Geschäfte ist prc nicht der richtige Preis

Was haben Sie dazu zu sagen...

hehehe, jetzt seid ihr zwei tief in den Kaninchenbau eingetaucht und diskutiert über etwas, das mir die Vögel über den Kopf fliegen lässt! xD ... könntest du dir bitte diese lahme Codezeile ansehen, die ich hinzugefügt habe? =D

 
tatyawinchu:

hehehe, jetzt seid ihr beide tief in den Kaninchenbau eingetaucht und diskutiert über etwas, das mir die Vögel über den Kopf fliegen lässt! xD ... könntet ihr euch bitte diese lahme Codezeile ansehen, die ich hinzugefügt habe? =D


Korrekt Ask und Bid sind die Preise des chartSymbols, wenn der Handel ein anderes Symbol ist, ist closingprice falsch

       if(result == false)
          {
            Sleep(0);
          }  

Welche Auswirkung wird das haben?

Schlägt es fehl??? OrderType ist pending trade?

oder schlägt das Schließen fehl

in diesem Fall müssen Sie den letzten Fehler GetLastError() erhalten, um den Grund zu kennen

 
tatyawinchu:

EA startet ---> Tut nichts, bis es 0 oder 1 Order gibt ----> Macht einen 'call open sound', wenn die 2. Order ausgelöst wird ----> Schließt beide Orders mit X Betrag des reinen Gewinns [nach Berücksichtigung des Spreads] und macht einen 'call close sound' ]

Natürlich können die Call-Open- und Call-Close-Sounddateien beliebige kleine Wave-Dateien sein, die auf mt4 selbst leicht verfügbar sind. ... Ich denke, diese Dinge können in der oben genannten EA erreicht werden, dass ich durch die Änderung ein paar Dinge gepostet hatte! hehehe helfen Sie mir plz =D

Hallo tatyawinchu,

Ich glaube, du hast nicht ganz verstanden, was der gepostete EA macht. Lass mich dich Schritt für Schritt durchgehen und du entscheidest, ob du ihn für deinen Zweck verwenden kannst oder nicht.

Der Stop-Loss, der auf dem Konto basiert, ist dazu da, jeden zu schützen, der ihn verwenden möchte, und ich würde niemals empfehlen, ohne zumindest einen Notstopp auf dem Markt zu sein. Wenn Sie 10 000 auf Ihrem Konto haben und alles riskieren möchten, setzen Sie das StopLossLimit einfach auf 10 000.

Ihre Entscheidung.

Nun zurück zum Code, es ist so einfach wie 1, 2, 3 :

1. Wenn Sie den Code in der OnTick-Funktion lesen - das ist der Teil, der bei jedem Tick ausgeführt wird - werden Sie sehen, dass das erste, was er tut, ist : CountMyOrders. Ich hoffe, Sie sehen das. Wenn myOrders <1 ist, bedeutet das, dass es noch keine Aufträge gibt, der Kontostand wird überprüft, gespeichert und das war's.

Tut nichts anderes. Nächster Tick, wenn immer noch keine Aufträge, zurück zu warten. Ziemlich langweilig, ein EA zu sein, nicht wahr?

Wenn eine Order platziert wird, ist myOrders<1 nicht mehr wahr, also springt er beim nächsten Tick in die nächste Zeile und berechnet den Gewinn für die Order oder die Orders, die auf dem Markt sind.

Als Nächstes wird die Summe der Gewinne aller Aufträge mit dem Zielgewinn verglichen.

Ganz einfach, oder? Wenn der Gewinn das Ziel erreicht, steht in der nächsten Zeile : ExitAll . Und es erscheint eine Meldung (mit Ton) auf dem Bildschirm, die Ihnen mitteilt, dass die Aufträge ihr Ziel erreicht haben!

War doch gar nicht so schlimm, oder?

Und ich vergaß zu erwähnen, dass das Programm Sie aus dem Markt nimmt, wenn der Markt sich gegen Sie wendet und der Verlust des Eigenkapitals das voreingestellte Niveau erreicht, um das verbleibende Kapital zu schützen.

Und das ist die beste Hilfe, die ich Ihnen geben kann.

Wenn Sie mehr als das brauchen, ist das wahrscheinlich eine Aufgabe für die Jungs, die sich mit mehr kundenspezifischem Code als diesem beschäftigen.

Ich hoffe, es hilft Ihnen.

Vielen Dank

 
thrdel:

Hallo tatyawinchu,

ich glaube, Sie haben nicht ganz verstanden, was der gepostete EA macht. Lassen Sie mich Sie durch Schritt für Schritt und Sie entscheiden, ob es etwas ist, die Sie verwenden können oder nicht für Ihren Zweck.

Der Stop-Loss, der auf dem Konto basiert, ist dazu da, jeden zu schützen, der ihn verwenden möchte, und ich würde niemals empfehlen, ohne zumindest einen Notstopp auf dem Markt zu sein. Wenn Sie 10 000 auf Ihrem Konto haben und alles riskieren möchten, setzen Sie das StopLossLimit einfach auf 10 000.

Ihre Entscheidung.

Nun zurück zum Code, es ist so einfach wie 1, 2, 3 :

1. Wenn Sie den Code in der OnTick-Funktion lesen - das ist der Teil, der bei jedem Tick ausgeführt wird - werden Sie sehen, dass das erste, was er tut, ist : CountMyOrders. Ich hoffe, Sie sehen das. Wenn myOrders <1 ist, bedeutet das, dass es noch keine Aufträge gibt, er prüft den Kontostand, merkt ihn sich und beendet ihn.

Tut nichts anderes. Nächster Tick, wenn immer noch keine Aufträge, zurück zu warten. Ziemlich langweilig, ein EA zu sein, nicht wahr?

Wenn eine Order platziert wird, ist myOrders<1 nicht mehr wahr, also springt er beim nächsten Tick in die nächste Zeile und berechnet den Gewinn für die Order oder die Orders, die auf dem Markt sind.

Als Nächstes wird die Summe der Gewinne aller Aufträge mit dem Zielgewinn verglichen.

Ganz einfach, oder? Wenn der Gewinn das Ziel erreicht, steht in der nächsten Zeile : ExitAll . Und es erscheint eine Meldung (mit Ton) auf dem Bildschirm, die Ihnen mitteilt, dass die Aufträge ihr Ziel erreicht haben!

War doch gar nicht so schlimm, oder?

Und ich vergaß zu erwähnen, dass das Programm Sie aus dem Markt nimmt, wenn der Markt sich gegen Sie wendet und der Verlust des Eigenkapitals das voreingestellte Niveau erreicht, um das verbleibende Kapital zu schützen.

Und das ist die beste Hilfe, die ich Ihnen geben kann.

Wenn Sie mehr als das brauchen, ist das wahrscheinlich eine Aufgabe für die Jungs, die sich mit mehr kundenspezifischem Code als diesem beschäftigen.

Ich hoffe, es hilft Ihnen.

Vielen Dank


Es sieht so aus, als ob wir uns auseinanderleben würden.

Meine genaue Anforderung ist wie folgt:-

Schritt 1 EA startet.

Schritt 2 EA prüft den aktuellen Kontoprofit, damit er den Startpunkt für die Berechnung kennt.

Schritt 3 EA prüft auf laufende offene Aufträge [nicht schwebend].

Schritt 4 EA tut nichts, wenn es keinen laufenden Auftrag gibt ODER nur EINEN laufenden Auftrag.

Schritt 5 EA macht ein Geräusch, wenn der ZWEITE Auftrag ausgelöst wird. Dieser zweite Auftrag wird auf einem anderen Paar sein.

Schritt 6 EA schließt BEIDE Orders mit X Gewinn, nachdem er den SPREAD berücksichtigt hat und macht einen Sound.... hier sollten ALLE offenen Orders sein .. muss nicht die schwebenden Orders löschen

Was der EA nicht braucht .. SL oder TP-Einstellung jeglicher Art..

Vorzugsweise sollte EA auf Aufträge mehr als zwei arbeiten, aber nicht benötigt, wenn es zu schwierig.

[Obwohl ich logischerweise das Gefühl habe, dass es nicht schwierig sein wird, eher sehr einfach, weil EA aktiviert, um ALLE offenen Aufträge zu schließen, wenn sie MEHR als 1 sind ... das heißt 2 oder MEHR automatisch! so, dass kann bereits von EA abgedeckt werden.. korrigieren Sie mich, wenn falsch!]

 
deysmacro:
Wow ... was Sie wollen, ist im Grunde ziemlich einfach zu codieren.

Du bist witzig. Subtil, aber witzig.
 
thrdel:

Sie sind lustig. Subtil aber lustig.

was, wenn ich eine IF-Schleife hinzufügen kann und dann den Rest des Codes unten einfügen, der die Schleife startet?

Die IF-Bedingung sollte prüfen, die OrdersTotal zu sein => 2, so dass die Kontrolle übergeben wird, um alle offenen Aufträge bei X Gewinn nach Spread zu schließen?

Wie kann ich EA anweisen, in bestimmten Fällen nichts zu tun?

Sagen wir, ich tue das Folgende

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start() 
{
if (OrdersTotal()=>2)                                     // Can this work? Can a function be directly called like this?
} 
{
 if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
Ok, cant seem to get out of this box yet ! hehe need to know forum stuff more ! but, as you can see above, if that "if (OrdersTotal()=>2)" is valid, it would directly solve my problems .. because the rest of
the stuff would be executed only if the total running market orders are 2 ! =D ..  and some forum guru please release this text from this src prison box ! ;)
 
Sie müssen jedoch bedenken. Der EA schließt nur laufende Trades ab. Sie müssen den Handel selbst eröffnen.
Grund der Beschwerde: