[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 175

 

Guten Tag, könnten Sie mir bitte sagen, ob es einen Code gibt


OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер
if (OrderType()==OP_BUY||OP_SELL)
 {
 if (OrderMagicNumber()==1)
  {
  if (OrderProfit()<0)

   {

der den letzten Auftrag in der Historie mit einem negativen Gewinn auswählt.

Wenn 3 Aufträge gleichzeitig geschlossen werden, wie kann ich dann wissen, dass die letzten 3 Aufträge gleichzeitig geschlossen wurden?

Ich habe versucht, die for-Schleife, aber es findet alle Aufträge geschlossen mit einem Verlust, während ich brauche nur die letzte Bestellung oder die letzte Bestellung, je nachdem, wie viele von ihnen geschlossen auf einmal

 
BruDer:

Ich habe bei der Suche keine Antwort gefunden

Wie kann ich aus dem Skript ersehen, welche Indikatoren sich auf dem Chart befinden, welche Parameter und Indikatoren, in welchen Unterfenstern sie sich befinden?

danke


Niemals.
 

vik-777:

Woher weiß ich, dass die letzten 3 zur gleichen Zeit geschlossen wurden?

OrderCloseTime()
 
vik-777:

Guten Tag, könnten Sie mir bitte sagen, ob es einen Code gibt


der den letzten Auftrag in der Historie mit einem negativen Gewinn auswählt.

Wenn 3 Aufträge gleichzeitig abgeschlossen werden, wie kann ich dann wissen, dass die letzten 3 Aufträge gleichzeitig abgeschlossen wurden?

Ich habe versucht, die for-Schleife, aber es findet alle Aufträge geschlossen mit einem Verlust, während ich brauche nur die letzte Bestellung oder die letzte Bestellung, je nachdem, wie viele von ihnen geschlossen auf einmal




Wenn er gleich ist, vergleichen Sie ihn mit dem Zeitpunkt des Abschlusses Ihres vorherigen abgeschlossenen Auftrags... So läuft das Ganze natürlich in einer Schleife ab - vom letzten abgeschlossenen zum ersten, man geht einen nach dem anderen durch und vergleicht den Zeitpunkt des Auftragsabschlusses... Eine andere Sache - drucken Sie die Schließungszeit der letzten Aufträge, die Sie vorher kennen, sagen wir drei Aufträge , kann es anders sein , auch wenn Sie es als " gleichzeitig" verstehen, d.h. wie ich es verstehe, schließt der Auftrag zu jeder Zeit, d.h.. In der Tat kann der Zeitpunkt der Schließung von, sagen wir, drei Aufträgen auf einmal nicht gleich sein - versuchen Sie print () und sehen Sie die Werte Ihrer drei TIME-Aufträge - ihre Werte von OrderCloseTime() Eigenschaften, d.h., wir müssen vielleicht das Konzept der TIME of closing einführen, d.h. die Abweichung der Schließungszeit von mehreren Aufträgen um einen kleinen Wert, wenn wir davon ausgehen können, dass sie gleichzeitig geschlossen haben. Experimentieren Sie und überzeugen Sie sich selbst von hier aus.
 

Hilfe aus der Halle nehmen.

Wie schreibt man eine Bedingung in OrderSelect():

if(Tag der Auftragseröffnung != heutiger Tag)ticket=AuftragsTicket();

 
if(TimeDay(OrderOpenTime())!=TimeDay(CurrentTime()))ticket=OrderTicket();
 
ikatsko:

WIE WÜRDEN SIE DIE ZAHL DER GEWINNBRINGENDEN KAUFPOSITIONEN UND DIE ZAHL DER GEWINNBRINGENDEN VERKAUFSPOSITIONEN GETRENNT ZÄHLEN?

Die Strategie ist wie folgt: Wenn die Anzahl der profitablen Long-Positionen seit dem Start des Expert Advisors (oder besser - für die gesamte Kontohistorie) größer ist als die Anzahl der Short-Positionen, dann sollten nur Long-Positionen eröffnet werden dürfen. Und vice versa.

Es ist klar, wie diese Geschäfte zu zählen sind, wenn sie durch den Expert Advisor geschlossen werden: Schließen - Zählen. Aber wenn eine Position durch TP oder SL geschlossen wird, dann ... ?

Vielleicht hat jemand einen fertigen Code für diese Funktion?

Nun, vergleichen Sie in einer Schleife über geschlossene Positionen deren Schlusskurs und deren Take- und Stop-Kurse:

OrderTakeProfit(); OrderStopLoss(); OrderClosePrice();

Noch einfacher ist es, OP_BUY und OP_SELL auszuwählen und die Anzahl der verlorenen und gewinnbringenden Kauf- und Verkaufspositionen in vier separate Variablen zu schreiben

if (OrderProfit()+OrderSwap()+OrderCommission()>0) { /* Position ist profitabel */ }
else { /* Position ist im Verlust */ }

 
Ich danke Ihnen!
 

Ich habe mir alles angesehen, ich habe alles getan... Es wird keine Position eröffnet, das ist alles! Es schließt richtig, aber es öffnet sich nicht... Ich weiß nicht, was ich tun soll! Vielleicht findet jemand einen Fehler in dem Programm?

 
//+------------------------------------------------------------------+
//|                                                     DOKTRADE.mq4 |
//|                                                DOKSTER@YANDEX.RU |
//|                                                DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#property link      "DOKSTER@YANDEX.RU"

   extern double LOT = 0.01;   // LOTS
   extern double KOF = 2;
   extern double SAF = 5;
   extern int    FRC = 144;
   extern double STL = 100;
   extern double TPF = 100;
   
   int start()
     
    { 


int CNT;

int DIG;

int TOTAL;
int SPREAD;

double SPR;
double SPRW;

double FRCU;
double FRCD;

double EMAH;
double EMAM;
double EMAL;

double OPEN;
double CLOSE;

double DFB;
double DFS;

double STLW = STL*Point;
double TPFW = TPF*Point;

double SAFW = SAF*Point;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU = High[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)];

DFB = (CLOSE-FRCD);
DFS = (FRCU-CLOSE);

SPR = MarketInfo(Symbol(),MODE_SPREAD);
SPRW = (SPR*Point);

DIG = MarketInfo(Symbol(),MODE_DIGITS);

TOTAL = OrdersTotal();


if(TOTAL<1)

 { if (OPEN<EMAH&&CLOSE>EMAH)
   
   OrderSend(Symbol(),OP_BUY,LOT,Ask,3,0,0,"DOKTRADE",15775,0,Green);
  
 
   if (OPEN>EMAL&&CLOSE<EMAL)
 
   OrderSend(Symbol(),OP_SELL,LOT,Bid,3,0,0,"DOKTRADE",15885,0,Red);
  
  return(0);
 
    }
    
           
      
  for(CNT=0;CNT<TOTAL;CNT++)    
  
  {
      
  OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);
  
  {
  
  if (OrderType()==OP_BUY && OrderSymbol()==Symbol())   
                                             
      {
      
       if (OPEN>EMAL&&CLOSE<EMAL)    
     
        OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
        
         if (OPEN>EMAM&&CLOSE>EMAM)
          
           OrderModify(OrderTicket(),OrderOpenPrice(),FRCD-SAFW,CLOSE+DFB,Green);
        
        return(0);
        
        }
        
  if (OrderType()==OP_SELL && OrderSymbol()==Symbol())
        
      {
       
         if (OPEN<EMAH&&CLOSE>EMAH)
         
         OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
         
          if (OPEN<EMAM&&CLOSE<EMAM)
           
           OrderModify(OrderTicket(),OrderOpenPrice(),FRCU+(SAFW+SPRW),CLOSE-DFS,Red);
       
         return(0);
         
         }
          }
           }
            }
Grund der Beschwerde: