Wie kann ich den höchsten Preis erhalten, nachdem die Bestellung geöffnet wurde? - Seite 5

 

Sie meinen:

double LastOpenPrice(int ordertype)    { 
double OpenPrice;                            
datetime lastOpen;    
for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)       
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
    &&OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number
    &&OrderSymbol() == Symbol()    // and my pair.
    &&OrderType() == ordertype       
    &&OrderOpenTime() > lastOpen )  {        
            if(OpenPrice = OrderOpenPrice()&&OpenPrice!=0)          
               break;          }
               return (OpenPrice);} //  
Bitte, ich muss Ihre Sulotion sehen
 
Hand:

Bitte, ich muss Ihre Sulotion sehen

NEIN. . . Sie MÜSSEN lernen . . . geben Sie sich zur Abwechslung mal selbst Mühe, lesen Sie das Buch ( https://book.mql4.com// ) lesen Sie die Dokumentation ( https://docs.mql4.com// ) . . . unterschiedliche Magic numbers für long und sort trades zu haben ist idiotisch und NICHT notwendig . . .
 

vielleicht klappt es auf diese Weise .

if ( ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030=0.0030<Bid: TRUE // ich denke es wird funktionieren
{ BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

 
Hand:

vielleicht klappt es auf diese Weise .

if ( ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030=0.0030<Bid: TRUE // ich denke es wird funktionieren
{ BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

Wenn ich frage: "Was ist Ihr Spielplan?", dann meine ich das wirklich ernst. Um es anders zu formulieren, was ist Ihre STRATEGIE?

Wenn Sie NICHT HANDELN wollen, wenn es keinen letzten offenen Preis gibt, können Sie das als solche betrachten?

if(LetzterOffenerPreis(OP_SELL) <=0) { return? was tun? -----case of selling

if(LetzterOffenerKurs(OP_BUY) <=0) { return?...oder was tun? ------ Fall von Kaufen

dann geht der Rest des Codes weiter....

Mit einem solchen Fehler wie diesem, fürchte ich, können Sie die Löcher" hier und da in Ihren Codes nicht füllen. Ihre Strategie sieht ruiniert aus.

Diese Art von Fehler "informiert" Sie darüber, dass Sie Ihre Strategie auf einer höheren Ebene überarbeiten müssen ---> WANN Sie handeln (und wann nicht). Haben Sie Antworten, Ideen, etc. dazu?

 
Hand:

Sie meinen:

Bitte, ich muss deine Sulotion sehen

Ich habe völlig vergessen, das zu erwähnen, aber das ist das Wichtigste für die Gesamtheit, und Ewigkeit der Dinge, bezogen. Es ist einfach der totale Wahnsinn, dass DU auf den Gedanken kommst, MEINE=DEINE Lösung zu sehen, die ich nicht habe.

Wo auf dem Planeten Erde bist Du, was denkst Du, wer ich bin? Dein Schutzengel, Schamane, persönlicher Flaschengeist, etc?

Was auch immer du dir in den Kopf setzt, ich kann dir wirklich nicht helfen, nur zu deiner Information.

 

Leute,

Bitte überprüfen Sie die folgenden Funktionen (ob sie korrekt sind oder nicht), die ich für diese Bedingungen benötige

wenn ( lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell() )>=0.0060

{ etwas tun }

double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_SELL && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = OrderClosePrice();
      }
   }
   
   return(ret);
  }



double beforelastClosedClosePrice()
  {
   double ret = 0;
   double ret2 = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = ret2;
         ret2 = OrderClosePrice();
      }
   }
   if(ret==0) {
      ret = ret2;
   }
   
   return(ret);
  }
 

Ich kann bei der ersten Aufgabe helfen, vielleicht können andere für den Rest einspringen.

<-------------------- can consider to use if(OrdersTotal()>0..then proceed  ---------------->
double lastOpenedOpenPriceBuy()  <----- what a name...confusing, maybe.
  {
   double ret = 0;
   datetime time=0; <---- can consider setting Lowest Limit to -9999, at least -1, rather than 0.  
   for(int i=0; i<OrdersTotal(); i++) { <----- do consider counting down.
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES); <------ This returns some BOOLEAN result.then what? -----(?)
      if(OrderType()==OP_BUY && OrderOpenTime()>time) { <------ This can return runtime OrderSelect ERR bec. of above line (?). ------ (!) 
         time = OrderOpenTime(); 
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);<------ return double as UnNormalized price. you sure about this?
  }

 

Bitte beachten Sie das:

Wenn ich diese Bedingung setze

if (  ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}

funktioniert es nicht, aber wenn ich eine weitere Bedingung hinzufüge

if (  (lastOpenedOpenPriceBuy()>0)&&((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
sieht es gut aus (lastOpenedOpenPriceBuy()>0)
 
<-------------------- kann erwägen, if(OrdersTotal()>0..then proceed---------------->
double lastOpenedOpenPriceBuy() <----- was für ein Name...verwirrend, vielleicht.
{double ret = 0; datetime time=0;<---- kann in Erwägung ziehen, Lowest Limit auf -9999 zu setzen, zumindest -1, statt 0. Keine OrderOpeningTime könnte <= 0for(int i=0; i<OrdersTotal(); i++) { <----- in Erwägung ziehen, runter zu zählen. OrderSelect(i, SELECT_BY_POS, MODE_TRADES); <------ Dies gibt ein BOOLEAN-Ergebnis zurück. -----(?) Wenn in der Schleife, muss die Bestellung existieren, wenn die Bestellung existiert, wird die OrderSelect keinen Fehler verursachen. Wenn nicht in der Schleife, wird diese Zeile nicht ausgeführt.if(OrderType()==OP_BUY && OrderOpenTime()>time) { <------ Dies kann zur Laufzeit OrderSelect ERR wegen der obigen Zeile (?) zurückgeben. ------ (!) Derselbe Grund wie in der letzten Zeile.
time = OrderOpenTime(); ret = OrderOpenPrice
(); } } return(ret);<------ return double as UnNormalized price. you sure about this?In der ersten Zeile ist bereits ret = 0 definiert.}
 

Junge, Junge, Sie sind einfach erstaunlich. Thks for pointing those out esp, this:

OrderSelect(i, SELECT_BY_POS, MODE_TRADES); <------Wenn in der Schleife, muss die Bestellung existieren, wenn die Bestellung existiert, wird die OrderSelect keinen Fehler verursachen. Wenn sie nicht in der Schleife ist, wird diese Zeile nicht ausgeführt.Ich vermute, dass diese Zeile von Ihnen einige Houdini-Kräfte hat, um aus der Schleife zu verschwinden, wenn es keine Aufträge gibt, und wieder aufzutauchen, wenn es welche gibt.