[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 289

 

Nun, im Grunde die Strategie selbst ist sehr lang und komplex, und es hat keinen Sinn, es zu beschreiben, es ist 1 Punkt, um eine Schleife zu erstellen, dh ich brauche, um etwas anstelle von insgesamt==1, die nicht öffnen Sie eine Position, die nicht mit dem Antrag, dh wenn es schließt auf st dann .........open 1, wenn geschlossen auf ......... тп öffnen 2, die Bedingung Mangel an einen Auftrag auf dem Markt, das ist alles,

 
FoxUA:

Nun, im Grunde die Strategie selbst ist sehr lang und komplex, und es hat keinen Sinn, es zu beschreiben, es ist 1 Punkt, um eine Schleife zu erstellen, dh ich brauche, um etwas anstelle von insgesamt==1 zu finden, die nicht öffnen Positionen, die nicht mit dem Antrag, dh wenn es schließt auf st dann .........open 1, wenn geschlossen auf ......... тп öffnen 2, die Bedingung Abwesenheit Aufträge im Markt, das ist alles,


Dann wollen Sie die Funktion von Igor einfach nicht verwenden. Sie benötigen eine Funktion, die den Typ des letzten abgeschlossenen Auftrags und den Grund für dessen Abschluss zurückgibt. Der Grund für den letzten abgeschlossenen Auftrag eines bestimmten Typs wird nicht zurückgegeben. Ich werde versuchen, mir jetzt etwas einfallen zu lassen...

 
Figar0:


Dann passen Sie einfach nicht in die von Ihnen verwendete Funktion von Igor. Sie benötigen eine Funktion, die den Typ des letzten abgeschlossenen Auftrags und den Grund für den Abschluss zurückgibt (tap oder sl). Der Grund für den letzten abgeschlossenen Auftrag eines bestimmten Typs wird nicht zurückgegeben. Ich werde versuchen, mir jetzt etwas einfallen zu lassen...


Wenn Sie etwas Ähnliches wie Klimovskoe haben, das nur einen Wert für den letzten Bestellabschluss liefert, wäre ich Ihnen sehr dankbar
 

Versuchen Sie eine solche Funktion in Verbindung mit der Funktion von Igor:

//+----------------------------------------------------------------------------+
//|  Версия   : 30.03.2011                                                     |
//|  Описание : Возвращает тип последней закрытой позиции                      |
//|  если Buy 1 , если Sell -1                                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    symbol - наименование инструмента                                       |
//|    magic - MagicNumber                                                     |
//+----------------------------------------------------------------------------+
int LastCloseDeal(string symbol, int magic) 
{
  int lastclosetime=-1;
  int lastcloseticket=-1;
  int lastdealtype=0;

  for (int i=0; i<OrdersHistoryTotal(); i++) 
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; 
    if (OrderSymbol()==symbol || OrderMagicNumber()==magic) 
    {
      if (lastclosetime<OrderCloseTime()) 
      {
        lastclosetime=OrderCloseTime();
        lastcloseticket=OrderTicket();
      }
    }
  }

  if (OrderSelect(lastcloseticket, SELECT_BY_TICKET, MODE_HISTORY)) 
  {
    if (OrderType()==OP_BUY) lastdealtype=1;
    if (OrderType()==OP_SELL) lastdealtype=-1;   
  }
  return(lastdealtype);
}
 

Ihr Code sollte dann wie folgt aussehen

bool Buystop=isCloseLastPosByStop(NULL,OP_BUY,MagBuy);
bool BuyTake=isCloseLastPosByTake(NULL,OP_BUY,MagBuy);
bool Sellstop=isCloseLastPosByStop(NULL,OP_SELL,MagBuy);
bool SellTake=isCloseLastPosByTake(NULL,OP_SELL,MagBuy);

//--------------------------------------------------------------------------------+
if(total==1) 
 {

   if (LastCloseDeal(Symbol(), MagBuy)==1)

  {
      if(Buystop==True)    OpenPosition(NULL, OP_SELL, Lot,Bid+Sl3*Point, Bid-Tp3*Point,MagBuy);
      if(BuyTake==True)   OpenPosition(NULL, OP_BUY,  Lot, Ask-Sl*Point, Ask+Tp*Point,MagBuy);      
   }

   if (LastCloseDeal(Symbol(), MagBuy)==-1)

   { 
      if(Sellstop==True)   OpenPosition(NULL, OP_BUY,  Lot, 0, Ask+Tp*Point,MagBuy);
      if(SellTake==True)    OpenPosition(NULL, OP_BUY,  Lot, Ask-Sl*Point, Ask+Tp*Point,MagBuy); 
   }  

}

 
Figar0:

Ihr Code sollte dann wie folgt aussehen


Danke, ich werde es ausprobieren.
 
Hallo, bitte helfen Sie mir, virtuelle Stops an bestimmten Punkten zu setzen. Genauer gesagt: Anstatt Daten über neue SL zu senden, sollte EA sie einfach in Variablen (oder irgendwo anders) speichern und weiter trailen, trailen, und wenn der Preis ein bestimmtes Niveau (Preis) erreicht, ein Signal an DC senden, um die Order zu schließen, (eine Art virtueller Trailing-Stop mit virtuellem Stoploss). Mit anderen Worten, der Expert Advisor enthält einen Trailing-Stop auf einer unsichtbaren Ebene von 1 Pip bis zum DC-Server... ist sie realistisch?
 
Centuriy:
Hallo, bitte helfen Sie mir, virtuelle Stoplosses an bestimmten Punkten zu setzen. Genauer gesagt: Anstatt Daten über einen neuen SL zu senden, soll der EA sie einfach in Variablen (oder irgendwo anders) speichern und schleppen, schleppen, und wenn der Preis ein bestimmtes Niveau erreicht, sendet er ein Signal an Maklerfirmen über das Schließen einer Order (eine Art virtueller Trailing-Stop mit virtuellem Stoploss). Mit anderen Worten, der Expert Advisor enthält einen Trailing-Stop auf einer unsichtbaren Ebene von 1 Pip bis zum DC-Server... Ist sie realistisch?


Ja, natürlich ist sie real. Sie sehen sich die offenen Aufträge an, sie haben einen offenen Preis, z.B. haben wir einen Kaufauftrag zum Preis von X, virtueller Stop-Loss Y Punkte, also wenn der aktuelle Preis Z < = X-Y*Punkt ist, sollte der Auftrag geschlossen werden. Natürlich müssen auch die Spreads berücksichtigt werden, und wenn der Stop-Loss nicht feststeht, sondern berechnet wird, muss der berechnete Wert irgendwo sicher gespeichert werden, usw.

Suchen Sie nach "virtuellem Stop", "virtuellem Stoploss" usw.

 
Figar0:


Das ist natürlich realistisch. Wenn wir die offenen Orders durchsehen, wird ihr offener Preis festgelegt, z.B. haben wir eine Kauf-Order zum Preis X geöffnet und der virtuelle Stoploss ist Y Punkte, wenn also der aktuelle Preis Z <=X-Y*Punkt ist, wird die Order geschlossen. Natürlich müssen wir die Spreads berücksichtigen, und wenn der Stop-Loss nicht feststeht, sondern berechnet wird, dann muss der berechnete Wert irgendwo sicher gespeichert werden usw.

Suchen Sie nach "virtuellem Stop", "virtuellem Stoploss" usw.

Ich denke, wir können nicht auf eine Art eigene Auftragsbuchhaltung verzichten.

Erstellen Sie Ihr eigenes Order-Array und speichern Sie darin alle notwendigen virtuellen Haltestellendaten.

 
Figar0:


Ja, natürlich ist sie real. Sie sehen sich die offenen Aufträge an, sie haben einen offenen Preis, z. B. haben wir einen Kaufauftrag zum Preis von X eröffnet, virtueller Stop-Loss Y Punkte, wenn also der aktuelle Preis Z < = X-Y*Punkt ist, sollte der Auftrag geschlossen werden. Natürlich müssen auch die Spreads berücksichtigt werden, und wenn der Stop-Loss nicht feststeht, sondern berechnet wird, muss der berechnete Wert irgendwo sicher gespeichert werden, usw.

Suchen Sie nach "virtuellem Stop", "virtuellem Stoploss" usw.

Vielen Dank für die Antwort, es ist nur die Trailing-Stop (Trailing-Stop), die das Problem ist, ich brauche virtuelle Stopp, weil ich 1 Pip min verfolgen wollen, und ich will orderModify an Brokerage-Unternehmen mit jedem Tick senden - das ist Rowdytum IMHO ))

"Wenn der Stop-Loss nicht festgelegt, sondern berechnet wird, muss der berechnete Wert irgendwo sicher gespeichert werden.

wo zu speichern und wie es aufzurufen... Ich denke, es muss eine Variable sein, oder liege ich falsch...