Fragen Sie! - Seite 129

 
forexarchitect:
hallo Jungs

Ich habe eine Frage... wie ändere ich das Folgende;

extern double MaxLot = 1.50;

double max_lot = GetMaxLot(OP_BUY, OP_SELL);

if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type);

(order_type)]: ", lot);

if (lot == -1) return (lot);

lot = NormalizeDouble(lot, LotPrec);

if (lot > MaxLot) lot = MaxLot;

wenn (Los < MinLot) Los = MinLot;

return (lot);

}

die obige Prüfung für OP_BUY UND OP_SELL

Frage: wie ändere ich es in einen beliebigen OP_BUY ODER einen beliebigen OP_SELL

schätzen

Sie müssen den Code der Funktion GetMaxLot() ändern, oder vielleicht können Sie GetMaxLot(OP_BUY, OP_BUY); und GetMaxLot(OP_SELL, OP_SELL); verwenden (hängt vom Code ab - kann man so machen oder nicht).

Aber ich denke es ist einen Versuch wert

Goen

 
Goen:
Ist es das, wonach Sie suchen?

-----------

int bars_count=WindowBarsPerChart();

int bar=WindowFirstVisibleBar();

-----------

Goen

Vielen Dank, Goen.

 
Goen:
Sie müssen den Code der Funktion GetMaxLot() ändern, oder vielleicht können Sie GetMaxLot(OP_BUY, OP_BUY); und GetMaxLot(OP_SELL, OP_SELL); verwenden (hängt vom Code ab - kann man so machen oder nicht).

Aber ich denke, es ist einen Versuch wert.

Gehe

danke für die Antwort..

Was muss ich hier ändern? Danke für Ihre Hilfe

double GetMaxLot(int type1, int type2)

{

double max_lot = 0.0;

int cnt = OrdersTotal();

for (int i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

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

if (OrderMagicNumber() != Magic) continue;

if (OrderType() != type1 && OrderType() != type2) continue;

if (max_lot == 0 || OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

return (max_lot);

}

 

Ich bin ein bisschen ratlos...

 

Wie füge ich einen Alarm zu diesem Indikator hinzu?

Ich habe einen MA-Crossover-Indikator, die wirklich gut funktionieren, aber es hat nicht hv die Sound-Alarm-Unterstützung tat machen mich verpassen eine Menge von Handel, können u bitte lehren mich, wie man Alarm zu tis Indikator hinzufügen, wie ich nichts über die Meta-Code-Ding....thanks...

hier ist der Code für den Indikator zusammen mit dem Indikator selbst, danke...

/*[[

Name := EMA Kreuz

Autor := Hapsa

Link := http://www.metaquotes.net/

Getrenntes Fenster := Nein

Getrenntes Fenster := Nein

Erste Farbe := Rot

Erster Zeichnungstyp := Symbol

Erstes Symbol := 108

Zweite Daten verwenden := Ja

Zweite Farbe := DarkOliveGreen

Zweiter Zeichnungstyp := Symbol

Zweites Symbol := 108

]]*/

#property copyright "Hapsa"

#property link ""

extern int SlowPeriod=20;

extern int FastPeriod=5;

#property indicator_buffers 3

#property indicator_chart_window

#property indicator_color1 Rot

#property indicator_color2 Grün

double L20[];

double L50[];

double shift=0,val1=0,val2=0;

int init()

{

IndicatorBuffers(3);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0, 108);

SetIndexPfeil(1, 108);

SetIndexBuffer(0,L20);

SetIndexBuffer(1,L50);

//---- Anzeigen

//----

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

//----

int i = Balken - gezählte_Balken - 1;

while (i>=0)

{

val1=0;

val2=0;

double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i);

double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i);

if (iMaFastPreviousiMaSlowCurrent ) val1=High;

if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low;

L20=val1+5*Punkt;

L50=val2-5*Punkt;

i--;

}

//----

return(0);

}

Dateien:
cross.mq4  2 kb
cross.ex4  3 kb
 
forexarchitect:
Danke für die Antwort.

Was muss ich hier ändern? Danke für Ihre Hilfe

double GetMaxLot(int typ1, int typ2)

{

double max_lot = 0.0;

int cnt = OrdersTotal();

for (int i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

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

if (OrderMagicNumber() != Magic) continue;

if (OrderType() != type1 && OrderType() != type2) continue;

if (max_lot == 0 || OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

return (max_lot);

}

Ja, Sie können GetMaxLot(OP_BUY,OP_BUY); verwenden, um den maximalen Lot für offene Kaufgeschäfte zu erhalten, und GetMaxLot(OP_SELL,OP_SELL);, um den maximalen Lot für offene Verkaufgeschäfte zu erhalten.

Sie können diesen Code "if (max_lot == 0 || OrderLots() >= max_lot)" mit "if (OrderLots() > max_lot)" vereinfachen.

Denn wenn max_lot = 0 ist, wird es automatisch niedriger sein als jedes Lot der offenen Trades. Und das Vorzeichen ">=" wird durch ">" ersetzt, denn wenn es den gleichen Wert hat, muss max_lot nicht mit dem gleichen Wert aktualisiert werden, ein unnötiger Aufwand. Es wird nur aktualisiert, wenn der neue Wert größer als max_lot ist.

Wenn Sie diesen Code ändern, könnte Ihr Prozess schneller werden.

Goen

 

Stoploss-Problem

Hallo,

ich bin neu in diesem ganzen Forex/Metatrading, aber ich versuche zu verstehen, wie das alles funktioniert.

Jetzt versuche ich, einen EA zu schreiben, und ich fürchte, dass ich etwas Grundlegendes übersehe.

Wenn ich in meinem Code Folgendes ersetze

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red);

durch

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red);

Wenn ich diese neue Version im Strategietester teste, erhalte ich WENIGER Aufträge. Wie kann das Hinzufügen eines Stoploss die Anzahl der Ordereingaben verringern? Ich kann mir vorstellen, dass die Zahl ansteigt, wenn das Hinzufügen einer Stop-Order dazu führt, dass die Aufträge früher aussteigen und somit neue Aufträge schneller hinzugefügt werden können, aber WENIGER Aufträge?

Irgendeine Idee?

Vielen Dank

 
azertyken2:
Hallo,

Ich bin neu in diesem ganzen Forex/Metatrading, aber ich versuche zu verstehen, wie das alles funktioniert.

Jetzt versuche ich, einen EA zu schreiben, und ich fürchte, dass ich etwas Grundlegendes übersehe.

Wenn ich in meinem Code Folgendes ersetze

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);

durch

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red);

Wenn ich diese neue Version im Strategietester teste, erhalte ich WENIGER Aufträge. Wie kann das Hinzufügen eines Stoploss die Anzahl der Ordereinträge verringern? Ich kann mir vorstellen, dass die Anzahl ansteigt, wenn das Hinzufügen einer Stop-Order dazu führt, dass die Aufträge früher aussteigen und somit neue Aufträge schneller hinzugefügt werden können, aber WENIGER Aufträge?

Irgendeine Idee?

Danke

10 Pips sind möglicherweise zu nahe an der vom Broker festgelegten Stop-Grenze (variiert von Broker zu Broker) - d.h. wenn es sich um ein Minimum von 10 Pips handelt und der Preis zufällig um 1 Pip innerhalb dieser Grenze schwankt, während die Order platziert wird, wird die Order abgelehnt...

 

Omelette, du hast recht, die Erhöhung des Stoploss hat es behoben, danke! :-)

 
#property indicator_color1 Magenta

#property indicator_color2 Yellow

extern bool TrendDirectionUp=true;

string Color1;

string Color2;

int init() {

if(TrendDirectionUp==true)//Conditionj 1

{

Color1=Yellow;

Color2=CLR_NONE;

}

if(TrendDirectionUp==false)//Condition2

{

Color1=CLR_NONE;

Color2=Magenta;

}

SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);

SetIndexArrow(0,172);//333

SetIndexArrow(1,172);//334

SetIndexBuffer(0,b1);

SetIndexBuffer(1,b2);

return(0);

}

Gerade jetzt, beide Farbe(n) 1 & 2 zeigen "schwarz" auf dem Diagramm!!!

Kann mir ein erfahrener Guru helfen, dieses Problem zu lösen?

Vielen Dank im Voraus!

Grund der Beschwerde: