[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 2

 
tara:
Wie wäre es mit zwei?
Dann sind die Namen alphabetisch geordnet.
 
     // Проверяем все открытые ордера---------------------------------------------------------------------------

    for(n=0,i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC+1 || OrderMagicNumber()>MAGIC+3) continue;
      no=OrderMagicNumber()-MAGIC;
      
      if(no==1)
      {
         n++;
         if(OrderType()==OP_SELL) { if(OrderOpenTime()>=ltts && BSo1==OP_SELL) s1=true; 
         if(MathAbs((OrderOpenPrice()-NormalizeDouble(Bid,Digits))/Point)<Add){OS1=1;} // Запрет на открытие селл

            } else
         if(OrderType()==OP_BUY) { if(OrderOpenTime()>=lttb && BSo==OP_BUY) b1=true;
         if(MathAbs(OrderOpenPrice()-NormalizeDouble(Ask,Digits))/Point<Add){OB1=1;} // Запрет на открытие бай
         }     
      }
   }
Guten Tag.
Aufgabe ist es, einen Auftrag in einem bestimmten Abstand "Add" zu einem bereits geöffneten Auftrag zu eröffnen.
Getrennte Kauf- und Verkaufsaufträge werden kontrolliert.
Ich habe diesen Code geschrieben. Es scheint zu funktionieren, aber manchmal deckt der Preis eine größere Entfernung ab als der "Hinzufügen"-Button, aber die Bestellung wird nicht geöffnet.
Ich habe versucht, Ausdrucke zu erstellen, aber die Bedingung "Hinzufügen" funktioniert nicht richtig, und ich weiß nicht, was falsch ist.
Vielleicht kann mir jemand sagen, was ich tun soll?
 

Sehr geehrte Damen und Herren, ich habe mir Gedanken über die Lösung eines Problems im Zusammenhang mit Requotes gemacht.

Situation: Expert Advisor öffnet Aufträge vom Markt mit harten Stopps und Übernahmen in Pips, arbeitet auf einem geschlossenen Balken, M15. Es wird ein Signal zum Öffnen des Auftrags empfangen, und der Expert Advisor versucht mehrmals, den Auftrag zu öffnen, was jedoch fehlschlägt. Auf dem nächsten Balken wird das Signal wiederholt und der Expert Advisor eröffnet das Geschäft, aber der Kurs hat den Punkt verlassen, an dem das erste Signal gegeben wurde. Es stellt sich heraus, dass der Stop-and-Take-Kurs auf der Grundlage des Kurses festgelegt wird, zu dem das Geschäft eröffnet wurde, und nicht auf der Grundlage des Kurses, zu dem das erste Eröffnungssignal erfolgte. Ich habe eine solche Konstruktion geschrieben, dass der Expert Advisor beim Setzen eines Stop-and-Take den Preis nimmt, bei dem das erste Signal empfangen wurde.

  if(sg==1 && TimeCurrent()-buy_time>=1800) {buy_price=Ask;buy_time=TimeCurrent();}//
  if(sg==-1 && TimeCurrent()-sell_time>=1800) {sell_price=Bid;sell_time=TimeCurrent();}//
где,
sg==1 сигнал на покупку
sg==-1 сигнал на продажу
buy_time - переменная в которую запоминаем время поступления сигнала на покупку
sell_time - переменная в которую запоминаем время поступления сигнала на продажу

при выставлении ордера стоп и тейк прибавляем/вычитаем не от текущей цены а от buy_price и sell_price

Ich möchte erklären, warum ich das erste Signal verwenden möchte: Stopp- und Take-Größen wurden im Tester ausgewählt und sind sozusagen optimal, wenn wir Stopps/Stopps vom zweiten Signal setzen, werden sie nicht optimal sein, weil die tatsächliche Öffnungsrate von der Rate beim ersten Signal abweicht.

 
evillive:

Trades trawl order total - 1, d.h. wir erreichen nie den ältesten. Zweitens werden die Aufträge von den neuesten zu den ältesten geschleppt, und ältere Aufträge können durch Stopp oder Take geschlossen werden, bevor der Trawler sie erreicht. Was funktioniert im Allgemeinen nicht? Haben Sie Fehlerprotokolle?


TS funktioniert überhaupt nicht, mehrmals habe ich bemerkt, dass es "wie vorgesehen" Positionen überhaupt nicht schließt, keine Fehlerprotokolle, aber wie bekomme ich sie?

Und wie für die Schließung von Aufträgen, könnten Sie bitte schreiben Sie mehr Details, wie die EA ist multi-Währung, aber mit einem Limit von 1 Handel auf eine Währung zu einer Zeit.

 
Stells:
Guten Tag.
Aufgabe ist es, einen Auftrag in einem bestimmten Abstand "Add" zu einem bereits geöffneten Auftrag zu eröffnen.
Getrennte Kauf- und Verkaufsaufträge werden kontrolliert.
Ich habe diesen Code geschrieben. Es scheint zu funktionieren, aber manchmal deckt der Preis eine größere Entfernung ab als der "Hinzufügen"-Button, aber die Bestellung wird nicht geöffnet.
Ich habe es mit Druckern versucht, aber die Bedingung "Hinzufügen" funktioniert nicht richtig, und ich weiß nicht, was falsch ist.
Vielleicht kann mir jemand sagen, was ich tun soll?


Die Eigenschaften von Igor Kim, einfach und bequem.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |7
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
  double d, p;
  int i, k=OrdersTotal(), r=1000000;

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
          if (OrderType()==OP_SELL) {
            d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
        }
      }
    }
  }
  return(r);
}
 
Sancho77:

Sehr geehrte Damen und Herren, ich habe mir Gedanken über die Lösung eines Problems im Zusammenhang mit Requotes gemacht.

Situation: Expert Advisor öffnet Aufträge vom Markt mit harten Stopps und Übernahmen in Pips, arbeitet auf einem geschlossenen Balken, M15. Es wird ein Signal zum Öffnen des Auftrags empfangen, und der Expert Advisor versucht mehrmals, den Auftrag zu öffnen, was jedoch fehlschlägt. Auf dem nächsten Balken wird das Signal wiederholt und der Expert Advisor eröffnet das Geschäft, aber der Kurs hat den Punkt verlassen, an dem das erste Signal gegeben wurde. Es stellt sich heraus, dass der Stop-and-Take-Kurs auf der Grundlage des Kurses festgelegt wird, zu dem das Geschäft eröffnet wurde, und nicht auf der Grundlage des Kurses, zu dem das erste Eröffnungssignal erfolgte. Ich habe eine solche Konstruktion geschrieben, dass der Expert Advisor beim Setzen eines Stop-and-Take den Preis nimmt, bei dem das erste Signal empfangen wurde.

Ich möchte erklären, warum ich das erste Signal verwenden möchte: Stopp- und Take-Größen wurden im Tester ausgewählt und sind sozusagen optimal, wenn Sie Stopps/Stopps aus dem zweiten Signal setzen, wird sich herausstellen, dass sie nicht optimal sind, weil die Rate der tatsächlichen Geschäftseröffnung sich von der Rate beim ersten Signal unterscheidet.

Es stellt sich heraus, dass die Optimalität nur durch das tp- und sl-Niveau bestimmt wird, während der Dealpreis beliebig sein kann? Das scheint nicht logisch zu sein.
 
alsu:
Es stellt sich heraus, dass die Optimalität nur durch das tp- und sl-Niveau bestimmt wird, während der Dealpreis beliebig sein kann? Das scheint nicht logisch zu sein.

Die Optimalität wird nicht nur durch einen Stop-and-Take bestimmt, sondern vor allem durch die Parameter des Signals zur Eröffnung eines Geschäfts. Ich habe diese Signale nicht angegeben, um meine Frage nicht zu überfrachten, denn die Signalparameter haben nichts mit dem fraglichen Problem zu tun. Der Geschäftspreis kann beliebig sein, wenn das Signal zum Öffnen des Geschäfts gespeichert wird.

Ich wäre Ihnen dankbar, wenn Sie sich zum Kern meiner Frage äußern könnten, d.h. ob der Code zur Berechnung der Niveaus, von denen aus ein Stop und Take berechnet wird, korrekt geschrieben ist.

 
Sancho77:

Ich habe den Code nicht zur Hand, aber ich habe etwas Ähnliches für mich gemacht, aber nicht so: Ich habe mir die Zeit des Balkens gemerkt, bei dem ein Signal auftrat, und wenn ein Auftrag unter Verwendung dieses Signals erteilt wurde, habe ich die Signalzeit auf Null zurückgesetzt, und so weiter und so fort:

datetime buy_time,sell_time;
int init(){
   buy_time = 0;
   sell_time = 0;
}
int start(){
   if(buy_time==0 && Open[1]>Close[2]) buy_time = TimeCurrent();
   .......
   if(buy_time!=0){
      OrderSend(.........);
      buy_time = 0;
   }
return(0);
}
Nun, wenn die Frage ist über die Bekämpfung nur requotes, dann schauen Sie in Igor Kim's Thread, fast alle Funktionen für die Platzierung von Aufträgen haben einen Parameter für wie viele Male zu versuchen, die Bestellung
 
Sancho77:

Die Optimalität wird nicht nur durch einen Stop-and-Take bestimmt, sondern vor allem durch die Parameter des Signals zur Eröffnung eines Geschäfts. Ich habe diese Signale nicht angegeben, um meine Frage nicht zu überfrachten, denn die Signalparameter haben nichts mit dem fraglichen Problem zu tun. Der Geschäftspreis kann beliebig sein, wenn das Signal zum Öffnen des Geschäfts gespeichert wird.

Ich wäre Ihnen dankbar, wenn Sie mir Ihre Meinung zum Kern meiner Frage sagen würden, d.h. ob der Code zur Berechnung der Levels, von denen aus Stop und Take berechnet werden, korrekt geschrieben ist?

Ja, es ist richtig geschrieben, aber stellen Sie sich die Situation vor: der "tatsächliche" Preis des Geschäfts lag beispielsweise über dem gespeicherten Preis - was werden Sie dann tun? (und diese Situation ist durchaus real - Requotes sind gerade auf dem schnellen Markt häufig, wenn der Preis springt)
 
alsu:
Der Text ist korrekt, aber stellen Sie sich die Situation vor: Wenn sich herausstellt, dass der "echte" Preis des Geschäfts beispielsweise über dem gespeicherten Preis liegt - was werden Sie dann tun? (Und diese Situation ist durchaus real - Requotes sind gerade auf dem schnellen Markt häufig, wenn der Preis springt)

Ich danke Ihnen für Ihre Meinung.

Wenn der Preis höher als der gespeicherte TP ist, wird der Handel mit dem minimalen Take-Away-Level eröffnet, diese Verarbeitung ist dem EA inhärent.

PS Übrigens, ich werde versuchen müssen, ein Positionseröffnungsverbot zu verhängen, wenn der neue Kurs sich mehr als einen bestimmten Abstand vom gespeicherten Kurs entfernt, danke für den Gedanken, ich wünschte, ich könnte es im Tester überprüfen, nur im Handel.