Hilfe bei der Codierung - Seite 281

 
mladen:
stevenpun Sie sagen, dass der Kauf 0,1 Lot + 0,2 Lot hat und der Verkauf 0,4 Lot sein sollte. Könnten Sie das bitte klarstellen?

Hallo mladen , sorry für die späte Antwort .

Weil habe krank für einige Tage .

Ich habe ein Bild gemacht

Zum Beispiel, wenn der Kauf haben 2 offene Bestellung (0,1 Lot + 0,2 Lot ), aber plötzlich der Zug haben Änderung zu verkaufen .

Die Ea öffnet einen Verkauf um 0.1 Lot, aber ich möchte, dass sie für 0.4 Lot öffnet.

Ist das möglich, es zu ändern ?

Dateien:
lot_explain.jpg  121 kb
 
hermes:
Hallo noch einmal,

Ich habe versucht, die obige Funktion mit einem Kommentar zu verwenden, aber es wurde nur der Max angezeigt. Können Sie vielleicht mit zwei Funktionen helfen. Eine, die den unmittelbaren Zeilenpreis über Bid anzeigt und die zweite die Zeile unter Bid. Ich danke Ihnen.

Hier ist der Code.

//+------------------------------------------------------------------+

//| SimpleGrid.mq4+

//+------------------------------------------------------------------+

#include

#include

#property strict

// exportierte Variablen

extern string GridStartingPrice = " Startpreis zum Platzieren von Linien ";

extern double GSP = 0.0;

extern int GR = 5;

extern double GridStep = 5;

externe Farbe CGL = Gold;

externe Farbe BGL = Grün;

externe Farbe SGL = Rot;

extern bool ClearAllObjects = False;

// lokale Variablen

double PipValue=1; // diese Variable dient der Unterstützung von 5-stelligen Brokern

bool Terminated = false;

string LF = "\n"; // zu verwenden in benutzerdefinierten oder Utility-Blöcken, in denen Zeilenvorschübe benötigt werden

int NDigits = 4; // wird meist für NormalizeDouble in Flex-Blöcken verwendet

int ObjCount = 0; // Zählung aller im Diagramm erstellten Objekte, ermöglicht die Erstellung von Objekten mit eindeutigen Namen

int aktuell = 0;

int init()

{

NDigits = Digits;

if (false) ObjectsDeleteAll(); // Löschen des Diagramms

Comment(""); // Löschen des Diagramms

return(0);

}

// Expertenstart

int start()

{

if (Balken < 10)

{

Kommentar("Nicht genug Balken");

return (0);

}

if (Terminated == true)

{

Comment("EA Terminated.");

return (0);

}

OnEveryTick7();

return (0);

}

void OnEveryTick7()

{

PipValue = 1;

if (NDigits == 3 || NDigits == 5) PipValue = 10;

CentreGridLine();

}

void CentreGridLine()

{ if (ObjectFind("CGL")) == (-1) )

{

{

string objName = "CGL" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP);

ObjectSet(objName, OBJPROP_PRICE1, GSP);

ObjectSet(objName, OBJPROP_COLOR,CGL);

}

TradeLine();

UprBnd();

LwrBnd();

}

}

void TradeLine()

{

int i;

double GridStep1= (GridStep*2);

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;

double SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point));

{

for(i=0; i<GR;i++)

{

SGL("Verkaufen "+i,BBGSP+GridStep1*i*PipValue*Point);

}

}

{

for(i=0; i<GR;i++)

{

BGL("Kaufen "+i,SSGSP-GridStep1*i*PipValue*Point);

}

}

}

void BGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, BGL);

}

void SGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, SGL);

}

void UprBnd()

{ if (ObjectFind("UPRBND")) == (-1) )

{

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double price= (BGSP+((GridStep*(GR))*PipValue*Point)) ;

string objName = "UPRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, DodgerBlue);

ObjectSet(objName, OBJPROP_WIDTH,3);

}

}

void LwrBnd()

{ if (ObjectFind("LWRBND") == (-1) )

{

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double price= (SGSP-((GridStep*(GR))*PipValue*Point));

string objName = "LWRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, Tomate);

ObjectSet(objName, OBJPROP_WIDTH, 3);

}

}

int deinit()

{

if (ClearAllObjects) ObjectsDeleteAll();

return (0);

}

//+------------------------------------------------------------------+

Hermes

Können Sie die mq4-Datei anhängen?

 
mladen:
Hermes Können Sie die mq4-Datei anhängen?

Hier ist sie. Danke

Dateien:
simpleg.mq4  4 kb
 

Hallo,

ich brauche Hilfe mit einer Ea, die ich gemacht habe, ist es auf 2 gleitenden Durchschnitt und 2 verschiedene Zeitrahmen, um Trend zu filtern, würde ich gerne einen RSI-Indikator hinzufügen, um die Trades zu filtern, Setup zum Beispiel RSI Periode 8 Stufe 50, wenn höher als RSI Stufe 50 bei der Kreuzung öffnen wir nur verkaufen, Markt, um zu bestellen, wenn niedriger als RSI Stufe 50 bei der Kreuzung öffnen wir nur kaufen, Markt Aufträge. Ich füge die Ea, auf den ersten war realted zu keltnerchannels, aber jetzt möchte ich nur als Ma1 und Ma2 verwendet werden.

Kann mir jemand mit diesen Änderungen helfen?

Dankeschön

Dateien:
 
hermes:
Hier ist es. Danke

Hermes

Probieren Sie dies aus: simpleg_1.mq4

Dateien:
simpleg_1.mq4  6 kb
 
daniel1983:
Hallo!

Ich brauche Hilfe mit einer Ea, die ich gemacht habe, ist es auf 2 gleitenden Durchschnitt und 2 verschiedene Zeitrahmen, um Trend zu filtern, würde ich gerne einen RSI-Indikator hinzufügen, um die Trades zu filtern, Setup zum Beispiel RSI Periode 8 Stufe 50, wenn höher als RSI Stufe 50 bei der Kreuzung öffnen wir nur verkaufen, um Markt, wenn niedriger als RSI Stufe 50 bei der Kreuzung öffnen wir nur kaufen, um Markt. Ich füge die Ea, auf den ersten war realted zu keltnerchannels, aber jetzt möchte ich nur als Ma1 und Ma2 verwendet werden.

Kann mir jemand mit diesen Änderungen helfen?

vielen Dank!

daniel1983

Es ist fast sicher, dass Sie nie Kreuze von mas und rsis zur gleichen Zeit bekommen werden (d.h. Sie werden fast nie Signale bekommen). Probieren Sie es aus: Erstellen Sie einen einfachen Indikator, der das tut, was Sie beschreiben, und Sie werden sehen, wie selten diese Bedingungen gleichzeitig auftreten

 
mladen:
daniel1983 Es ist fast sicher, dass Sie nie Kreuzungen von mas und rsis zur gleichen Zeit erhalten werden (d.h. Sie werden fast nie Signale erhalten). Probieren Sie es aus: Erstellen Sie einen einfachen Indikator, der das tut, was Sie beschreiben, und Sie werden sehen, wie selten diese Bedingungen gleichzeitig auftreten

Hallo Mladen,

ich meine

- bei einem Level zwischen 0 und 50 nur verkaufen

- bei einem Niveau zwischen 50 und 100 nur kaufen,

nicht an diesem gleichen Schnittpunkt, Kreuzung kann auf jedem Niveau (43, 41, 18, 25) für den Kauf von Marktaufträgen, die Bestätigung mit höheren Zeitrahmen Trend. Ich habe dies getestet und ca. 80% der geöffneten Orders sehen so aus, dass mit diesem Filter nicht in die entgegengesetzte Richtung geöffnet wird.

Im Moment öffnet die Ea Kaufauftrag, wenn die Kreuzung einen Abwärtstrend beginnt, mit diesem Filter in 80% der Fälle wird es diese Kreuzung ohne Eingabe der Reihenfolge an diesem Punkt zu filtern. wo diese Ma Kreuze.

In dieser Ea habe ich highertimeframe eingegeben, aber ich habe Test mit besseren Ergebnissen mit niedrigeren Zeitrahmen für die Filterung Trend gemacht.

Ich füge ein Bild von einem Beispiel für einen Test konfiguriert:

Für EURUSD

In diesem Fall bin ich mit EMA 2 und EMA 67, und RSI (8) timeframe 1min und Hitimeframe 5min, in diesem Fall haben Sie einen Kauf Markt Ordnung, die unrentabel ist, dieser Kauf Markt Ordnung geschieht bei der Kreuzung von EMa's aber mit RSI auf einem Niveau unter 50.

Dann haben Sie eine Verkaufsorder, die bei der Kreuzung der EMa's eröffnet wird, aber mit einem RSI unter 50, und diese Order ist die richtige Marktorder, die ich aus allen Signalen herausfiltern möchte.

Ist es möglich, dies zu tun?

Vielen Dank!

Daniel

Dateien:
rsi_filter.png  32 kb
 
mladen:
Hermes Probieren Sie es aus: simpleg_1.mq4

Hallo Mladen,

Endlich funktioniert es damit. Dankeschön

void LoopBS()

{

double max =(ObjectGet("UPRBND",OBJPROP_PRICE1));

double min =(ObjectGet("LWRBND",OBJPROP_PRICE1));

for (int i =ObjectsTotal()-1; i>=0; i--)

{

string name = ObjectName(i);

if (StringSubstr(name,0,3)=="Kaufen")

{

double BS=ObjectGet(name,OBJPROP_PRICE1);

if ((Ask<BS) && (BSmin))

{

max = ObjectGet(name,OBJPROP_PRICE1);

{

Comment(DoubleToStr(BS,Digits)," ");

}

}

}

}

}

 

Unpräzise Signale

Ungenaue Signale

Liebe Handwerker! Könntet Ihr besser signalisieren, was zu tun ist. M1, M5, M15

Dateien:
.......png  31 kb
 
DMNIK:
Ungenaue Signale Liebe,Handwerker! Könnten Sie besser signalisieren, zu tun. M1, M5, M15

Es wird lediglich angezeigt, ob die letzten 3 Schlusskurse größer oder kleiner sind als die letzten 3 Eröffnungen. Daran gibt es nichts zu verbessern