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
Atr decresing code ??
Atr decresing - wie lautet der Code mql4 ?
--------------------------------------------------------------------------------
Atr decresing
Was ist der Code mql4 ?
Ich möchte, dass mein ea keine Positionen öffnet, wenn
die ATR d1 ist > ATR d1 (-1)
So codieren Sie 3 Ebenen von Trailing Stops
TrailingStop = 50;
TrailingStop_Over100 =30;
TrailingStop_Über150 = 20;
Level 1: 0-100 Pip Gewinn - TS ist 50 Pips
Level 2: 101-150 Pip Gewinn - TS ändert sich auf 30 Pips
Level 3: 151+ Pip Gewinn - TS ändert sich auf 20 Pips
Wie kodiere ich dies( Bewegungin positiver Richtung ), so dass der TS sich ändert, sobald der Pip-Gewinn steigt?
Dave
<<<
Wäre wirklich dankbar für die Expertise eines Programmierers.
nach erstem Kreuz mehrere Balken Abstand setzen
Hallo an alle Programmierer-Gurus hier ich bin ein Neuling in der mql4 Programmierung und ich stecke bei einem Problem fest,
also es ist das folgende :
Ich habe 2 EMA 5 und 20 PERIOD_15 und jeweils 5 und 20 EMA auf PERIOD_H1.
Wenn ich also eine Position mit dem ersten Kreuz PERIOD_M15 eingebe, schliesst der Advisor die Position sofort im gleichen Takt, wenn sich der Kurs in die andere Richtung bewegt und ein umgekehrtes Kreuz macht. Das ist programmtechnisch korrekt, aber mein eigentliches Problem ist es, die nächsten 1-2 oder mehr Balken abzuwarten und dann die Position zu schließen, wenn ein Cross gefunden wurde.
Können Sie mir dabei helfen? Wenn es hier ein verwandtes Thema mit dem gleichen Problem gibt, können Sie mir einen Link schicken
und die Moderatoren können den Beitrag entfernen.
Vielen Dank im Voraus!!
-- wenn Sie bereits eine offene Position haben
-- wenn zu viele Kreuzungen auftreten
-- warten Sie ein wenig, bevor Sie diese Position verlassen
--das sollte die wiederholten Crosses in einem Bar lösen
if(firstCross == 1)
{
---------------------------//Close, prüfen, ob nach OpenOrderPrise()----------------------------------- mehrere nächste Bar's gedruckt werden
if(openbar <= closebar)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // Position schließen
return(0); // exit
}andernfalls
return(0);
}
Nun, ich habe eine gruselige Lösung gefunden , die ich bereits angehängt habe
Wenn Sie einige Ideen zur Optimierung der Zeitverschiebung oder zur Optimierung des Codes haben, bin ich für jeden Vorschlag dankbar, thx im Voraus
Brauche Ihre Hilfe
Hallo Trader,
Ich würde es sehr schätzen, wenn mir jemand helfen kann, einen Alarm für diesen Indikator (MT4-LevelStop-Reverse-vB0-3) zu entwickeln.
Ich möchte, dass der Alarm klingelt, sobald der Pfeil auftaucht.
Vielen Dank im Voraus.
Hallo,
Ich benutze Ihr Glück v2, und wollen den Code des Hinzufügens von Text auf dem Diagramm, die nicht mit dem Objekt-Label-->siehe das Bild ~~ wissen
und der Benutzer kann den Text nicht löschen~ ~
Der Text sieht so aus: "Ihr Glück ist kostenlos und noch in der Entwicklung..."
Wie kann man das codieren?
dankeVerwenden Sie den Befehl Comment()
Kommentar - MQL4 Dokumentation
wie man uneliminateAble-Text im Diagramm codiert
Hallo,
ich benutze Ihr Lucky v2, und möchte den Code für das Hinzufügen von Text auf dem Diagramm wissen, der nicht das Objekt-Label verwendet-->siehe das Bild ~~
und der Benutzer kann den Text nicht löschen~ ~
der Text ist so--"Your lucky v2 EA ist kostenlos und noch in der Entwicklung..."
wie kann man das codieren?
Danke
Mehrere Aufträge und mehrere Trailing-Aufträge
In meiner Ea verwende ich mehrere Aufträge, einen zum Markt und einen mit Kauf/Verkaufslimit.
Wenn ich die 3 Einträge wie im Beispiel erhalte, möchte ich, dass das Trailing zusammen startet und zusammen arbeitet.
Ein Beispiel
1 Einstieg bei 1,50
2Eintrag bei 1.4950
3 Einträge bei 1,4930
das Trailing beträgt 50 Punkte, aber ich möchte, dass es bei 1.5050 beginnt, nicht vorher, wenn ich normales Trailing verwende, wenn der Preis 1.5001 erreicht, beginnt der zweite Eintrag (wenn er gefüllt ist) zu trailen, aber das möchte ich nicht... ich möchte, dass das Trailing mit 50 Pip beginnt und alle zum gleichen Preis, also bei 1.5050
Ist es also besser, das Ticket zu speichern, um zu wissen, welche Order ich verwenden soll?
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);
LastClosedBar = Time[0];
RefreshRates();
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
entratalong= OrderOpenPrice( );
ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //
ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //
[/CODE]
Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!
[CODE]
int TrailStop ()
{
int cnt,result,total=OrdersTotal();
double gain2=Lots_2ingresso;
double gain3=Lots_2ingresso;
int ticket,ticket2,ticket3;
for(cnt = total-1; cnt >= 0; cnt--)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))
{
if (OrderType()==OP_BUY && OrderTicket()==ticket )
{
if(Bid - OrderOpenPrice() > Point * TrailingStop )
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
for(cnt = total-1; cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )
result =OrderDelete(OrderTicket());
}
Alert("sta facendo trail");
}
}
}
// trailing 2 parte X pip dopo
if (OrderType()==OP_BUY && OrderTicket()==ticket2)
{
if(Bid - OrderOpenPrice() > Point * Trailing2)
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
}
}
}
// trailing 3 parte X pip dopo
if (OrderType()==OP_BUY )
{
if(Bid - OrderOpenPrice() > Point * Trailing3)
{
if(OrderStopLoss() < Bid - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
}
}
}// fine trailing
Bitte ändern Sie diesen Code EMA
Dies ist ein ausgezeichneter Code von: Coders Guru. Kann ihn bitte jemand für mich ändern. Ich brauche es, um nur CLOSE die offenen Trades. Ich habe ein System erstellt, das mir sagt, wann ich ein Geschäft eröffnen soll, und ich möchte nicht den ganzen Tag am Computer sitzen
um Handelsgeschäfte zu schließen. Danke Team.
Bitte ändern Sie den Code
Dies ist ein ausgezeichneter Code von: Coders Guru. Kann ihn bitte jemand für mich ändern. Ich brauche es, um nur die offenen Trades zu schließen. Ich habe ein System entwickelt, das mir sagt, wann ich ein Geschäft eröffnen soll, und ich möchte nicht den ganzen Tag am Computer sitzen, um Geschäfte zu schließen. Danke Team.
//+------------------------------------------------------------------+
//| EMA_6_12.mq4 |
//| Coders Guru |
//| Forex TSD| Metatrader Indikatoren und Experten Advisors |
//+------------------------------------------------------------------+
#property copyright "Coders Guru"
#property link "https://www.forex-tsd.com"
//---- Includes
#include
//---- Handelsgrenzen
extern double TrailingStop = 40;
extern double TakeProfit = 1000; //beliebig große Zahl
extern double Lots = 1;
extern int Slippage = 5;
//--- Externe Optionen
extern int AktuellerBalken = 1;
extern bool UseClose = true;
//--- Einstellungen der Indikatoren
extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */
extern int ShortEma = 4;
extern int LongEma = 8;
//--- Globale Variablen
int MagischeZahl = 123430;
string Expertenkommentar = "EMA_4_8";
bool LimitPairs = false;
bool LimitFrame = false;
int TimeFrame = 60;
string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // Hinzufügen/Entfernen der zu begrenzenden Paare.
bool Optimieren = false;
int NumberOfTries = 5;
//+------------------------------------------------------------------
int init()
{
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------
bool isNewSymbol(string aktuelles_symbol)
{
//Schleife durch alle geöffneten Aufträge und Vergleich der Symbole
int total = OrdersTotal();
for(int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
string selected_symbol = OrderSymbol();
if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)
return (False);
}
return (True);
}
//+------------------------------------------------------------------
int Gekreuzt()
{
double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);
double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar);
double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);
double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar);
if (EmaShortPreviousEmaLongCurrent ) return (1); //Aufwärtstrend
if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //Abwärtstrend
return (0); //anderswo
}
//+------------------------------------------------------------------+
int start()
{
int cnt, ticket, total,n;
double trend ;
if(Bars<100) {Print("bars less than 100"); return(0);}
if(LimitFrame)
{
if(Period()!=TimeFrame) {Print("Dieser EA funktioniert nicht mit diesem TimeFrame!"); return(0);}
}
if(LimitPairs)
{
if(AllowedPair(Symbol()) == false) {Drucke("Dieser EA funktioniert nicht mit dieser Währung!"); return(0);}
}
//--- Handelsbedingungen
bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;
if (Gekreuzt() == 1 )
BuyCondition = falsch;
wenn (Gekreuzt ()== 2 )
SellCondition = false;
wenn (Gekreuzt ()== 1)
CloseBuyCondition = wahr;
wenn (Gekreuzt ()== 1)
CloseSellCondition = wahr;
total = OrdersTotal();
if(total < 1 || isNewSymbol(Symbol()))
{
if(BuyCondition) //<-- BUY condition
{
ticket = OpenOrder(OP_BUY); //<-- BUY-Order öffnen
CheckError(ticket, "BUY");
return(0);
}
if(SellCondition) //<-- SELL Bedingung
{
ticket = OpenOrder(OP_SELL); //<-- SELL-Order öffnen
CheckError(ticket, "SELL");
return(0);
}
return(0);
}
for(cnt=0;cnt<gesamtzahl;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) //<-- Long-Position wird eröffnet
{
if(UseClose)
{
if(CloseBuyCondition) //<-- Schließen Sie die Order und steigen Sie aus!
{
CloseOrder(OrderType()); return(0);
}
}
TrailOrder(OrderType()); return(0); //<-- Die Order nachverfolgen
}
if(OrderType()==OP_SELL) //<-- Auf Short-Position gehen
{
if(UseClose)
{
if(CloseSellCondition) //<-- Die Order schließen und aussteigen!
{
CloseOrder(OP_SELL); return(0);
}
}
TrailOrder(OrderType()); return(0); //<-- Die Order nachverfolgen
}
}
}
return(0);
}
//+------------------------------------------------------------------+
int OpenOrder(int type)
{
int ticket=0;
int err=0;
int c = 0;
if(typ==OP_BUY)
{
for(c = 0 ; c < NumberOfTries ; c++)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green);
err=GetLastError();
if(err==0)
{
break;
}
sonst
{
if(err==4 || err==137 ||err==146 || err==136) //Busy-Fehler
{
Sleep(5000);
weiter;
}
sonst //normaler Fehler
{
break;
}
}
}
}
if(type==OP_SELL)
{
for(c = 0 ; c < NumberOfTries ; c++)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red);
err=GetLastError();
if(err==0)
{
break;
}
sonst
{
if(err==4 || err==137 ||err==146 || err==136) //Busy-Fehler
{
Sleep(5000);
weiter;
}
sonst //normaler Fehler
{
break;
}
}
}
}
return(ticket);
}
bool CloseOrder(int type)
{
if(OrderMagicNumber() == MagicNumber)
{
if(type==OP_BUY)
return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet));
if(type==OP_SELL)
return (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet));
}
}
void TrailOrder(int type)
{
if(NachlaufenderStop>0){
if(OrderMagicNumber() == MagicNumber)
{
if(type==OP_BUY)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
if(type==OP_SELL)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
void CheckError(int ticket, string Type)
{
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Typ + " Auftrag eröffnet : ",OrderOpenPrice());
}
else Print("Fehler beim Öffnen von " + Type + " order : ", ErrorDescription(GetLastError()));
}
bool AllowedPair(string pair)
{
bool Ergebnis=false;
for (int n = 0 ; n < ArraySize(LP); n++)
{
if(Symbol() == LP[n])
{
Ergebnis = true;
}
}
return (Ergebnis);
}