![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
So weit, so gut:
//+------------------------------------------------------------------+
//| Fibo trading.mq4 |
//| Minodi |
//| minodi@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Minodi"
#property link "minodi@yandex.ru"
extern int Zeitraum_EMA = 233,
Zeitraum_SMA = 233,
Stoploss = 30,
extern double Lot = 0,01;
extern string SesEnd ="22:00"; //Grenzzeit für Hai oder Low
//+------------------------------------------------------------------+
//| Skriptprogramm-Startfunktion |
//+------------------------------------------------------------------+
int start()
{
//------- Tagespreise, Fibs und Hi-Low-Rendering-Zeit--------------+
int shift = iBarShift(NULL,1440,Time[0]) + 1;
double HiPrice = iHigh(NULL,1440,shift); //Höchster Preis
double LoPrice = iLow(NULL,1440,shift); // niedriger Preis
double OpPrice = iOpen (NULL,1440,shift); //offener Preis
double ClPreis = iClose (NULL,1440,shift); // Schlusskurs
datetime StTime = iTime(NULL,1440,shift); // ?
if(TimeDayOfWeek(StTime)==0/*Sunday*/)
{//Add fridays high and low
HiPrice = MathMax(HiPrice,iHigh(NULL,1440,shift+1));
LoPreis = MathMin(LoPreis,iLow(NULL,1440,shift+1));
OpPreis = iOpen(NULL,1440,shift+1);
ClPreis = iClose (NULL,1440,shift+1);
}
double Pivot =(HiPrice+LoPrice+ClPrice)/3;
double Range =HiPrice-LoPrice;
double Fibo138 =1,382*Bereich+LoPreis;
double Fibo162 =1,618*Bereich+LoPreis;
double Fibo_138 =LoPrice-(1.382*Range-Range);
double Fibo_162 =LoPrice-(1.618*Range-Range);
//---------------- HiTime und Low-----------------------------------------+
int HiTime,LoTime;
int time; // beim nächsten Balken rollen die Werte
if (time!=Time[0]){HiTime=0;LoTime=0;time=Time[0];}
wenn (High[0]>HiPrice)HiTime=TimeCurrent();
if (Low[0]<LoPrice)LoTime=TimeCurrent();
Comment("Bei diesem Balken: "+"\n Time High Point="+HiTime+"\n Time Low Point="+LoTime);
//-----------------Ценовой диапазон Демарка-------------------------------+
int currDay, i=0; //
if (aktuellerTag!=ZeitTag(Zeit[i]))
{
if (ClPrice<OpPrice) double x=(HiPrice + LoPrice + LoPrice)/2;
wenn (ClPrice>OpPrice) x=(HiPrice + LoPrice + ClPrice + HiPrice)/2;
if (ClPrice==OpPrice) x=(HiPrice + LoPrice + ClPrice + ClPrice)/2;
i++;
}
double MaxDay = x - LoPrice; // Preisbereich markieren
double MinDay = x - HiPrice; // Preisspanne markieren
// -----------Скользящие средние---------------------------------------------+
double EMA = iMA(15,0,period_EMA,0,MODE_EMA, PRICE_CLOSE,0);
double SMA = iMA(15,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0);
double EMA1 = iMA(60,0,period_EMA,0,MODE_EMA,PRICE_CLOSE,0);
double SMA1 = iMA(60,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0);
//----------------Удаление вчерашних ордеров---------------------------------+
//------------------Ордера----------------------------------------------------+
Liebe Forumsmitglieder, überprüfen Sie den Code, ich plane, schrittweise hinzuzufügen
Dies sind die Parameter, die ich Ihnen gegeben habe, setzen Sie sie ein, bevor Sie beginnen
int HiTime,LoTime;
int time; // на следующем баре обнкляем значения
Вот эти параметры ято я давал, поместите перд стартом
int HiTime,LoTime;
int time; // на следующем баре обнкляем значения
Liebe Forumsmitglieder, bitte passen Sie auf und sagen Sie uns, welche Fehler gemacht wurden:
//+------------------------------------------------------------------+
//| Fibo trading.mq4 |
//| Minodi |
//| minodi@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Minodi"
#property link "minodi@yandex.ru"
extern int Zeitraum_EMA = 233,
Zeitraum_SMA = 233,
Stoploss = 30,
Magie = 55;
extern double Lot = 0,01;
extern string SesEnd ="22:00"; //Grenzzeit für Hai oder Low
int HiTime,LoTime;
int time; // beim nächsten Balken werden die Werte hochgezählt
//+------------------------------------------------------------------+
//| Skriptprogramm-Startfunktion |
//+------------------------------------------------------------------+
int start()
{
//------- Tagespreise, Fibs und Hi-Low-Rendering-Zeit--------------+
int shift = iBarShift(NULL,1440,Time[0]) + 1;
double HiPrice = iHigh(NULL,1440,shift); //Höchster Preis
double LoPrice = iLow(NULL,1440,shift); // niedriger Preis
double OpPrice = iOpen (NULL,1440,shift); //offener Preis
double ClPreis = iClose (NULL,1440,shift); // Schlusskurs
datetime StTime = iTime(NULL,1440,shift); // ?
if(TimeDayOfWeek(StTime)==0/*Sunday*/)
{//Add fridays high and low
HiPrice = MathMax(HiPrice,iHigh(NULL,1440,shift+1));
LoPreis = MathMin(LoPreis,iLow(NULL,1440,shift+1));
OpPreis = iOpen(NULL,1440,shift+1);
ClPreis = iClose (NULL,1440,shift+1);
}
double Pivot =(HiPrice+LoPrice+ClPrice)/3;
double Range =HiPrice-LoPrice;
double Fibo138 =1,382*Bereich;
double Fibo162 =1,618*Bereich;
double Fibo_138 =(LoPrice-1.382*Range)-Range;
double Fibo_162 =(LoPrice-1.618*Range)-Range;
//---------------- time hai and low-----------------------------------------+
if (time!=Time[0]){HiTime=0;LoTime=0;time=Time[0];}
wenn (High[0]>HiPrice)HiTime=TimeCurrent();
if (Low[0]<LoPrice)LoTime=TimeCurrent();
Comment("Bei diesem Balken: "+"\n Time High Point="+HiTime+"\n Time Low Point="+LoTime);
//-----------------Ценовой диапазон Демарка-------------------------------+
int currDay, i=0; //
if (aktuellerTag!=ZeitTag(Zeit[i]))
{
if (ClPrice<OpPrice) double x=(HiPrice + LoPrice + LoPrice)/2;
wenn (ClPrice>OpPrice) x=(HiPrice + LoPrice + ClPrice + HiPrice)/2;
if (ClPrice==OpPrice) x=(HiPrice + LoPrice + ClPrice + ClPrice)/2;
i++;
}
double MaxDay = x - LoPrice; // Preisbereich markieren
double MinDay = x - HiPrice; // Preisspanne markieren
// -----------Скользящие средние---------------------------------------------+
double EMA = iMA(15,0,period_EMA,0,MODE_EMA, PRICE_CLOSE,0);
double SMA = iMA(15,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0);
double EMA1 = iMA(60,0,period_EMA,0,MODE_EMA,PRICE_CLOSE,0);
double SMA1 = iMA(60,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0);
//------------------Ордера----------------------------------------------------+
wenn (HiTime>LoTime){
int ticket1 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,HiPrice,0,0,Pivot,NULL,Magic,58000,Red);
int ticket2 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,HiPrice,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket3 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo138,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket4 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo138,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket5 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo162,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket6 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo162,0,0,Pivot,NULL,Magic,58000,Red);
}
wenn (HiTime<LoTime){
int ticket7=OrderSend(Symbol(),OP_BUYLIMIT,Lot,LoPrice,0,0,Pivot,NULL,Magic,58000,Red);
int ticket8=OrderSend(Symbol(),OP_BUYLIMIT,Lot,LoPrice,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket9=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_138,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket10=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_138,0,0,Pivot,NULL,Magic,58000,Red);
int ticket11=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_162,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket12=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_162,0,0,Pivot,NULL,Magic,58000,Red);
}
if (HiTime>LoTime && ClPrice>Pivot) {
int ticket13=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Pivot,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket14=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Pivot,0,0,Fibo138,NULL,Magic,58000,Red);
}
if (HiTime<LoTime && ClPrice<Pivot)
int ticket15=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Pivot,0,0,LoPreis,NULL,Magic,58000,Red);
int ticket16=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Pivot,0,0,Fibo_138,NULL,Magic,58000,Red);
}
zurück(0);
//+------------------------------------------------------------------+
auf den ersten Blick die Parameter:
int currentDay;
für den Start
Meine Herren des Forums, helfen Sie zu verstehen....
Hier ist ein Teil des Codes (der Hauptcode stammt aus dem Expert Advisor Construction Manual)
// Orderfunktion
// Globale Variablen:
// Mas_Ord_New[31][9] // Array der zuletzt bekannten Orders
// Mas_Ord_Old[31][9] // Array der vorherigen (alten) Orders
// 1. Index = Ordernummer
// [][0] ist nicht definiert
// [][1] offener Orderpreis (abs. eines Auftrags (abc-Kurs)
// [][2] StopLoss eines Auftrags (abc-Kurs)
// [][3] TakeProfit eines Auftrags (abc-Kurs)
// [][4] Auftragsnummer
// [][5] Anzahl der Lots eines Auftrags. (Abc Rate)
// [][6] Auftragsart 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] magische Zahl der Bestellung
// [][8] 0/1
if (Mas_Ord_Old[old][6]==0 && Bid>Mas_Ord_Old[old][2] && Bid<Mas_Ord_Old[old][3])
Inform(1, Mas_Ord_Old[old][4]); // Der Kaufauftrag wurde also durch das Zählersignal geschlossen
else if (Mas_Ord_Old[old][6]==0 && Bid<=Mas_Ord_Old[old][2])
Inform(19,Mas_Ord_Old[old][4],Mas_Ord_Old[old][2]) // das bedeutet, dass SL ausgelöst hat
else if (Mas_Ord_Old[old][6]==0 && Bid>=Mas_Ord_Old[old][3])
Inform(20,Mas_Ord_Old[old][4],Mas_Ord_Old[old][3]) // TA ausgelöst
else if (Mas_Ord_Old[old][6]==1 && Ask<Mas_Ord_Old[old][2] && Ask>Mas_Ord_Old[old][3])
Inform(2, Mas_Ord_Old[old][4]); // So wird die Verkaufsorder durch das Zählersignal geschlossen
else if (Mas_Ord_Old[old][6]==1 && Ask>=Mas_Ord_Old[old][2])
Inform(19,Mas_Ord_Old[old][4],Mas_Ord_Old[old][2]) // das bedeutet, dass SL ausgelöst hat
else if (Mas_Ord_Old[old][6]==1 && Ask<=Mas_Ord_Old[old][3])
Inform(20,Mas_Ord_Old[old][4],Mas_Ord_Old[old][3]); // TA ausgelöst
Der Rest ist nicht von Interesse...
Das Problem: In 90% der Fälle wird der richtige Parameter angezeigt, d.h. wenn SL ausgelöst wird, ist der Parameter "19", wenn TP "20", wenn die Order manuell oder durch ein Zählersignal geschlossen wird, ist der Parameter "1" oder "2". Das war so geplant.
Aber manchmal (ziemlich oft) wird statt "20" "19" zurückgegeben (oder umgekehrt), oder sogar "1"("2"). Bitte helfen Sie mir, die "if"-Funktion korrekt zu beschreiben: als Bedingung für den Abschluss von Aufträgen.
Ich denke, der Grund könnte in der Rundung der Preise liegen?