Wie programmiert man? - Seite 97

 
matrixebiz:
Ok, ich werde es ausprobieren, wenn ich zu Hause bin, aber warum funktioniert es dann immer noch mit Kaufaufträgen? Danke

Sie könnten einen Verkaufsauftrag haben, aber der Preis erfüllt die Bedingung für den Code für die Änderung des Kaufstopps, so dass er geändert wird, und erfüllt nicht mehr die Bedingungen für den Verkaufsabschnitt, so dass er dort nicht geändert wird.

Großes Be

 

Vielen Dank Big Be für Ihre Hilfe, aber ich habe gerade festgestellt, dass mein alter Code funktioniert, aber ich muss die Verwendung eines StopLoss für SELL-Aufträge aktivieren, um geändert zu werden.

Seltsam, dass ich keinen TakeProfit für MoveStopOnce aktivieren muss, um mit einer BUY-Order zu arbeiten, aber ich muss einen StopLoss für MoveStopOnce aktivieren, um die SELL-Order zu ändern.

Ich muss mir den Code etwas genauer ansehen, um das herauszufinden, es sei denn, Sie wissen warum.

EDIT: wenn Sie zu ändern;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

Scheint gut zu funktionieren.

Danke

 

Benötige Hilfe mit dem Positionsberechnungsprogramm

OK,

Ich baue einen Position Sizing-Rechner als Funktion auf, die auf der "Kelly-Formel" basiert

(Gewinnrate-((1-Gewinnrate)/(Avg Gewinn/Avg Verlust)

Ich habe den gesamten Code und die Berechnungen mit manuellen Eingaben (extern) für die erforderlichen Variablen zum Laufen gebracht und versuche nun, die Funktion dynamisch zum Laufen zu bringen, indem ich bestimmte Kontoinformationen aufrufe (ich möchte nämlich die Winning Consistency Rate (%), die Avg # Pips pro Winning Trade und die Avg # Pips pro Lossing Trade berechnen).

Ich könnte jede Hilfe gebrauchen, um die drei Funktionen (WinRate AvgWin & AvgLoss) zum Laufen zu bringen. Ich benutze seit Monaten die manuelle Eingabevariante und es funktioniert hervorragend. Hier ist der komplette Code für diese (automatisierte) Version bis zu diesem Punkt... beim Testen erhalte ich keine dynamische Ausgabe, alles geht zurück auf die Standardeinstellung (50, 40, 20). Ich habe dies als eigene EA zum Testen und einfache Modularisierung in jede bestehende EA eingerichtet. einmal zu einem beliebigen Diagramm angehängt, wird die Ausgabe in der Registerkarte Log/Experte gedruckt. die Verwendung von Fraktalen ist beabsichtigt, so dass ein maximales Kontowachstum (oder minimalen Verlust) ausgenutzt wird. als Hinweis die meisten Makler, die die MT-Trader-Plattform anbieten, erlauben Fraktal-Handel für entweder Mini oder std Lose. Dies wird sich in der Zukunft als nützlich erweisen, wenn das Geldmanagement die Möglichkeit bietet, Teil-Lot-Positionen zu entfernen (z.B. 25% von 1 Lot)...

Um die Echtzeit-Kontoinformationen zu sammeln, die ich benötige, versuche ich...

1. alle Trades zu zählen

2. die profitablen Trades zu zählen

usw. usw.

Vielleicht gehe ich dabei den richtigen Weg, vielleicht aber auch nicht.

Vielen Dank im Voraus für all die Hilfe...

SeaWolf

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

//| KellyFormula.mq4 |

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

#Eigenschaft Copyright "seawolf"

#eigenschaft link "seawolf"

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

//| EXTERNE INFORMATIONSEINGABE |

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

extern int MeinKonto = 1001; //------>>>> Konto-ID

extern int ExpertID = 500001; //------>>>> Magic Number für diesen EA

extern double PipValue= 1.00; //------>>>> Verwendung für ALLE Berechnungen

extern double LotCost= 50.0; //------>>>> Verwendung für ALLE Berechnungen

extern double PercentMax= 24.0; //------>>>> max % Konto gehebelt zu einer Zeit

extern int TradesMax= 3; //------>>>> max gleichzeitige Trades (Beispiel: 24%/3 Trades = 8% pro Trade)

extern bool UseKelly= true; //------>>>> Manuelle Übersteuerung umschalten

extern double ManualLots= 1.0; //------>>>> # Lots, wenn "UseKelly" falsch ist

extern double mWinRate= 50.00; //------>>>> Gewinnkonstanz in % (manuelle Übersteuerung)

extern int mAvgWin= 40; //------>>>> Durchschnittliche Anzahl von Pips pro gewinnendem Trade (manuelles Überschreiben)

extern int mAvgLoss= 20; //------>>>> Durchschnittliche Anzahl von Pips pro verlustbehaftetem Handel (manuelles Überschreiben)

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

//| Experten-Initialisierungsfunktion |

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

int init()

{

//----

//----

return(0);

}

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

PositionSize();

{

Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss());

}

Comment("Aktuelle Zeit ist ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ... Win Rate= ",WinRate()," Avg Win= ",AvgWin()," Avg Loss= ",AvgLoss());

//----

return(0);

}

//----

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

//| POSITIONSGRÖSSE FÜR ALLE NEUEN TRADES BERECHNEN |

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

//------------------------>>>>

double PositionSize()

{

//------------------------>>>> KEINE KELLY-FORMEL VERWENDEN, SONDERN PAUSCHALPREIS

if(UseKelly == true)

{

double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()));

double PerTrade;

double Lots;

if(KelyForm > PercentMax)

{

PerTrade = (PercentMax/10)/TradesMax;

}

sonst if(KelyForm < PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

sonst if(KelyForm == PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

Lots = (PerTrade * AccountBalance()/LotCost);

return(MathRound(Lots)/10);

}

}

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

//| ECHTZEIT-KONTOINFORMATIONEN SAMMELN |

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

//------------------------>>>>

double WinRate()

{

double Ticket;

double CountWins = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MeinKonto==Kontonummer() && BestellSymbol()==Symbol() && BestellMagischeNummer() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY)

{

if(OrderClosePrice() >= OrderOpenPrice())

CountWins++;

}

else if(OrderType()==OP_SELL)

{

if(OrderClosePrice() <= OrderOpenPrice())

CountWins++;

}

}

}

if(AnzahlGewinne > 0)

return(MathRound(CountWins/OrdersHistoryTotal())*10);

sonst

Print("Real Time WinRate nicht verfügbar");

return(mWinRate);

}

//------>>>>

//------------------------>>>>

double AvgWin()

{

double Ticket;

double CountTrades = 0;

double CountPips = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MeinKonto==KontoNummer() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() >= 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() >= 0)

CountPips++;

}

}

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

sonst

Print("Real Time AvgWin nicht verfügbar");

return(mAvgWin);

}

//------>>>>

//------------------------>>>>

double AvgLoss()

{

double Ticket;

double CountTrades = 0;

double CountPips = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MeinKonto==KontoNummer() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

CountPips++;

}

}

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

sonst

Print("Real Time AvgLoss not Available");

return(mAvgLoss);

}

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

 

An: Matrixebiz

EDIT: if you change to;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

Scheint gut zu funktionieren.

Danke

Sie sind willkommen.

Großer Be

 

Fxpro,fragen

Hallo an alle... ich möchte nur fragen, wie man Lots EA in FxPro konfiguriert...

ich verwirrt, weil es 6 Ziffern hat (1 Ziffer extra) ich habe die S/L und T/P festgelegt, aber ich kann das Lot nicht ändern...

immer 0.4 pro Handel.. auch wenn ich es auf 0.1 oder 0.3 ändere

ich benutze 10points 3 EA..

Bitte helfen Sie mir.. email me at hansen_hardrocker@yahoo.co.id

oder kann PM bitte..

cheerz all..

 

Ask_change Lot (fxpro)

Fxpro,fragen

Hallo an alle... ich möchte fragen, wie man Lots EA in FxPro konfiguriert...

ich verwirrt, weil es 6 Ziffern hat (1 Ziffer extra) ich habe die S/L und T/P festgelegt, aber ich kann das Lot nicht ändern...

immer 0.4 pro Handel.. auch wenn ich es auf 0.1 oder 0.3 ändere

ich benutze 10points 3 EA..

Bitte helfen Sie mir.. email me at hansen_hardrocker@yahoo.co.id

oder kann PM bitte..

cheerz all..

 

Ich möchte es auch. Bitte senden Sie mich an omidchart@yahoo.com

 

Das liegt wahrscheinlich daran, dass Sie das Money Management im EA aktiviert haben.

 

Vielen Dank

matrixebiz:
Es wahrscheinlich, weil Sie Money Management in der EA aktiviert haben.

Thx bro..

im Neuling..

 

Können Sie diesen EA ändern?

Hallo Programmierer,

Ich habe diesen EA, der Stop-Orders über und unter dem aktuellen Preis platziert. Was ich brauche, ist ein EA, der Limit-Orders anstelle von Stop-Orders über und unter dem aktuellen Preis platziert. Können Sie diesen EA so ändern, dass er genau das tut, während alle Parameter gleich bleiben?

Vielen Dank im Voraus,

Paul

Dateien:
Grund der Beschwerde: