Tut mir leid, da ich nicht viel über mql5 weiß (macht Unterschied zw. realen und pending Orders,...), kann ich Dir nicht wirklich helfen.
Hi,
ich hab deinen Code kurz durchgescehen und dem Metaeditor zum Fraß vorgeworfen ;) - (kompiliert).
Der zeigt viele vermeidbare Warnungen.

possible loss of data.... kannst du durch 'typecasting' beheben. (Zeile 39)
Den Hedging/Netting-Mode kannst du abfragen
Die Warnung 'declaration of blabla hides ....' Über das habe ich mich schon beim Service-Desk aufgeregt, dass da eine Compilerdirektive eingebaut gehört, aber das sind Sturböcke.
Du kannst es vermeiden indem du deine Variable 'test' halt 'Test' nennst.
Ich hätte noch jede Menge Tips, aber ein Buch zu schreiben ist mir doch zu viel Arbeit.
Bei Interesse schick mir eine PN für Kommunikation via Skype.
Grüße Otto
ich hab deinen Code kurz durchgescehen und dem Metaeditor zum Fraß vorgeworfen ;) - (kompiliert).
Der zeigt viele vermeidbare Warnungen.
possible loss of data.... kannst du durch 'typecasting' beheben. (Zeile 39)
Spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
Die andere Variante wäre Spread nicht als 'int' sondern als 'ulong' zu definieren, das verschiebt die Sache aber nur nach hinten.Den Hedging/Netting-Mode kannst du abfragen
bool HedgingErlaubt= AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING;
Für einen ausgewachsenen EA wirst du noch mehrere mqh-Dateien einbinden müssen.#include <Trade\Trade.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
Zu deiner Hauptfarge kann ich dir aber derzeit leider nichts konkretes sagen, ich werde mir aber ein Demokonto im Hedgingmode für den MT5 einrichten#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
Die Warnung 'declaration of blabla hides ....' Über das habe ich mich schon beim Service-Desk aufgeregt, dass da eine Compilerdirektive eingebaut gehört, aber das sind Sturböcke.
Du kannst es vermeiden indem du deine Variable 'test' halt 'Test' nennst.
Ich hätte noch jede Menge Tips, aber ein Buch zu schreiben ist mir doch zu viel Arbeit.
Bei Interesse schick mir eine PN für Kommunikation via Skype.
Grüße Otto

Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Hallo Zusammen,
ich arbeite gerade an einem Expert Advisor (MQL5), der die Sure Fire Hedging Strategie verwendet. Dazu müssen immer die Orders abwechselnd laufen (z.B.: Buy Order --> Sell Order --> Buy Order --> Sell Order usw.). Allerding scheint das bei mir nicht richtig zu funktionieren. Es wechselt nicht immer, sondern nur manchmal die Orders ab und manchmal stimmen Stoploss und Takeprofit auch nicht. Würde mich sehr freuen, wenn mir jemand helfen könnte.
Mit freundlichen Grüßen,
Michi
Hier der Code:
CTrade m_Trade;
double Lot;
double bid;
double ask;
double Kaufpreis;
double StopLoss;
double TakeProfit;
bool Buy;
bool Sell;
bool HedgingErlaubt=false;
bool Check=true;
ulong ticket;
int Spread;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
Spread=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
if(Check==true)
{
double open_price;
double initial_volume;
datetime time_setup;
string symbol;
string type;
long order_magic;
long positionID;
uint total=OrdersTotal();
for(uint i=0;i<total;i++)
{
if((ticket=OrderGetTicket(i))>0)
{
open_price =OrderGetDouble(ORDER_PRICE_OPEN);
time_setup =(datetime)OrderGetInteger(ORDER_TIME_SETUP);
symbol =OrderGetString(ORDER_SYMBOL);
order_magic =OrderGetInteger(ORDER_MAGIC);
positionID =OrderGetInteger(ORDER_POSITION_ID);
initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
type =EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));
printf("#ticket %d %s %G %s at %G was set up at %s",
ticket, // Orderticket
type, // Typ
initial_volume, // das gestellte Volumen
symbol, // Symbol, für das gestellt ist
open_price, // der angegebene Eroeffnungspreis
TimeToString(time_setup)// Zeit der Orderstellung
);
}
}
}
if(PositionSelect(_Symbol)==false)
{
m_Trade.OrderDelete(ticket);
if(OrdersTotal()==0)
{
if(Spread<=30)
{
Lot=0.01;
m_Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lot,ask,ask-0.00090,ask+0.00030,NULL);
Kaufpreis=ask;
StopLoss=ask-0.00090;
TakeProfit=ask+0.00030;
Buy=false;
Sell=true;
}
}
}
if(OrdersTotal()==0)
{
HedgingErlaubt=true;
if(HedgingErlaubt==true)
{
if(Buy==true)
{
if(Spread<=30)
{
Lot=Lot*10;
m_Trade.OrderOpen(_Symbol,ORDER_TYPE_BUY_STOP,Lot,ask,Kaufpreis,StopLoss,TakeProfit,0,0,NULL);
Buy=false;
Sell=true;
HedgingErlaubt=false;
}
}
}
if(HedgingErlaubt==true)
{
if(Sell==true)
{
if(Spread<=30)
{
Lot=Lot*10;
m_Trade.OrderOpen(_Symbol,ORDER_TYPE_SELL_STOP,Lot,bid,Kaufpreis-0.00060,TakeProfit,StopLoss,0,0,NULL);
Buy=true;
Sell=false;
HedgingErlaubt=false;
}
}
}
}
}
//+------------------------------------------------------------------+