Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 38
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Übergeben Sie dann das Argument an die Funktion, da es bereitgestellt wird. Auch wenn es besser ist, ihn zu streichen, ist er eine Tautologie.
Und nicht alle Aufträge in der Schleife werden neu berechnet.
Das Ticket mit Überschreiben, ausgehend von der letzten Bestellung mit einem Martin.
und dann, wie man die globale Deklaration "count" ausblendet, in Zeile...
es ist interessant, dass es so funktioniert, wie es sollte.
Bisher zeigt der Tester recht gute Ergebnisse, und manchmal "unüberwindbare Fehler im Expert Advisor".
Grüße.
Ich bin über eine Aufnahme in diesem Format gestolpert:
D.h. hier wurde der bedingte Operator durch eine Handelsfunktion vom Typ bool anstelle eines Ausdrucks ersetzt. Verstehe ich das richtig, dass ein solches Schreiben gleichbedeutend ist mit :
if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
Ich habe sowohl in der Hilfe als auch im Lernprogramm nachgesehen - ich habe kein solches Format gefunden.
Kann ich auf diese Weise direkt Funktionen eines anderen Typs anstelle eines Ausdrucks schreiben? Und wenn ja, wie würde der Algorithmus aussehen?
Ich habe das Problem behoben, ein Argument gesetzt, es in den globalen Bereich gesetzt, jetzt erzeugt es eine Warnung, dass dieses Argument bereits als Eingabe in anderen Funktionen verwendet wird
Ticket mit Überschreibung, Arbeit vom letzten Auftrag mit martin
und dann, wie man die Deklaration von 'count' entfernt, versteckt die globale Deklaration in der Zeile ...
Es ist interessant, dass es so funktioniert, wie es sollte.
Bisher zeigt der Tester recht gute Ergebnisse, und manchmal "unüberwindbare Fehler im Expert Advisor".
Grüße.
Ich bin über eine Aufnahme in diesem Format gestolpert:
D.h. hier wurde die bedingte if-Anweisung durch eine Handelsfunktion vom Typ bool anstelle eines Ausdrucks ersetzt. Verstehe ich das richtig, dass ein solches Schreiben gleichbedeutend ist mit :
if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
Ich habe sowohl in der Hilfe als auch im Lernprogramm nachgesehen - ich habe kein solches Format gefunden.
Kann ich auf diese Weise direkt Funktionen eines anderen Typs anstelle eines Ausdrucks schreiben? Wenn ja, wie würde der Algorithmus aussehen?
Genau soif(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; funktioniert nicht. Die Bedingung darf nicht aus der Klammer fallen.
Aberwenn(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; Sie können.
Genau so,wenn(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; wird nicht funktionieren. Die Bedingung darf nicht aus der Klammer fallen.
Aberwenn(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; Sie können.
Bitte zeigen Sie mir die korrigierte Version, denn ohne den Code ist es nur eine Vermutung.
Ja.
Ich habe sozusagen beendet, was ich konnte. Die Beschreibung ist fertig. Ziel ist es zu verstehen, warum es nicht so funktioniert, wie ich es möchte.
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 1000; //Стоплосс ордера
extern double TakeProfit = 1500; //Тейкпрофит ордера
extern double TrailingStop = 1000; // трал
extern int Delta = 100; //Расстояние от цены для установки ордера
extern double LOT = 0.1; //Объём позиции
extern int Magic =200;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!=0) Trailing();
//ИНДИКАТОР RSI
double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
int b,s,p,res;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP) b++;
if (OrderType()==OP_SELLSTOP) s++;
}
}
double SL,TP;
//---- buy stop
if(RSI0>50&&RSI1<50)
{
res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
}
//---- sell stop
if(RSI0<50&&RSI1>50)
{
res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
}
//---- buy stop делете
if(RSI0<50&&RSI1>50)
{
OrderDelete( OrderTicket());
}
//---- sell stop делете
if(RSI0>50&&RSI1<50)
{
OrderDelete( OrderTicket());
}
//----
return(0);
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
void Trailing()
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()||OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>TrailingStop)
{
if(OrderStopLoss()<Bid-TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
}
if(OrderType()==OP_SELL)
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>TrailingStop)
{
if((OrderStopLoss()>(Ask+TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
und wie haben Sie das Ticket für die ungeöffnete Bestellung erhalten?
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}
Ich kriege es einfach nicht rein.
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}