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

 

Ich habe das erste Problem behoben (ich habe einen Fehler gemacht , danke diostar)

// i shoud put if(OrdersTotal()>0){
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) ) )" ) ;}

}

für die zweite:

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell() )>=0.0060) &&( lastClosedClosePrice()<beforelastClosedClosePrice()) )
{ CLOSESHORT("EURUSD") ;}

Ich weiß nicht, was ich tun soll:

zu Ihrer Information die CLOSESHORT Funktion ist:

int CLOSESHORT(string symbol_c) {
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
return(0);
}


Dank

 

Ich bin jetzt verwirrt.

Beziehen Sie sich auf die erste Funktion lastOpenedOpenPriceBuy()

Ich kann mich im Moment nur damit beschäftigen. Also, welche Korrekturen hast du genau vorgenommen. Wie sieht der Code jetzt aus?

 
diostar:

Ich bin jetzt verwirrt.

Sie sind nicht der Einzige ... verschwenden Sie nicht länger Ihre Zeit.
 
RaptorUK:
Du bist nicht der Einzige ... hör auf, deine Zeit zu verschwenden.

Weißt du, dieser Thread ist wahrscheinlich einer der längsten. Und nach 6 Seiten, verwirrt. Nein, ich sage immer noch, dass das keine "Verschwendung" ist.

(Es bedeutet einfach, dass es Zeit für eine neue Richtung, ein neues Leben, einen neuen Anfang ist. Für jeden.)

 
Ich habe auch Zeit auf diesen Thread verwendet, ich habe Code hinzugefügt und Vorschläge gemacht. ... wenn man das Pferd zum Wasser schleppt, es mit Heu aromatisiert und ein paar Äpfel hinzufügt und das Pferd trotzdem nicht trinken will, ist es an der Zeit zu erkennen, dass das Pferd nicht trinken will ... es will einen intravenösen Tropf für seine Wasseraufnahme ... an diesem Punkt ist das Pferd, soweit es mich betrifft, auf sich allein gestellt.
 
RaptorUK:
Ich habe auch Zeit auf diesen Thread verwendet, ich habe Code hinzugefügt und Vorschläge gemacht . . wenn man das Pferd zum Wasser schleppt, es mit Heu würzt und ein paar Äpfel hinzufügt und das Pferd immer noch nicht trinken will, ist es an der Zeit zu erkennen, dass das Pferd nicht trinken will ... es will einen intravenösen Tropf für seine Wasseraufnahme ... an diesem Punkt ist das Pferd, soweit es mich betrifft, auf sich allein gestellt.

Ich verstehe. Die endgültige Belohnung mag nicht so "bestimmt" sein, wie das Pferd zu ernähren, aber die Belohnung für diejenigen, die es versucht haben, muss etwas anderes sein.

Danken Sie dem Pferd dafür.

 

Danke diostar für deine Hilfe.

jetzt habe ich 85% der Fehler behoben. mal sehen:

1- wir haben 4 Funktionen erstellt (siehe am Ende dieser Seite)

*lastOpenedOpenPriceBuy()

* lastOpenedOpenPriceSell()

*lastClosedClosePrice()
*beforelastClosedClosePrice()

2- Das erste Problem trat auf, als wir verwendet haben:

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) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+0.0030)<MarketInfo("EURUSD",MODE_BID))  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}

Wir korrigieren es durch Hinzufügen von :

if(OrdersTotal()>0){
  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) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+0.0030)<MarketInfo("EURUSD",MODE_BID))  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}
  }

3- Das zweite Problem ist:

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)&&(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))
         &&(lastClosedClosePrice()< beforelastClosedClosePrice()) )  
   {  CLOSESHORT("EURUSD") ;}

Wenn ich &&(lastClosedClosePrice()< beforelastClosedClosePrice()) entferne , wird alles gut.

kein Problem mit :

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

*(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))

das einzige Problem kommt mit &&(lastClosedClosePrice()< beforelastClosedClosePrice())

Nehmen wir ein Beispiel:

Wenn Auftrag Nr. 5 geöffnet und verkauft wurde, dann Auftrag Nr. 6 geöffnet und geschlossen wurde, dass der Auftrag zum Kauf bestimmt war, dann wurde Auftrag Nr. 7 geöffnet und zum Kauf bestimmt.

Der Fall wird sein (lastClosedClosePrice()< beforelastClosedClosePrice())

( Order Nummer 6 < Order Nummer 4 ) // da Order Nummer 5 noch nicht geschlossen wurde.

Was soll ich tun? Ich weiß es nicht. Ich habe versucht, if(OrdersHistoryTotal()>0){dannalle Bedingungen einzufügen, aber es geht nicht }

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);
  }
 
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);
  }

Dies wurde NICHT von mir vorgeschlagen, und "wir" haben dies nicht geschaffen. Das ist zu 100 % Ihr Werk.