Mein Indikator hat ein Problem, bei dem ich keinen Ahnung habe, woran das liegen kann.
Ich habe extra Beschriftungen für die Linien (kann man wählen, ob man die sehen will oder nicht).
In fast allen Zeiteinheiten werden die auch genauso angezeigt wie man es in der Eingabe bestimmt hat (also Schrift, Größe, Abstand zur aktuellen Bar - nur die Farbe wird automatisch die der Linie). Nur der m15 hat plötzlich völlig unleserliche Beschriftungen (so geschätzte Größe 0,5-1 ).
Ich hänge mal die "umgebenden" Zeiteinheiten mit dran: m5 - m15 - m30.
Hat irgendwer eine Idee, woran das liegen könnte?
ich baue mir gerade einen EA und versuche die Initiale Lotgröße einer Position herauszufinden, bis dato ohne Erfolg. Habe eigenes probiert aber es hat nie geklappt.
Und zwar gehts darum, dass ich eine Position modifizieren möchte also bspw. 50% der Position schließen aber er soll halt nur einmal in die Funktion rein gehen und dafür brauche ich dann eine if-Abfrage wie:
(INITIAL_POSITION == AKTUELLE_POSITION)
hier wird der Code einmal ausgeführt (50% der Position geschlossen)
Die aktuelle Lotsitze kriege ich raus nur die Initiale nicht..
Hallo ! Ich bin Neuling, kann mir bitte jemand sagen, wie ich
dieses Script zum Laufen bringe. Wo muß ich das einfügen ?
Es soll anzeigen, wieviele Sekunden noch bis Kerzenschluss sind. Ich trade hauptsächlich den 5min time-frame.
Vielen Dank !
ich habe das Problem, wenn ich zum Beispiel auf dem M1 (Minutenchart) die Reaktionen des Underlyings auf bestimmte News Veröffentlichungen in der Vergangenheit anschauen möchte, dass beim Zurückscrollen mit der Maus im M1 chart relativ bald (nach ca. 6 Monaten), Endstation ist -das heisst das keine historischen M1 bars mehr geladen werden.
Wie und wo kann man einstellen, dass ich eben mit dem M1 chart nicht nur ca.6 Monate, sondern eben gleich ein paar Jahre zurück scrollen kann?
ich habe eine Frage zur Anzeige von einem Custom Indikator im Hauptfenster, den ich in einem EA verwende. Und zwar will ich den CI im Hauptfenster anzeigen lassen, aber mit den input Variablen, die ich im EA eingegeben habe.
Derzeit habe ich nur eine Möglichkeit gefunden, den CI mit den Standardwerten in den Hauptchart anzeigen zu lassen. Aber das will ich ja nicht, ich will den CI mit den Werten anzeigen lassen, die ich als Benutzer im EA eingebe.
ich bin neu hier und buchstäblich den ganzen Tag erfolglos damit verbracht, einen Code in MetaEditor zu hinterlegen. 2 Fehlermeldungen wollen einfach nicht weggehen und ich bin inzwischen echt mit meinem Latein am Ende.
Die Fehlermeldungen lauten wie folgt: '{' - unexpected end of program (Zeile 106 Spalte 48) '{' - unbalanced parentheses (Zeile 79 Spalte1).
Ich habe alles versucht, um diese Fehlermeldungen zu eliminieren, aber ich habe es einfach nicht geschafft.
Vielleicht hat hier der ein oder andere eine Idee, woran es liegen könnte.
Es handelt sich wirklich nur um 2 kleine Fehler. Ich bin mir sicher, dass jemand von Ihnen da draußen das Problem bereits gelöst hat und ich würde mich sehr freuen, wenn Sie Ihr Wissen mit mir teilen könnten.
// Declare global variables
double MovingAverageBuffer[];
double LastTradePrice;
int LastTradeDirection;
int LastTradeBar;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
// Resize the moving average buffer
ArrayResize(MovingAverageBuffer, Bars - MovingAveragePeriod + 1);
// Calculate the moving average
for (int i = 0; i < Bars - MovingAveragePeriod + 1; i++)
{
double sum = 0.0;
for (int j = i; j < i + MovingAveragePeriod; j++)
{
sum += Close[j];
}
MovingAverageBuffer[i] = sum / MovingAveragePeriod;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| Handle the tick event |
//+------------------------------------------------------------------+
void OnTick()
{
// Get the current price
double currentPrice = Bid;
// Check if the last trade was a buy
if (LastTradeDirection == 1)
{
// Check if the price has crossed below the moving average
if (currentPrice < MovingAverageBuffer[LastTradeBar])
{
// Place a sell order at the current price
double stopLoss = currentPrice + StopLossPips * Point;
double takeProfit = currentPrice - TakeProfitPips * Point;
OrderSend(Symbol(), OP_SELL, LotSize, currentPrice, 0, stopLoss, takeProfit, "Sell order", 0, 0, Red);
LastTradeDirection = -1;
LastTradePrice = currentPrice;
LastTradeBar = Bars - 1;
}
}
// Check if the last trade was a sell
else if (LastTradeDirection == -1)
{
// Check if the price has crossed above the moving average
if (currentPrice > MovingAverageBuffer[LastTradeBar])
{
// Place a buy order at the current price
double stopLoss = currentPrice - StopLossPips * Point;
double takeProfit = currentPrice + Take
Das Problem:
Um 8:00 gibt es plötzlich keinen Preis, sondern (in diesem Fall) erst um 8:05 (bisher einmaliges Vorkommen).
Als Folge davon wird der Vortages Open genommen.
Das macht natürlich die gesamte Weiterberechnung falsch. Wenn ich einfach den erste Open des Tages nehme, bekomme ich Schwierigkeiten bei einem Broker, der z.B. durchgehende Preise hat.
Ich kriege eine Korrektur des Codes einfach nicht gebacken, irgendwie drehe ich mich gedanklich im Kreis; mittlerweile artet das zum Drehwurm aus und ich brauche bitte einen Denkanstoß.
Danke. AVT
Sehr geehrte Wissende,
ich habe einen EA erstellt. Die benötigten Daten kommen von einem Indicator, natürlich. Nun ist es so, das die Werte i+1, i+2, usw. korrekt erkannt werden. Den Wert von i+0 bekommt / oder verarbeitet der EA aber nicht richtig. Kann das am Indicator liegen? Läst sich das korrigieren? Danke im Voraus!!
int init()
{
IndicatorShortName("Percentage Price Follower");
IndicatorDigits(Digits);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,PPF);
return(0);
}
int deinit()
{
return(0);
}
int start()
{
if(Bars<=3) return(0);
int ExtCountedBars=IndicatorCounted();
if (ExtCountedBars<0) return(-1);
int limit=Bars-2;
if(ExtCountedBars>2) limit=Bars-ExtCountedBars-1;
int i;
i=limit;
while(i>=0)
{
if (i>Bars-4)
{
PPF[i]=Close[i];
}
else
{
if (PPF[i+1]<Close[i])
{
PPF[i]=PPF[i+1]+(High[i]-Low[i])*One_Percentage/100;
}
else
{
if (PPF[i+1]>Close[i])
{
PPF[i]=PPF[i+1]-(High[i]-Low[i])*One_Percentage/100;
}
else
{
PPF[i]=PPF[i+1];
}
}
}
Kann man in der Order History heraus finden, ob eine Order manuell angelegt wurde oder durch eine Pending Order ausgelöst wurde?
Es geht um Programmierung, falls das nicht klar ist.
Ich würde gerne den EA FX Fortnite
verwenden, weiß aber nicht, wie man die
Lot-Größe anpasst, wenn man, wie ich, nur
auf Hebel 1:30 traden kann.
Die Empfehlung bzw. Werkseinstellungen
sind nämlich für Hebel 1:100 vorgesehen.
Ich habe Angst, zu wenig Margin zu haben wegen des Drawdowns.
Die Lotgrößenempfehlung des Autors sind: 100.000 € : 1 L
50.000€ : 0,5 L
(...)
und Hebel 1:100
Wie rechne ich die Lots denn jetzt um für
Hebel 1:30? Teile ich das durch 3,3 oder
wie?🤔😅
Der Drawdown kann angeblich locker
bis ca. 70% sein.
Würde mich freuen, wenn mir jemand weiterhelfen könnte.🙏😊
Hallo, mir ist zwar bekannt, dass die Frage hier bereits gestellt wurde, aber leider konnte ich die Herausforderung nicht lösen. Bitte um Hilfe.
Der Web-Browser soll geöffnet werden mit der ausgewählten D
atei
Code:
// Import the ShellExecuteW() function from the shell32.dll
#import "shell32.dll"
int ShellExecuteW(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd);
#import
void OnStart()
{
// Show file open dialog
string filenames[];
if(FileSelectDialog("Dateien zum Laden auswählen", NULL,
"bericht (*.html)|*.html|All files (*.*)|*.*",
FSD_ALLOW_MULTISELECT|FSD_FILE_MUST_EXIST, filenames, "data.html")>0)
{
// Get the path of the terminal data directory
string dataPath = TerminalInfoString(TERMINAL_DATA_PATH);
// Open each selected file in the default web browser
int total=ArraySize(filenames);
for(int i=0; i<total; i++)
{
// Construct the full path of the file relative to the terminal data directory
string filePath = dataPath + "\\" + filenames[i];
Print(filePath);
// Open file in default web browser using ShellExecuteW()
bool result = (ShellExecuteW(0, "open", filePath, "", "", 1) > 32);
if(result)
{
Print("Datei ", filenames[i], " erfolgreich geöffnet.");
}
else
{
Print("Fehler beim Öffnen von ", filenames[i]);
}
}
}
else
{
Print("Keine Dateien ausgewählt.");
}
}
2023.03.28 13:53:54.991 auto open log (DE40,H1) Fehler beim Öffnen von report.html
gibt es einen EA oder einen Indikator der die Pfeile im MT4-Chart erkennt und nur dann automatisch einen Trade absetzt (z.B. MT2), wenn die Kerzenzeit in der der Pfeil erscheint kleiner als 10 Sekunden ist. Vielleicht sogar einstellbar zw. 0 und 10 Sekunden.
Also Kerzenablauf wäre M1, er dürfte dann nur Traden, wenn inerhalb der ersten 0-10 Sekunden ein Pfeil erschein. Ansonsten sollen Pfeile ignoriert werden.
Wäre schön, wenn das schon jemand mal gehört/gelesen hat und freue mich über Tips.
ich bräuchte Hilfe bzw. einen Denkanstoß wie ich die beiden Dinge aus der Themenüberschrift umsetze.
Die Trade.Modify die ich bisher gefunden habe, haben leider nicht so funktioniert im backtest .. außerdem mache ich Verlust durch Trades die innerhalb der Periode mehrfach ausgelöst werden. Obwohl doch eigentlich das Sell Signal nur einmal pro Periode kommen dürfte?! Wahrscheinlich ist das Signal aktiv innerhalb der Periode (1) und daher die mehrfach Auslösungen der Verkaufsorder innerhalb der Periode.
Trade.Modify soll im Grunde auch ein Close sein .. sobald die Bedingung erfüllt ist, soll die Position geschlossen werden.
if ( Zeitstempel != iTime(NULL,period,0) ) // hier erfasst der EA, dass gerade eine neue Chartperiode begonnen hat.
{
Zeitstempel = iTime(NULL,period,0); // Angleichung der Variable, damit wieder die nächste Chartperiode erkannt werden kann.
SellPushErlaubt = true; // Erlaubnis erteilt, dass wieder eine Pushnachricht versendet werden darf.
}
if ( // Bedingungen )
signal="sell";
if ( SellPushErlaubt) // aber nur einmal pro Chartperiode
Ich möchte zu einer bestimmten Zeit ein Schleifendurchlauf starten. Was auch funktioniert.
Dann weise ich der ersten While-Schleife (Zeile18) an das sie 240 mal durchlaufen werden soll.
Danach wird die Variable „_time_waiting“ (Zeile19) auf „TimeCurrent() + 10 Sekunden“ gesetzt.
In Zeile 20 folgt nun die zweite While-Schleife und setzt die beiden PendingOrders.
Nach 10 Sekunden werden die PendingOrders gelöscht (Zeilen 26,27,28).
In Zeile 31 wird die erste While-Schleife um 1 weiter gezählt.
Das Problem:
Wenn die PendingOrders gesetzt wurden bleiben sie für 10 Sekunden stehen. Danach werden sie nicht gelöscht sondern es kommt nur ein kurzes blinken (an/aus). Und dann werden die PendingOrders wieder an die gleiche Stelle gesetzt wo sie vorher waren mit den gleichen Preisen. Obwohl sich der Chart verändert hat. Das heißt, die PendingOrders gehen mit dem Chart nicht mit.
Kann es sein, dass der EA durch die While-Schleifen blockiert wird?
Wenn ja, wie müsste man den Code ändern?
Ich wäre wirklich für jede Hilfe dankbar.
MfG Hippi
Code:
#property strict
#include <Trade\Trade.mqh>
CTrade trade;
double kontrakt = 0.01;
int anfang = 1;
int ende = 240;
datetime _time_waiting = 0;
void OnTick(void){
datetime Istzeit = TimeCurrent();
string Std_Min_Sek = TimeToString(Istzeit,TIME_SECONDS);
if(Std_Min_Sek == "19:45:15"){
while (anfang < ende){ //1. while-Schleif
_time_waiting = TimeCurrent() + 10;
while ( TimeCurrent() < _time_waiting ){ //2. while-Schleife
if(OrdersTotal() == 0)
trade.BuyStop(kontrakt,Ask+3500*_Point,_Symbol,0,0,ORDER_TIME_GTC,0,"Automatisch");
if(OrdersTotal() == 1)
trade.SellStop(kontrakt,Bid-3500*_Point,_Symbol,0,0,ORDER_TIME_GTC,0,"Automatisch");}
for(int i= OrdersTotal()-1; i >= 0; i--){
ulong ticket = OrderGetTicket(i);
trade.OrderDelete(ticket);}
Comment(Std_Min_Sek, "\n \n", anfang);
anfang = anfang + 1;}}
}//End OnTick
Ich frage die Differenz high-low der letzten 100 Tage ab, wie kann man sicherstellen das nur Mo-Fr in der Abfrage verwendet und Sonntag nicht berücksichtigt wird.
Hallo, nach vielen Versuchen bitte ich als Neueinsteiger um Hilfe:
Habe am PC unter MT4 Benachrichtigung auf Push umgestellt, daher die App auf mein Handy installiert und die angegeben ID eingetragen, wenn ich nun einen Test bei MT4 am PC auslöse, kommt auch die Testnachricht sofort aufs Handy.
Das Problem scheint aber noch die Richtige Einstellung bei Ereignisse zu sein.
Was ich bereits per Mail bekommen habe würde ich nun gerne als Push Nachricht erhalten, es findet sich aber keine Einstellung unter Aktion, da kann man nur Mail Einstellen, wie kann ich die Aktion Push unter Optionen - Ereignisse einstellen?
Vielen Dank für eure Hilfe.
Könnte mir bitte jemand helfen, wie ich den Loop für zeitabhängige Berechnung im Indikator am besten formuliere?
Einstellungen:
1. Der Indikator wird automatisch/gezwungen im m5 Chart geladen.
Das ist möglich, weil er nur Daten zeigt (keine Kurse oder sonstiges).
2. Zeiteinheiten für die Neuberechnung der Werte m5 bis w1.
3. Es existiert schon ein Array
int iATimFrams[7]={5,15,30,60,240,1440,10080};
4. Berechnungen sollen mit jedem Beginn einer neuen Zeiteinheit geschehen.
OnCalculate sieht bisher so aus:
Code:
// ====================================== first run
if(prev_calculated==0)
{
// === calculate the past values
CalcAdr30(); //from yesterday 30 days back
CalcAdr0(); //for today
CalcAdrLeft(); //for today
CalcChange(); //summaries till now
CalcState(); //summaries till now
}
else
{
// === hier fehlt mir eine elegante Lösung
}
Wäre es besser, ein zweites Array mit den Repeat-Werten für den m5 Chart
int iACalcRepeats[7]={1,3,6,12,48,288,2016};
zu schaffen und mit dem zu rechnen als die Berechnungs Timeframes durch _Period zu dividieren?
Und/oder wäre es besser, die einzelnen CalcXy() Funktionen in einem 5minuten Timer zu packen anstatt als else Anweisung in OnCalculate (oder spielt das keine Rolle)?
Wäre nett, wenn mir Programmier-Profis da zeigen könnten, wie man es am besten macht.
Danke. AVT
Hallo ich habe damals Hilfe bekommen um ein Indikator zu Programmieren... Leider hab ich keine Ahnung von Indikatoren^^ noch nicht
Im Virtuellen Modus funktionier er einwandfrei aber ohne überhaupt nicht. Könnte jemand so nett sein und drüber schauen warum er im Journal
2023.03.03 21:58:55.577 2022.01.03 00:05:00 _Mein_Linien_Grid_Indikator_ GBPUSD,M15: array out of range in '_Mein_Linien_Grid_Indikator_.mq4' (228,21)
ausgibt?
Ich bedanke mich rechtherzlich und freue mich jetzt schon auf eine Antwort
Gruß Marcel
Ich habe einen ea der zu einer gewissen Zeit ein buy und ein sell Limit mit einen gewissen abstand in den Markt gibt .
Ich habe den ea 3 mal mit unterschiedlichen rinstellungen auf verschieden charts . Es hat bis vor 1 Woche immer alles funktioniert . Aber jetzt setzt er mir nich alle Order, manchmal nur die 3 sell manchmal eine buy eine sell aber fast nie alle 3 buy und alle 3 sell . Hat jemand eine Idee?