Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 415

 
Link_x:
Hallo!
Gibt es eine solche Funktion in der "Kim"-Funktion, die den Gewinn aus dem letzten offenen Auftrag berechnet?

Ich habe sie nicht gefunden, jetzt rätsele ich über eine hausgemachte Funktion, die die Gewinnspanne des letzten offenen Auftrags berechnet.


AuftragGewinn()

Wenn Sie genau den letzten geöffneten Auftrag benötigen, dann gehen Sie durch alle Aufträge und wählen Sie den letzten Auftrag aus , dann verwenden Sie die obige Funktion, die Ihnen den Nettogewinn dieses Auftrags zurückgibt

 
Ekburg:


AuftragGewinn()

Wenn Sie genau den letzten Auftrag benötigen, der geöffnet wurde, gehen Sie alle Aufträge durch und wählen Sie den Auftrag mit der spätesten Öffnungszeit aus.


Wie ich gerade noch rechtzeitig eine Antwort bekomme, genau in dem Moment, in dem ich eine Lösung finde. :)
Pips_Proffit_Last_Pos = p - PriceOpenLastPos;
Aber trotzdem vielen Dank!
 

Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))

Sie suchen nicht nach der Historie, sondern nach aktuellen Positionen, hier ist eine logische Kette, auf deren Grundlage Sie versuchen können, Code zu schreiben:

(Block der Arbeit mit muwings und der Bestellung)

1 Merken Sie sich das Ticket und die magische Nummer der Bestellung

2 Überwachen Sie die Anzahl der Aufträge und wenn es keine Aufträge auf dem Markt gibt (was bedeutet, dass unser Auftrag geschlossen wurde), gehen Sie zu Punkt3 über oder überwachen Sie diesen speziellen Auftrag, bis seine Schließungszeit größer als Null ist; in diesem Fall schließen wir die Punkte 3 und 4 aus.

3 unsere Bestellung finden

4 herausfinden, ob sie geschlossen ist

5 finden Sie heraus, wie sie geschlossen wurde

6 wenn er durch einen Stop geschlossen wurde, einen anderen Auftrag in der entsprechenden Richtung erteilen


//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern double Lots = 0.1;
extern double TakeProfit = 100;
extern double StopLoss = 100;       
extern double TrailingStop = 50;
extern double Margincutoff = 100;   
extern double MagicNumber = 12345;
extern double TradeSizePercent = 5;
extern int Slippage = 10;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
  int Crossed (double line1, double line2)
  {
  static int last_direction=0;
  static int current_direction=0;
  
  if (line1>line2)current_direction=1;// пересечение вверх
  if (line1<line2)current_direction=2;// пересечение вниз
  
  if (current_direction!=last_direction)//изменения произошли
  {
  last_direction=current_direction;
  return(last_direction);
  }
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    int cnt, ticket, total, totalhistory, memoryticket;
    double shortEMA, longEMA;
    
    if(Bars<100) 
     {
     Print("Bars less than 100");
     return(0);
     }
     shortEMA=iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
     longEMA=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
     int isCrossed=Crossed(shortEMA, longEMA);
//----
   total=OrdersTotal();
   if(total<1) 
     {
      // нет открытых ордеров
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // проверяем пересечение МА для открытия позиции на покупку
      if(isCrossed==1)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
        //проверяем пересечение МА для открытия позиции на продажу
        if(isCrossed==2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
         return(0); 
        }  
//----начинаем искать закрытые ордера

         //инициализация параметров
  
  int old_order_type;
 
   
  RefreshRates();
  
  //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
  for ( totalhistory = OrdersHistoryTotal() - 1; totalhistory >= 0; totalhistory-- ) 
  {
     if ( OrderSelect(totalhistory, SELECT_BY_TICKET, MODE_HISTORY) && OrderTicket() == memoryticket && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
     {
         old_order_type = OrderType();
         if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                break; //прекращаем поиск
         }
     }
  }
  //если раньше покупали, то теперь продаем
  if ( old_order_type == OP_BUY )
  {
  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
 //если раньше продавали, то теперь покупаем
  if ( old_order_type == OP_SELL )
  {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
   return(0);
  }
//+------------------------------------------------------------------+
Das habe ich. Es öffnet wirklich 3 Lose. Ich bin wirklich am Arsch. Können Sie den Code korrigieren? Was ist los?
 
Ich habe es satt, diese Fragen zu stellen (unglaublich nervenaufreibend, pi****, sorry (Scheißvariablen, die ich nicht finden kann (meist nervig, was ich selbst nicht finden kann))).

Welche Variable ist für den aktuellen Kurswert verantwortlich?
Ich habe die Dokumentation durchsucht, es gibt nichts außer Bid, Ask, POINT_HIGH, POINT_LOW.
Gibt es eine solche Variable überhaupt?
 
Link_x:
Ich habe es satt, diese Fragen zu stellen (unglaublich nervenaufreibend, pi****, sorry (Scheißvariablen, die ich nicht finden kann (meist nervig, was ich selbst nicht finden kann))).

Welche Variable ist für den aktuellen Kurswert verantwortlich?
Ich habe die Dokumentation durchsucht, es gibt nichts außer Bid, Ask, POINT_HIGH, POINT_LOW.
Gibt es eine solche Variable überhaupt?
Haben Sie bemerkt, wie sich der Preis im "Market Watch"-Fenster verändert? Sie können dort die Geld- und Briefkurse sehen. Die erste wird zum Verkauf und die zweite zum Kauf verwendet.
 
Link_x:

Wie schnell bekomme ich eine Antwort, wenn ich eine Lösung gefunden habe? :)
Die Lösung lautet: "Nehmen Sie sich Zeit, Fragen zu stellen". Und wenn man bedenkt, dass man nicht immer kompetente Antworten bekommt... :)))
 
khorosh:
Haben Sie bemerkt, wie sich der Preis im Market Watch-Fenster verändert? Dort sehen Sie den Bid und Ask - das sind die aktuellen Kurse. Die erste wird für den Verkauf und die zweite für den Kauf verwendet.

Ganz genau!
So eine Kleinigkeit vergessen!
 
TarasBY:
Die Lösung lautet: "Stellen Sie nicht voreilig Fragen". Und wenn man bedenkt, dass man nicht immer kompetente Antworten bekommt... :)))
Ja, ja. :)
 
Link_x:
Das ist richtig!!!
So eine Kleinigkeit vergessen!!!

Sie antworten richtig, wie ein richtiger Schüler in einer Prüfung: Sie können nicht sagen, dass Sie es nicht wissen, sondern Sie müssen sagen, dass Sie es vergessen haben))).
 
Link_x:
Ja, ja, ja. :)

Vielleicht sollten Sie versuchen, die Fragen anderer Leute zu beantworten, anstatt Ihre eigenen zu stellen. Die Vorteile sind viel größer (bis zu einem gewissen Grad), sicherlich die Vorteile für Sie selbst