Und machen wir einen "Cartoon" daraus (Mehrwährung) - Seite 5

 

Zu früh gefreut. Die Kompilierung ist fehlerfrei, aber im Strategy Tester, wenn die Order geöffnet wird, kommt der Preis nicht zum Indikator durch diese Funktion. Ich rufe es so auf: OP=PriceOpenLastPos(); aber im Code bleibt OP gleich Null.

Ist es ein Problem des Testers, dass er keine Werte an den Indikator weitergibt, der im Fenster im Visualisierungsmodus hängt?

 
Angela писал(а) >>

Zu früh gefreut. Die Kompilierung ist fehlerfrei, aber im Strategy Tester, wenn die Order geöffnet wird, kommt der Preis nicht zum Indikator durch diese Funktion. Ich rufe es so auf: OP=PriceOpenLastPos(); aber im Code bleibt OP gleich Null.

Ist es ein Problem des Tests, dass er keine Werte an den Indikator weitergibt, der im Fenster im Visualisierungsmodus hängt?

Der Indikator kann nicht sehen, was im Prüfgerät vor sich geht. Aber wenn es offene Aufträge gäbe, würden sie angezeigt.

 
ALex2008 писал(а) >>

Bitte antworten Sie)

//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);
  }
  return(false);  
}
 
Vinin >> :

Ich habe es repariert... Aber das Problem bleibt(.

Aufträge löschen DellAllOrders() Funktion funktioniert nicht...

//-------Удаление всех ордеров
void DellAllOrders(){
      if( WorkOrders())OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
  }
  
//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);}
  return(false);
  }

Ich denke, ich hätte hinzufügen sollen





OrderDelete(Ticket);

Wie dies....?

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      OrderDelete( Ticket);}
  }
 
ALex2008 писал(а) >>

Ich habe es repariert... Aber das Problem bleibt(.

DellAllOrders() funktioniert nicht.

//-------Удаление всех ордеров
void DellAllOrders(){
  for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      if (OrderType()<=OP_SELL) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10);
      else OrderDelete(OrderTicket());
  }
}
Löscht auch ausstehende Aufträge.
 
Vinin >> :
Löscht auch die Stundungen.

Dankeschön)

>> Ich denke, jetzt sollte alles funktionieren.

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      else OrderDelete( Ticket);}
  }
Mir ist auch ein Fehler beim erneuten Speichern von EA aufgefallen (ich denke, es wird derselbe sein, wenn ich das Terminal einfach neu starte)...
eine Prüfung vor dem Setzen des Stoploss hinzugefügt...


if(WorkOrders())
      if ((Type<=1)&& (Stop==0))SetStop();



//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type  = OrderType();
      Ticket=OrderTicket();
      Stop  =OrderStopLoss();
      return(true);}
  return(false);
  }
 
Leute, seht mal... Vielleicht ist noch etwas anderes falsch, etwas, das optimiert werden muss?
 
ALex2008 >> :
Leute, seht mal... Vielleicht ist noch etwas anderes falsch, etwas, das optimiert werden muss?
OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Ask+ Profit, 0, 0,0, Green);

>> Sollte es so ablaufen?

Enter+ Profit
 
Swan >> :

>> Soll es so funktionieren, oder ist es

Es ist wirklich ein Fehler) Es ist ein Pendel, das ist richtig!!! >> Danke. Es wurde überarbeitet.

 
ALex2008 >> :

Der Fehler ist wahr) Es ist jedoch nicht kritisch... >> Danke.

Fehler 130 die ganze Zeit.

StopLevel sollte überprüft werden, für StopLoss und Enter.


>> und icho.

if(b0<b1) StopLoss=b1;
else StopLoss=b0;

>> sollte der größte gewählt werden?