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
Okay, wenn du also
double stop;
stop=stoploss*Point();
Print(DoubleToString(stoploss));
Wenn Sie die Funktion Point() verwenden, sollten Sie den Wert des Stoploss erhalten, den Sie dann entweder zu Bid und Ask addieren oder subtrahieren müssen, um das Preisniveau Ihres Stops zu erhalten.
Das Gleiche gilt für den Take Profit, aber natürlich in umgekehrter Reihenfolge.
Sie können einige der EA's in der Code Base überprüfen, dort gibt es eine Menge Beispiele und Variationen, wie Programmierer diese Dinge in ihren EA's machen.
Hier ist zum Beispiel eines namens Trailing Master https://www.mql5.com/en/code/16136
// 1. Main function
//-------------------------------------------------------------------------
void OnTick(void)
{
Comment("Copyright © 2016, Il Anokhin\n"+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
//--- 1.1. Define pip -----------------------------------------------------
if(Digits==4 || Digits<=2) pip=Point;
if(Digits==5 || Digits==3) pip=Point*10;
//--- 1.2. Trailing -------------------------------------------------------
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol() && TS>0 && OrderProfit()>0)
{
if(UC==true && OrderComment()==Comm && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==true && OrderComment()==Comm && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
if(UC==true && OrderComment()==Comm && UM==false && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==true && OrderComment()==Comm && UM==false && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==false && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==false && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
}
}
}
//--- 1.3. End of main function -------------------------------------------
Wo Sie sehen können, der Coder Il Anokhin Faust definiert pip.
Aber hier ist ein anderes Beispiel namens E-smart trailing von Димаhttps://www.mql5.com/en/code/8674
//+------------------------------------------------------------------+
void ModifyStopLossInPoint(int stoploss)
{
bool result;
double sl = 0;
double point = MarketInfo(OrderSymbol(),MODE_POINT);
if (OrderType() == OP_BUY) sl = OrderOpenPrice() + stoploss * point;
if (OrderType() == OP_SELL) sl = OrderOpenPrice() - stoploss * point;
result = OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,CLR_NONE);
if (result && UseSound) PlaySound(var_132);
}
//+------------------------------------------------------------------+
Beachten Sie die feinen Unterschiede bei der Durchführung der Dinge.
Ich probiere immer verschiedene Dinge aus, bis ich etwas finde, das am besten funktioniert.
Okay, also wenn du...
Omg, nur schnell checken erstaunlichen Dank für alles, bevor ich begann zu lesen und etwas zu versuchen. Ich werde das bald ausprobieren.
Nochmals vielen Dank @Marco vd Heijden
Die Objekte sind übereinander gestapelt, so dass es wichtig ist, chartevent () wissen zu lassen, welche Klicks auf welche Schaltfläche oder Objekte die höchste Priorität gegenüber anderen Objekten haben , die sich überlappen könnten.
Vielen Dank Mann, ich mochte Ihre Kommentare, die eine, die mehr klar und nützlich sind.
Alles Gute für dich.
Okay, also wenn Sie verwenden
Ich probiere immer verschiedene Dinge aus, bis ich etwas finde, das am besten funktioniert.
Ich versuche gerade, Ihren guten Kommentar zu verstehen und dann einige gute Codes für meine Orders, Stop Loss und Take Profit Funktionen zu schreiben - danke dafür.
Also, ich habe bereits versucht, etwas wie unten Code, und ich muss sicher sein, sind beide EURUSD und FB Stop Loss Wert richtig, für 10 Pips? (wenn Sie wissen wollen, was ich denke - nur ich denke, ja unten Protokolle / Ergebnisse sind beide richtigen Wert für 10 Pips. )
z.B.: stoploss value = 10; Position - KAUFEN
log: EURUSD | Preis (ask): 1.05633 / Stop Loss: 1.05533
log: FB | Preis (ask): 119.69/ Stop Loss: 119.59
( Ich rufe die untenstehende Funktion mit void OnChartevent() auf )
//---
if ( sparam == _buy_name_btn )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_Buy_calc_SL_TP();
Print( " | Click Verify / ");
}
//---
return;
{
//---
if ( _StopLoss_ON == true )
{
//_Sl = OrderOpenPrice() - _StopLoss * _Pip;
_Sl = Ask - _StopLoss * _Pip;
Print( " | Buy Calc SL TP Function / StopLoss: ", _Sl );
}
//---
return;
}
Es scheint zu funktionieren.
Ich werde versuchen, den Kommentar von Mr. William in den Code des EA einzubeziehen - vielen Dank noch einmal William.Great Pip's Calculation MQL4
(bitte tadeln Sie mich nicht, weil dieser Code Industrie sieht aus wie sehr weit für mich, und manchmal verliere ich meinen Verstand - wie auch immer ich hoffe, ich werde meine Trade Panel EA-Codes bald fertig )
Und ich werde meinen Test-EA-Code teilen, nachdem ich ihn fertiggestellt habe, um zu sehen, ob dieser Code gut/richtig ist oder nicht (weil ich kein professioneller Programmierer bin - ich arbeite daran).
Keith Watford:
Okay, na gut. Ich kann mir nicht die Mühe machen, einige Ihrer Beiträge zu lesen, weil mir die Augen wehtun.
Wenn es anderen genauso geht, dann verpassen Sie etwas, nicht ich.
Markt ist geschlossen, und ich bin nicht sicher, etwas anderes. Aber ich habe versucht, etwas wie unten Code, ich fühle mich ich etwas verpasst, aber ich kann es nicht finden.
(Ich möchte erwähnen, meine Trade Panel EA's haben Code's für Open Buy, und Open Sell Positionen, aber ich versuche, es mit meiner Hand zu schreiben, dass ich sicher bin, wie diese EA's funktioniert)
Vielen Dank im Voraus für Ihre Hilfe und Beratung.
#define POINT int ///< `CHANGE / _Point`.
#define PIP double ///< `POINT / PipsPerPOINT`.
CHANGE points_to_change(POINT n){ return n * _Point ;}
POINT change_to_points(CHANGE c){ return POINT(c / _Point + 0.5) ;}
CHANGE pips_to_change (PIP n){ return points_to_change(pips_to_points(n));}
PIP change_to_pips (CHANGE c){ return points_to_pips(change_to_points(c));}
POINT pips_to_points (PIP n){ if( (_Digits&1) == 1) n *= 10.0; return POINT(n);}
PIP points_to_pips (POINT n){ PIP p = n; if( (_Digits&1) == 1) p /= 10.0; return p;}
string prfx = "test" ;
string sellbutton = prfx + "sell" ;
string sounduse = "tick.wav" ;
int stoploss = 10 ;
int takeprofit = 10 ;
int magic = 12345 ;
int ticket = 0 ;
int slippage = 3 ;
double lot = 0.01 ;
double sl ;
bool stoploss_on = true ;
bool result ;
bool sound_use = true ;
//---
//---
int OnInit()
{
ObjectCreate ( 0, sellbutton, OBJ_BUTTON , 0, 0, 0 );
ObjectSetString ( 0, sellbutton, OBJPROP_TEXT , "Sell" );
ObjectSetInteger ( 0, sellbutton, OBJPROP_XDISTANCE , 20 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_YDISTANCE , 20 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_XSIZE , 80 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_YSIZE , 40 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_CORNER , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0, sellbutton, OBJPROP_COLOR , clrWhite );
ObjectSetInteger ( 0, sellbutton, OBJPROP_BGCOLOR , clrMaroon );
ObjectSetInteger ( 0, sellbutton, OBJPROP_STATE , false );
ObjectSetInteger ( 0, sellbutton, OBJPROP_ZORDER , 1 );
Print( "ObjectsTotal: ", ObjectsTotal() );
return(0);
}
//---
//---
void OnTick()
{
//---
//---
return;
}
//---
//---
void OnDeinit(const int reason)
{
//---
ObjectsDeleteAll( 0, prfx );
//---
return;
}
//---
//---
void OnChartEvent(const int id ,
const long& lparam ,
const double& dparam ,
const string& sparam
)
{
// Sell
if ( sparam == sellbutton )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
ticket = Orderfuntions( sellbutton );
}
return;
}
//---
//---
void SellCalcSLTP()
{
//---
if ( stoploss_on == true )
{
if ( OrderType() == OP_SELL ) sl = OrderOpenPrice() - pips_to_change( stoploss );
if ( OrderType() == OP_BUY ) sl = OrderOpenPrice() + pips_to_change( stoploss );
result = OrderModify( OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, CLR_NONE );
if ( result && sound_use ) PlaySound( sounduse );
}
//---
return;
}
//---
//---
int Orderfuntions( string _Order_selector )
{
// Sell Order
SellCalcSLTP();
if ( _Order_selector == sellbutton )
{
ticket = OrderSend( _Symbol, OP_SELL, lot, Bid, slippage, sl, takeprofit, "comment", magic, 0, clrMaroon );
}
return(ticket);
}
Sieht ganz gut aus, aber man kann ordermodify nicht einfach so benutzen, man muss zuerst eine Bestellung mit der OrderSelect() Funktion auswählen.