Wie programmiert man? - Seite 164

 
MiniMe:
Danke, Ralph, aber dann würde der Swap fehlen, und ich möchte den Gewinn/Verlust des Swaps in die Entscheidung über den Abschluss der Aufträge einbeziehen.

Aber die erste Schleife akkumuliert sowohl den Gewinn als auch den Swap, oder nicht?

Ich dachte, dass die Equity-Zahl diejenige ist, die mit dem zu vergleichen ist, was 5 Pips für die offenen Lose bedeuten würde...., und Sie brauchen dann nicht tatsächlich den Break-even-Preis zu berechnen.

 

Hallo Ralph

ich habe 3 Variablen

OrdLots ; in Lots und repräsentiert die offenen Lots, aber dies wird den Swap überspringen

Equity; dies ist der Gesamtgewinn und Verlust und diese Variable beinhaltet den Swap

MinPro; dies ist mein Take-Profit, der 5 Pips + den Break-Even-Punkt beträgt

Ich kann OrdLots nicht verwenden, um den Gewinn/Verlust in Pips zu ermitteln, da dadurch der Swap übersprungen wird.

Ich kann Equity nicht verwenden, um den Gewinn/Verlust in Pips zu ermitteln, da ich dafür wissen muss, wie viele Lots verwendet werden, aber meine Berechnung für die Lots lässt den Swap aus.

Irgendwie muss ich eine Funktion sowohl von OrdLots als auch von Equity verwenden, um zu wissen, wie viele Pips geöffnet sind.

Vielleicht gibt es etwas in MT4, das sich auf den Kontostand oder das Eigenkapital des Kontos bezieht, aber ich habe es nicht gefunden.

Die Lösung, die Sie mit Dank vorgeschlagen wird der Gewinn/Verlust in Pips ohne Berücksichtigung Swap zu finden, aber ich habe bereits eine Funktion für das ... Ich möchte bei 5 Pips über dem Breakeven mit dem Swap aussteigen

 

Zeiten vergleichen und Schleife ausführen

Hallo zusammen.

Ich bin sehr unerfahren mit der Sprache Mql4. Ich möchte die openordertime mit einer Int var vergleichen und wenn sie eine bestimmte Zeitspanne überschreitet und die Orders noch offen sind, möchte ich die Anzahl der offenen Orders erhöhen, damit ich versuchen kann, eine Breakeven-Situation oder vielleicht eine Gewinnsituation zu erreichen und dann alle offenen Orders gleichzeitig zu schließen und die max Orders wieder auf die ursprünglich erlaubte Max zu setzen. Kann mir jemand helfen oder mir einen Code in einem anderen Beitrag zeigen, der so etwas bereits tut.

Ich verwende diesen Code, aber es scheint, als würde er nicht funktionieren.

// Wenn die Aufträge für eine lange Zeit offen sind, schließe ich die Aufträge und versuche, die Kosten zu decken.

void TimeProtection()

{

int totalorders = OrdersTotal();

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

{

OrderSelect(i, SELECT_BY_POS);

if ( BestellungSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * CallTime;

wenn (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

flag = 1;

Pause;

}

}

}

zurück;

}

Ich würde mich sehr über Ihre Hilfe freuen.

Danke

 
MiniMe:
Hallo Ralph

Ich habe 3 Variablen

OrdLots ; in Lots und repräsentiert die offenen Lots, aber hier wird der Swap ausgelassen

Equity; dies ist der Gesamtgewinn und der Verlust, der den Swap mit einschließt

MinPro; dies ist mein Take-Profit, der 5 Pips + den Break-Even-Punkt beträgt

Ich kann OrdLots nicht verwenden, um den Gewinn/Verlust in Pips zu ermitteln, da dadurch der Swap übersprungen wird.

Ich kann Equity nicht verwenden, um den Gewinn/Verlust in Pips zu ermitteln, da ich dafür wissen muss, wie viele Lots verwendet werden, aber meine Berechnung für die Lots lässt den Swap aus.

Irgendwie muss ich eine Funktion sowohl von OrdLots als auch von Equity verwenden, um zu wissen, wie viele Pips geöffnet sind.

Vielleicht gibt es etwas in MT4, das sich auf den Kontostand oder das Eigenkapital des Kontos bezieht, aber ich habe es nicht gefunden.

Die Lösung, die Sie mit Dank vorgeschlagen wird der Gewinn/Verlust in Pips ohne Berücksichtigung Swap zu finden, aber ich habe bereits eine Funktion für das setzen ... Ich möchte bei 5 Pips über dem Breakeven mit dem Swap zu beenden

Ah... vielleicht verstehe ich das... Wenn Sie also in der ersten Schleife auch den Gewinn ohne Swap in EquityNoSwap akkumulieren, dann könnten Sie das anstelle von Equity in meiner "if"-Anweisung verwenden. (?) Denn dann würde der Test lauten: "Gibt es 5 Pips Gewinn relativ zum Breakeven+Swap-Kurs?", was eigentlich dasselbe ist wie "Gibt es 5 Pips Gewinn ohne Berücksichtigung des Swaps?" (oder vielleicht verstehe ich es immer noch nicht)

Im Grunde genommen ist "Gewinn+Swap" relativ zu "Breakeven", und somit ist "Gewinn" relativ zu "Breakeven+Swap", und "Gewinn" ist über "OrdLots" verteilt. Alles in allem braucht man also immer noch keinen tatsächlichen Pips-Preis für "breakeven" zu bestimmen.

 

Beste EA-Codierungsidee

Ich starte diesen Tread um Hilfe zu bekommen.ich lerne gerade für den beigefügten Indikator zu programmieren.aber es hat nicht geklappt.kann jemand helfen? Es ist ein sehr zuverlässiger Indikator und wenn jemand einen EA für ihn machen könnte, wäre das fast ein heiliger Gral.

Das Grundprinzip ist:

1. Verkaufsposition eröffnen, wenn der rote Pfeil erscheint,

2.eröffnen Sie eine Kaufposition, wenn ein weißer Pfeil erscheint und schließen Sie automatisch alle Verkaufspositionen/-positionen.

3.gilt für jeden Zeitrahmen.

4.kein Stop-Loss,

5.add order Funktion.

Ich freue mich auf eine Antwort!

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

//| IINWMARROWS.mq4 |

//| Basierend auf EMA_CROSS.mq4 |

//| Urheberrecht ?2006, MetaQuotes Software Corp. |

//| Devisenhandels-Software: Forex Handelsplattform MetaTrader 4 ||

//| Zuletzt geringfügig geändert von Iin Zulkarnain

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

#Eigenschaft Copyright "Copyright ?2006, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

//----

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Weiß

#eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width1 2

#eigenschaft indicator_width2 2

//----

double CrossUp[];

double CrossDown[];

extern int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3;

extern int LangsamerModus=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3;

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

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

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

int init()

{

//---- Indikatoren

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexPfeil(0, 233);

SetIndexPuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

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

//| Benutzerdefinierte Funktion zur Deinitialisierung des Indikators |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Benutzerdefinierte Indikator-Iterationsfunktion |

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

int start()

{

int limit, i, zähler;

double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;

double Range, AvgRange;

int counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if(gezählte_Balken<0) return(-1);

//---- zuletzt gezählte Balken werden neu gezählt

if(gezählte_Balken>0) gezählte_Balken--;

//----

limit=Balken-gezählt_Balken;

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

{

counter=i;

Range=0;

AvgRange=0;

for(counter=i ;counter<=i+9;counter++)

{

AvgRange=AvgRange+MathAbs(High[Zähler]-Low[Zähler]);

}

Range=AvgRange/10;

fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

langsamerMAvorher=iMA(NULL, 0, LangsamerMA, 0, LangsamerModus, PREIS_ÖFFNEN, i+1);

langsamerMAnach=iMA(NULL, 0, LangsamerMA, 0, LangsamerModus, PREIS_ÖFFNEN, i-1);

if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))

{

CrossUp=Low - Range*0.5;

}

else if ((schnellerMAjetzt langsamerMAvorher) && (schnellerMAjetzt < langsamerMAjetzt))

{

CrossDown=High + Range*0.5;

}

}

return(0);

}

//+------------------------------------------------------------------+dieser Thread, um zu lernen, wie man richtig kodiert, ich lerne zu kodieren für

 

An die großen und mutigen Coder

kann jemand maximale Positionen für diesen EA hinzufügen

oder es nur eine Position laufen lassen?

Danke im Voraus

Dateien:
reverse_1.mq4  16 kb
 

Gelöschter Beitrag

 

Off-Topic-Frage

Ist es möglich, Daten aus einem Programm mit nicht offenem Quellcode auszuspähen?

Sie haben die schlechte Programmiersprache (ähnlich wie Metastock, aber schlechter, keine ''vorherige'' Funktion erlaubt).Sie erlauben nur ihre eigenen Indikatoren und sie haben das Datenmonopol (durch das Gesetz).İt ist nicht möglich, eine DLL-Erweiterung zu schreiben, um meine Indikatoren in Echtzeit-Umgebung laufen zu lassen.Ich habe etwas wie ''port listening function in excell'' gehört, aber ich habe keine Ahnung, was es ist.

Alle Programmierer antworten sehr geschätzt.

 

Offene Bestellung für ein anderes Paar

Hallo,

gibt es eine Möglichkeit, eine Order für ein anderes Währungspaar zu öffnen.

Zum Beispiel läuft der EA in einem EURUSD-Chart, aber ich möchte eine Order für USDJPY öffnen.

Ist dies möglich.

Vielen Dank im Voraus

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0, "Com",0,0,CLR_NONE);