Wie programmiert man? - Seite 318

 
mladen:
dasio Es läuft bereits eine Schleife durch alle Stunden des aktuellen Tages. Ich habe die iClose() und iOpen() nur als Beispiel für einen Aufruf von einem anderen Zeitrahmen als 1 Stunde platziert. Wenn Sie auf einen anderen Tag als den aktuellen zugreifen möchten, dann ersetzen Sie die "0" in der Datetime startTime=iTime(NULL,PERIOD_D1,0); mit einem beliebigen Tag, für den Sie die Daten sammeln möchten

Ich danke Ihnen.

Vielleicht muss ich lernen.

Ich verstehe nicht, wie ich separate Berechnungen für 00:00 Kerzen - 01:00 - 02:00 usw. machen kann.

Entschuldigung

 

Signal-Probleme

Mladen

Danke, ich habe eng....Im immer noch experimentieren den code.I wird benachrichtigt werden, wenn durch.

 

dasio

Dieser Teil

int i=iBarShift(NULL,PERIOD_H1,startTime);

setzt das i auf die Verschiebung der ersten stündlichen Kerze am angegebenen Tag (deshalb wurde datetime startTime=iTime(NULL,PERIOD_D1,0); hinzugefügt - um die Startzeit des Tages herauszufinden), danach wird eine Schleife durch alle 1-Stunden-Bar-Werte gemacht, bis der Tag gleich bleibt (z.B. am Freitag wird die Schleife nicht 24 mal gemacht, sondern 22 oder 23, je nach Broker)

Wenn Sie das Gefühl haben, dass ein Array ein bisschen anders gemacht werden muss, lassen Sie mich wissen, ob das Ihre Idee war.)

dasio:
Vielen Dank!

Vielleicht muss ich lernen.

Ich verstehe nicht, wie ich separate Berechnungen für 00:00 Kerze - 01:00 - 02:00 usw. machen kann.

Entschuldigung
 

Wie macht man ein Expertenregister?

Hallo Programmierer,

Wie kann man ein paar zusätzliche Zeilen codieren, damit ein Expert nach einem erfolgreichen Handel stoppt?

Pips sind in der Tasche, dann machen Sie den Experten stoppt...

Vielen Dank

Kater98

 
mladen:
dasio

Dieser Teil

int i=iBarShift(NULL,PERIOD_H1,startTime);

setzt das i auf die Verschiebung der ersten stündlichen Kerze am angegebenen Tag (deshalb wurde datetime startTime=iTime(NULL,PERIOD_D1,0); hinzugefügt - um die Startzeit des Tages herauszufinden), danach wird eine Schleife durch alle 1-Stunden-Bar-Werte durchgeführt, bis der Tag gleich bleibt (z.B. am Freitag wird die Schleife nicht 24 Mal durchlaufen, sondern 22 oder 23 Mal, je nach Ihrem Broker)

Wenn du das Gefühl hast, dass ein Array ein bisschen anders gemacht werden muss, lass mich wissen, ob das deine Idee war.)

Ich danke Ihnen,

ich verstehe jetzt etwas mehr.

Aber ich brauche es zum Beispiel.

Ich muss Variablen etwas wie dieses zuordnen:

(Kerze 00:00 ; Variable = Close+High

Kerze 01:00 ; Variable1 = Close+Open

Kerze 02:00 ; Variable2 = Hoch+Tief;

Und so weiter für alle Stundenkerzen des Tages.

Die Variablen sind also als Double definiert.

Danach muss ich einige mathematische Berechnungen mit den Variablen durchführen und das Ergebnis einem Puffer zuordnen (das ist kein Problem).

Das Problem für mich ist die Variable association....

 

Ein weiteres Problem...Ich versuche, die Programmierung zu studieren und manchmal (nur manchmal?eheh) ich brauche Hilfe.

Wenn ich ein Ea habe, das zwei Pending Orders platziert, wie kann ich kodieren, wenn ich möchte, dass wenn eine Pending Order geöffnet wird, die andere Pending Order gelöscht werden muss?

Dankeschön

 

Sie müssen 2 Schleifen verwenden:

Zuerst müssen Sie die Aufträge zählen, um herauszufinden, ob einer der ausstehenden Aufträge zu einem "regulären" Auftrag geworden ist (Sie müssen also eine reguläre Zählung der Aufträge mit den Typen OP_BUY oder OP_SELL durchführen und, wenn Sie möchten, auch den Rest der Aufträge zählen).

Wenn es offene Aufträge gibt, müssen Sie eine weitere Schleife durchführen und alle Aufträge löschen, die nicht vom Typ OP_BUY oder OP_SELL sind.

Der Code könnte etwa so aussehen:

int opened =0;

int pending =0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
Ein anderes Problem...Ich versuche, die Programmierung zu studieren und manchmal (nur manchmal?eheh) brauche ich Hilfe.

Wenn ich ein Ea habe, das zwei Pending Orders platziert, wie kann ich dann codieren, dass wenn eine Pending Order geöffnet wird, die andere Pending Order gelöscht werden muss?

Vielen Dank!
 

Schließen Sie alle verkaufen oder alle kaufen Position nur (wenn hit Ziel Gewinn)

Hallo zusammen, ich bin neu im Bereich FX und EA. Ich habe versucht, einen EA für "close all sell" oder "close all buy" zu finden, wenn das Ziel erreicht ist, konnte aber nichts finden. Ich fand nur "close all sell" oder "all buy" ohne das "HIT TARGET or PROFIT". Ist es möglich, wenn jemand mir helfen könnte, 1 EA mit folgenden Funktionen zu erstellen:-

1) Alle Verkäufe schließen, wenn der Gewinn das X-Ziel erreicht.

2) Schließen Sie alle Käufe, wenn der Gewinn das X-Ziel erreicht hat.

3) Trailing Stop einbeziehen (wenn möglich, wenn nicht, kein Problem)

4) Schließen Sie nicht, wenn Eigenkapital oder Margin-Level weniger als X %, wenn schließen alle kaufen oder schließen alle verkaufen (Wenn möglich, wenn nicht kein Problem)

Anmerkung:

Wenn Nr. 4 ziemlich schwierig zu kodieren ist, also nur Nr. 1, 2 und 3 in einem EA.

Wenn Nr. 4 und 3 schwierig, also nur Nr. 1 und 2 in einem EA

Wenn es immer noch schwierig ist, erstellen Sie einfach Nr. 1 und 2 separat.

Es wäre wirklich dankbar, wenn mir jemand die oben genannten Informationen geben könnte.

Vielen Dank im Voraus

 
pipsmonitor:
Hallo alle .. im neu zu FX und EA. Ich habe versucht, einen EA für "close all sell" oder "close all buy" zu finden, wenn das Ziel erreicht ist, konnte aber nichts finden. Ich fand nur "close all sell" oder "all buy" ohne das "HIT TARGET or PROFIT". Ist es möglich, wenn jemand mir helfen könnte, 1 EA mit folgenden Funktionen zu erstellen:-

1) Schließen Sie alle Verkäufe, wenn der Gewinn das Ziel X erreicht hat.

2) Schließen Sie alle Käufe, wenn der Gewinn das X-Ziel erreicht hat.

3) Trailing-Stop einbeziehen (wenn möglich, wenn nicht, kein Problem)

4) Nicht schließen, wenn das Eigenkapital oder die Marge weniger als X % beträgt, wenn alle Käufe oder alle Verkäufe geschlossen werden (wenn möglich, wenn nicht, kein Problem)

Anmerkung:

Wenn Nr. 4 ziemlich schwierig zu kodieren ist, also nur Nr. 1, 2 und 3 in einem EA.

Wenn Nr. 4 und 3 schwierig, also nur Nr. 1 und 2 in einem EA

Wenn es immer noch schwierig ist, erstellen Sie einfach Nr. 1 und 2 separat.

Es wäre wirklich dankbar, wenn mir jemand die oben genannten Informationen geben könnte.

Vielen Dank im Voraus

Hallo Pipsmonitor,

Vielleicht finden Sie etwas hier auf dieser Seite https://www.mql5.com/en/forum/181179 auch eine goggle-Suche auf dem Forum Kopfzeile verwendet geschlossen auf Gewinn gefunden einige dort können Sie in der Lage sein, zu verwenden, auch könnte eine Suche nach Trailing Eas versuchen, wissen von einem Ema Trailing und BBand Stop Trailing Ea.

 

Hallo,

ich versuche, diese beiden Codes zusammenzuführen, aber ich habe Probleme damit.

Ich brauche, dass, wenn eine schwebende Bestellung gefüllt ist, die andere storniert werden muss.

Vielen Dank für Ihre Bereitschaft

int opened =0;

int pending =0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}