Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1067
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
Hilfe, bitte! Es gibt 2 Dateien: einen Indikator und einen Expert Advisor. Wie verweist man korrekt auf die Funktion im Indikator über #include? iCustom ist aus verschiedenen Gründen nicht geeignet. Das habe ich in den Indikator geschrieben:
Und das ist, was ich in den Expert Advisor geschrieben habe:
Aber aus irgendeinem Grund funktioniert der Expert Advisor nicht, der Indikator erscheint beim Testen nicht im Preisdiagramm. Habe ich es richtig geschrieben, und wenn es einen Fehler gibt, wo liegt er?
Tuta.
Ich habe keins. Aber es gibt definitiv irgendwo eine Datei, aus der ich die Informationen entnehme.
Bitte helfen Sie mir bei der Kompilierung in mt4
FileClose' - Ausdruck vom Typ 'void' ist illegal TickToCVS~.mq4 84 12
Ich habe keins. Aber es gibt auf jeden Fall irgendwo eine Datei, aus der ich die Informationen entnehme.
Dies ist der Wert EMPTY_VALUE
Achten Sie darauf, wo er auftaucht.
Mein Screenshot zeigt, dass das Menü von MetaEditor stammt und Ihr Screenshot ist von MT.
Hallo Leute, meine Frage ist, dass ich eine Bestellung nicht ändern kann. Es gibt zwei Aspekte, ich verstehe die Mathematik der Änderung nicht, also erklären Sie es mir bitte.
So wie ich es sehe, ist SL= IF ORDERSELEKT,Bid-ORDERSTOPLOS*POINT,DIGITS
der zweite Aspekt. gelernt aus dem XBMS-Video
wie ich habe nicht versucht, die Werte der Variablen in der Tester eror 130 nicht die richtige Stop-Loss und Scheiße wie diese zu ändern
2016.06.28 21:42:23.402 2016.06.23 00:00 trade RSI inputs: Lots=0.1; Slippage=5; StopLoss=10; TakeProfit=30; RSIPeriod=7; Magic=1087;
obwohl es eine Multiplikation aus Ziffern und Funktion auf den Fall des falschen SL gibt
extern double Lots = 0.1;
extern int Schlupf = 10;
extern int StopLoss = 10;
extern int TakeProfit =30;
extern int RSIPeriod = 7;
extern int Magic =1087;
doppelter MaRSI;
int TP,SL;
bool tfu;
//+------------------------------------------------------------------+
Experteninitialisierungsfunktion //|
//+------------------------------------------------------------------+
int OnInit()
{
if(Ziffern == 3||Ziffern == 5)
{
Schlupf *= 10;
TakeProfit *= 10;
StopLoss *= 10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion |
//+------------------------------------------------------------------+
void OnTick()
{
//+------------------------------------------------------------------+
//offener Verkauf
//+------------------------------------------------------------------+
MaRSI=iRSI(Symbol(),0, RSIPeriod,PRICE_CLOSE,1);
if(CountTrades() <= 0&MaRSI<=30 )
{
if( SendOrder(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0, "test",Magic,0,Green))
{ int ticket = OrderTicket();
SL = NormalizeDouble( Ask - StopLoss*Point,Digits);
TP = NormalizeDouble( Ask + TakeProfit*Point,Digits);
ModifyOrder(ticket,OrderOpenPrice(),SL,TP,0,Black);
}
}// if(CountTrades <= 0&MaRSI>=70 )
//+------------------------------------------------------------------+
//offen kaufen
//+------------------------------------------------------------------+
}//ONTICK
//+------------------------------------------------------------------+
//+Bestellzähler
//+------------------------------------------------------------------+
int CountTrades ()
{
int count = 0;
for(int i = OrdersTotal()-1;i>=0;i--)
{
if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)//wenn die Bestellung unsere ist
count++;//Zähler erhöhen
}//auswählen nach Index
}// Bestellung.i===erste Bestellung.
return(count);//Zurückgeben der Anzahl der Bestellungen
}// Funktion
//+------------------------------------------------------------------+
//Auftragsvergabefunktion mit Fehlerbehandlung
//+------------------------------------------------------------------+
int SendOrder( string symbol,int cmd,double volume,double price,int slippage,double stoploss,
double takeprofit,string comment,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
err =0;
bool exit_cikl = false;
int ticket = -1;
int Retry = 10; //Anzahl der Versuche, eine Bestellung zu setzen
int cnt = 0; //Versuchsanzahl
if(cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_cikl)
{
ticket = OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);
err= GetLastError();
switch(err)
{
case ERR_NO_ERROR:
exit_cikl = true;
Pause;
{ case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_OFF_QUOTES:
Fall ERR_BROKER_BUSY:
Fall ERR_TRADE_CONTEXT_BUSY:
cnt++;
Pause;
case ERR_PRICE_CHANGED:
Fall ERR_REQUOTE:
RefreshRates();
weiter;
Standard:
exit_cikl = true;
Pause;
}// switch switch(err)
if(cnt > Wiederholungsversuch)
exit_cikl = true;
if(!exit_cikl)
{
Sleep(1000);
RefreshRates();
}//falls wir die Schleife nicht verlassen if(!exit_cikl)
sonst
{
if(err != ERR_NO_ERROR)
{
Print("Fehler : " + IntegerToString(err));
}// falls immer noch ein Fehler auftritt if(err != ERR_NO_ERROR)
}// SONSTIGES
if(err==ERR_NO_ERROR)
{
if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
zurück(ticket);
}// if(err==ERR_NO_ERROR)
Print("Fehler beim Öffnen der Bestellung nach " + IntegerToString(cnt) +"Versuchen");
zurück(-1);
} //Zyklus während
}// wenn die Auftragsart Kaufen oder Verkaufen ist
zurück(ticket);
}// Funktion SendOrder
//-------------------------------------------------------------------------------------------------------------
//Funktion Auftrag ändern
//------------------------------------------------------------------------------------------------------------
ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime expiration,colour arrow_color)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Preis = NormalizeDouble(Preis,Ziffern);
stoploss = NormalizeDouble(stoploss,Digits);
Gewinnspanne = NormalizeDouble(Gewinnspanne,Stellen);
CheckValidStop(Symbol(),Preis,Stoploss);//Funktion zum Ändern des Mindeststopps
int err = GetLastError();
err = 0 ;
int Wiederholungsversuch = 10;
int cnt = 0;
bool exit_cikl = false;
bool Ergebnis;
while(!exit_cikl)
{
Ergebnis = OrderModify(Ticket, Preis,Stoploss,Takeprofit,Ablauf, arrow_color);
err = GetLastError();
if(Ergebnis == true)
{
Print("Auftrag #"+ IntegerToString(ticket), "erfolgreich geändert");
return(true);
}
switch(err)
{
case ERR_NO_ERROR:
exit_cikl = true;
Pause;
{ case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_OFF_QUOTES:
Fall ERR_BROKER_BUSY:
Fall ERR_TRADE_CONTEXT_BUSY:
cnt++;
Pause;
case ERR_PRICE_CHANGED:
Fall ERR_REQUOTE:
RefreshRates();
weiter;
Standard:
exit_cikl = true;
Pause;
}// switch switch(err)
}// while(!exit_cikl)
if ( err != ERR_NO_ERROR)
{
Print("Fehler beim Ändern der Bestellung # " + IntegerToString(ticket));
Print("Fehlercode: " + IntegerToString(err));
}
}///(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
sonst
{
Print("Auftragsauswahl fehlgeschlagen, Ticket = " + IntegerToString(ticket));
return(false);
}//falls etwas schief geht
return(true);
}// Funktion ändern
//----------------------------------------------------------------------------------------------------
//ChtckValidStop
//--------------------------------------------------------------------------------------------------
void CheckValidStop(string symbol,double price,double& sl)
{
if(sl==0)
Rückkehr;
double min_stop_server = MarketInfo(symbol,MODE_STOPLEVEL)*MarketInfo(symbol,MODE_POINT);
if(MathAbs(preis-sl) <= min_stop_server)
{
if(Preis>sl)
sl = Preis - min_stop_server;
sonst sl = sl + min_stop_server;
}// if(MathAbs(Preis-sl) <= min_stop_server)
sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS))
}// Funktion
BITTE UM RAT!!!
Es gibt zwei Aufträge in der Handelshistorie: 1) SELL № tic 415 STOPLOSS 1.1000 lot 0.01 2) SELL № tic 418 STOPLOSS 1.1000 lot 0.02
Ich muss die Variablen X=Tick, Y=STOPLOSS und B=Lot zuweisen, wenn der Asc-Preis gleich dem STOPLOSS der SELL-Order ist. Wie werden die ersten Werte dem ersten Auftrag und dann dem zweiten Auftrag zugeordnet? Bei mir wird dem ersten Auftrag immer ein Wert zugewiesen.
BITTE UM RAT!!!
Es gibt zwei Aufträge in der Handelshistorie: 1) SELL № tic 415 STOPLOSS 1.1000 lot 0.01 2) SELL № tic 418 STOPLOSS 1.1000 lot 0.02
Ich muss die Variablen X=Tick, Y=STOPLOSS und B=Lot zuweisen, wenn der Asc-Preis gleich dem STOPLOSS der SELL-Order ist. Wie werden die ersten Werte dem ersten Auftrag und dann dem zweiten Auftrag zugeordnet? Bei mir wird dem ersten Auftrag immer ein Wert zugewiesen.
Dieses Thema soll denjenigen helfen, die bereits etwas geschrieben haben, aber es funktioniert nicht ganz so, wie ich es möchte. Bitte übermitteln Sie Ihren Code, damit die anderen hier sehen können, was falsch ist und helfen können.
Und wenn Sie auf Bestellung geschrieben werden wollen, dann ist das genau das Richtige für Sie.