[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 744

 

Diese Bestellung wird noch in einem Stapel geöffnet.

So setze ich die Variablen in meinem Ekspert

extern int TakeProfit=18;
extern int StopLoss=18;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл  
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;//      то же по ТП
double bl=0,sl=0; // лоты соответсвенно для бай и селл

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)



   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    NewOrder(OP_SELLLIMIT,Lot);
    NewOrder(OP_BUYSTOP,Lot);
    NewOrder(OP_SELLSTOP,Lot);
    Today=TimeDay(TimeCurrent());}
    
{



for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
         }
      }


}//end

if(bs==1||bl==1)
{   
    NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
    

und hier ist die Auftragseröffnung

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------
if(tic1<0) Print(GetLastError());

if(tic1>0){
b=0;s=0; //соответственно бай или селл  
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;//      то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------
return(tic1);}
 
profitinvesting:

Bitte geben Sie mir den Code der Funktion, die einen Stopp einmal auf Break-Even-Niveau setzen wird, wenn der Gewinn zum Beispiel 20 Pips sein wird.

Vielen Dank im Voraus für die Antwort:)

Diese und viele andere nützliche Funktionen finden Sie auf der Website http://www.kimiv.ru von Igor Kim . Und die, die Sie brauchen, heißt MovingInWL(), wenn ich mich nicht irre.
 
ToLik_SRGV:

Boris, es ist sogar noch einfacher als das. Sie lassen diese Zeile fallen:

Ganz am Anfang des Codes (separat, nicht in einer Funktion).
An den Stellen, an denen die Funktion OrderSend(...) aufgerufen wird, schließen Sie sie einfach in eine zusätzliche Umarmung des if-Operators ein

Bevor die nächste Bestellung geöffnet wird, prüft der Betreiber, ob es in der aktuellen Bar Angebote gibt oder nicht. Wenn dies der Fall ist, wurde der aktuelle Balken in der Variablen new gespeichert, und wenn der aktuelle Balken mit dem gespeicherten Balken übereinstimmt, wird keine Position geöffnet. Wenn die Bar also neu ist und ihre Öffnungszeit nicht mit den Daten der Variablen new übereinstimmt, wird das Geschäft geöffnet und die Variable new erhält einen neuen Wert.

Ich kenne die Architektur Ihres EA nicht genau, aber diese Methode sollte in den meisten Fällen funktionieren.


Ich danke Ihnen vielmals! Es passt perfekt!
 

Ich kann mir keine bessere Vorgehensweise vorstellen.

Es gibt einen Indikator mit einer Reihe von Arrays. Der zweite Indikator muss mit diesen Arrays arbeiten. Zur Berechnung und Ausgabe des Ergebnisses in einer eigenen Tabelle.

Am einfachsten wäre es, diesen Indikator aufzurufen, aber das ist anscheinend nicht möglich.

Wie kommt man zu anderen Arrays?

 
Abzasc:

Ich weiß es nicht.

Ich habe sie.
 
LAIT123:

Hallo, könnten Sie mir bitte sagen, wie man Protokolle in MT4 anzeigen?

Sie müssen nicht 15 Nachrichten mit nur einem Inhalt veröffentlichen. Und wenn Sie das tun, ist es wünschenswert, dass Sie hinter sich aufräumen. Warten Sie nicht auf die Onkel.
 
artmedia70:

Sie haben es wohl wirklich nötig... :) Oder die Maus steckt fest...



Es ist nicht die Maus, die feststeckt. Es ist Ungeduld. Ich habe 20 Minuten gebraucht, um am Ende 15 Beiträge zu löschen.
 
Vinin:

Es ist nicht die Maus, die feststeckt.
Er dachte, es sei ein Chatroom :)
 
FoxUA:

Diese Bestellung wird noch in einem Stapel geöffnet.

So setze ich die Variablen in meinem Ekspert

und hier ist die Auftragseröffnung

Ich verstehe überhaupt nicht, wie sich das anfühlt... Die Klammern passen nicht zueinander, es fehlt eine schließende Klammer... Ich weiß nicht, was hier los ist. Bereinigen Sie Ihren Code... Es ist schwierig, damit umzugehen, und es gibt keine Möglichkeit, es zu kompilieren und auszuführen - wir arbeiten an unseren eigenen Codes...
 
Vinin:

Es ist nicht die Maus, die feststeckt. Es ist Ungeduld. Ich habe 20 Minuten gebraucht, um am Ende 15 Beiträge zu löschen.
:) Ungeduld wird normalerweise in einem anderen Büro praktiziert... :)